@@ -77,23 +77,36 @@ class Command(TyperCommand):
77
77
Commands with multiple subcommands can be defined:
78
78
79
79
``` python
80
- import typing as t
81
- from django.utils.translation import gettext_lazy as _
82
- from typer import Argument
83
- from django_typer import TyperCommand, command
80
+ import typing as t
84
81
85
- class Command (TyperCommand ):
86
- @command ()
87
- def create (self , name : t.Annotated[str , Argument(help = _(" The name of the object to create." ))]):
88
- """
89
- Create an object.
90
- """
82
+ from django.utils.translation import gettext_lazy as _
83
+ from typer import Argument
84
+
85
+ from django_typer import TyperCommand, command
86
+
87
+
88
+ class Command (TyperCommand ):
89
+ """
90
+ A command that defines subcommands.
91
+ """
92
+
93
+ @command ()
94
+ def create (
95
+ self ,
96
+ name : t.Annotated[str , Argument(help = _(" The name of the object to create." ))],
97
+ ):
98
+ """
99
+ Create an object.
100
+ """
101
+
102
+ @command ()
103
+ def delete (
104
+ self , id : t.Annotated[int , Argument(help = _(" The id of the object to delete." ))]
105
+ ):
106
+ """
107
+ Delete an object.
108
+ """
91
109
92
- @command ()
93
- def delete (self , id : t.Annotated[int , Argument(help = _(" The id of the object to delete." ))]):
94
- """
95
- Delete an object.
96
- """
97
110
```
98
111
99
112
![ Multiple Subcommands Example] ( https://raw.githubusercontent.com/bckohan/django-typer/main/django_typer/examples/helps/multi.svg )
@@ -110,29 +123,53 @@ More complex groups and subcommand hierarchies can be defined. For example, this
110
123
```
111
124
112
125
``` python
113
- import typing as t
114
- from functools import reduce
115
- from django.utils.translation import gettext_lazy as _
116
- from typer import Argument, Option
117
- from django_typer import TyperCommand, group
118
-
119
- class Command (TyperCommand ):
120
- @group (help = _(" Do some math at the given precision." ))
121
- def math (self , precision : t.Annotated[int , Option(help = _(" The number of decimal places to output." ))] = 2 ):
122
- self .precision = precision
126
+ import typing as t
127
+ from functools import reduce
128
+
129
+ from django.utils.translation import gettext_lazy as _
130
+ from typer import Argument, Option
131
+
132
+ from django_typer import TyperCommand, group
133
+
134
+
135
+ class Command (TyperCommand ):
136
+
137
+ help = _(" A more complex command that defines a hierarchy of subcommands." )
138
+
139
+ precision = 2
140
+
141
+ @group (help = _(" Do some math at the given precision." ))
142
+ def math (
143
+ self ,
144
+ precision : t.Annotated[
145
+ int , Option(help = _(" The number of decimal places to output." ))
146
+ ] = precision,
147
+ ):
148
+ self .precision = precision
149
+
150
+ @math.command (help = _(" Multiply the given numbers." ))
151
+ def multiply (
152
+ self ,
153
+ numbers : t.Annotated[
154
+ t.List[float ], Argument(help = _(" The numbers to multiply" ))
155
+ ],
156
+ ):
157
+ return f " { reduce (lambda x , y : x * y, [1 , * numbers]): .{ self .precision} f } "
158
+
159
+ @math.command ()
160
+ def divide (
161
+ self ,
162
+ numerator : t.Annotated[float , Argument(help = _(" The numerator" ))],
163
+ denominator : t.Annotated[float , Argument(help = _(" The denominator" ))],
164
+ floor : t.Annotated[bool , Option(help = _(" Use floor division" ))] = False ,
165
+ ):
166
+ """
167
+ Divide the given numbers.
168
+ """
169
+ if floor:
170
+ return str (numerator // denominator)
171
+ return f " { numerator / denominator: .{ self .precision} f } "
123
172
124
- @math.command (help = _(" Multiply the given numbers." ))
125
- def multiply (self , numbers : t.Annotated[t.List[float ], Argument(help = _(" The numbers to multiply" ))]):
126
- return f " { reduce (lambda x , y : x * y, [1 , * numbers]): .{ self .precision} f } "
127
-
128
- @math.command ()
129
- def divide (self , numerator : float , denominator : float , floor : bool = False ):
130
- """
131
- Divide the given numbers.
132
- """
133
- if floor:
134
- return str (numerator // denominator)
135
- return f " { numerator / denominator: .{ self .precision} f } "
136
173
```
137
174
138
175
![ Grouping and Hierarchies Example] ( https://raw.githubusercontent.com/bckohan/django-typer/main/django_typer/examples/helps/hierarchy.svg )
0 commit comments