1- from typing import TYPE_CHECKING , Any , Sequence
1+ from typing import TYPE_CHECKING
22
33__version__ = "0.0.0"
44if TYPE_CHECKING :
55 import argparse
6- from typing import Sequence
6+ from typing import Any , Sequence
77
88INVALID = object ()
99
@@ -16,7 +16,7 @@ def __init__(self, *args: str, **kwargs):
1616 self .kwargs = kwargs
1717
1818 def _add (
19- self , name : str , type_ : type , argp : "argparse.ArgumentParser" , that : Any
19+ self , name : str , type_ : type , argp : "argparse.ArgumentParser" , that : " Any"
2020 ) -> None :
2121 """Add argument to parser."""
2222 args = []
@@ -94,7 +94,7 @@ def add_args(x: str) -> None:
9494 argp .add_argument (* args , ** kwargs )
9595
9696
97- def _arg_fields (inst : Any ) -> Any :
97+ def _arg_fields (inst : " Any" ) -> " Any" :
9898 for c in inst .__class__ .__mro__ :
9999 for k , v in tuple (c .__dict__ .items ()):
100100 if isinstance (v , Argument ):
@@ -117,7 +117,7 @@ def flag(*args: str, **kwargs) -> Argument:
117117class Main :
118118 """Base class for all CLI commands."""
119119
120- def __getattr__ (self , name : str ) -> Any :
120+ def __getattr__ (self , name : str ) -> " Any" :
121121 if not name .startswith ("_get_" ):
122122 f = getattr (self , f"_get_{ name } " , None )
123123 if f :
@@ -134,7 +134,11 @@ def __getattr__(self, name: str) -> Any:
134134 else :
135135 return m (name )
136136
137- def main (self , args : Sequence [str ] = None , argp : "argparse.ArgumentParser" = None ):
137+ def main (
138+ self ,
139+ args : "Sequence[str]|None" = None ,
140+ argp : "argparse.ArgumentParser|None" = None ,
141+ ):
138142 """Main entry point for the command."""
139143 if argp is None :
140144 argp = self .new_argparse ()
@@ -162,7 +166,7 @@ def add_arguments(self, argp: "argparse.ArgumentParser") -> None:
162166 v ._add (k , t , argp , self )
163167
164168 def parse_arguments (
165- self , argp : "argparse.ArgumentParser" , args : Sequence [str ]
169+ self , argp : "argparse.ArgumentParser" , args : " Sequence[str]|None"
166170 ) -> None :
167171 """Parse command line arguments."""
168172 sp = None
@@ -188,12 +192,12 @@ def parse_arguments(
188192 for k , v , t in _arg_fields (s ):
189193 if k in m :
190194 setattr (s , k , m [k ])
191- p = getattr (s , "_parent_arg" , None )
192- if p :
195+ q : "Main|None" = getattr (s , "_parent_arg" , None )
196+ if q :
193197 s .ready ()
194198 s .start ()
195199 s .done ()
196- s = p
200+ s = q
197201 else :
198202 argp .parse_args (args , self )
199203
@@ -209,6 +213,6 @@ def start(self) -> None:
209213 """Main command execution."""
210214 pass
211215
212- def sub_args (self ) -> Any :
216+ def sub_args (self ) -> " Any" :
213217 """Yield subcommands."""
214218 yield None , {}
0 commit comments