6262 TYPE_CHECKING ,
6363 Any ,
6464 TextIO ,
65+ TypeAlias ,
6566 TypeVar ,
6667 Union ,
6768 cast ,
107108)
108109from .completion import (
109110 Choices ,
110- ChoicesProviderUnbound ,
111- CompleterBound ,
112- CompleterUnbound ,
113111 CompletionItem ,
114112 Completions ,
115- Matchable ,
116113)
117114from .constants import (
118115 CLASS_ATTR_DEFAULT_HELP_CATEGORY ,
121118 HELP_FUNC_PREFIX ,
122119)
123120from .decorators import (
124- CommandParent ,
125121 as_subcommand_to ,
126122 with_argparser ,
127123)
152148 RichPrintKwargs ,
153149)
154150from .styles import Cmd2Style
151+ from .types import (
152+ ChoicesProviderUnbound ,
153+ CmdOrSet ,
154+ CompleterBound ,
155+ CompleterUnbound ,
156+ )
155157
156158with contextlib .suppress (ImportError ):
157159 from IPython import start_ipython
@@ -196,6 +198,13 @@ def __init__(self, msg: str = '') -> None:
196198 suggest_similar ,
197199)
198200
201+ if TYPE_CHECKING : # pragma: no cover
202+ StaticArgParseBuilder = staticmethod [[], argparse .ArgumentParser ]
203+ ClassArgParseBuilder = classmethod ['Cmd' | CommandSet , [], argparse .ArgumentParser ]
204+ else :
205+ StaticArgParseBuilder = staticmethod
206+ ClassArgParseBuilder = classmethod
207+
199208
200209class _SavedCmd2Env :
201210 """cmd2 environment settings that are backed up when entering an interactive Python shell."""
@@ -209,14 +218,6 @@ def __init__(self) -> None:
209218DisabledCommand = namedtuple ('DisabledCommand' , ['command_function' , 'help_function' , 'completer_function' ]) # noqa: PYI024
210219
211220
212- if TYPE_CHECKING : # pragma: no cover
213- StaticArgParseBuilder = staticmethod [[], argparse .ArgumentParser ]
214- ClassArgParseBuilder = classmethod ['Cmd' | CommandSet , [], argparse .ArgumentParser ]
215- else :
216- StaticArgParseBuilder = staticmethod
217- ClassArgParseBuilder = classmethod
218-
219-
220221class _CommandParsers :
221222 """Create and store all command method argument parsers for a given Cmd instance.
222223
@@ -840,7 +841,7 @@ def register_command_set(self, cmdset: CommandSet) -> None:
840841
841842 def _build_parser (
842843 self ,
843- parent : CommandParent ,
844+ parent : CmdOrSet ,
844845 parser_builder : argparse .ArgumentParser
845846 | Callable [[], argparse .ArgumentParser ]
846847 | StaticArgParseBuilder
@@ -849,7 +850,7 @@ def _build_parser(
849850 ) -> argparse .ArgumentParser :
850851 """Build argument parser for a command/subcommand.
851852
852- :param parent: CommandParent object which owns the command using the parser.
853+ :param parent: object which owns the command using the parser.
853854 When parser_builder is a classmethod, this function passes
854855 parent's class to it.
855856 :param parser_builder: means used to build the parser
@@ -1821,7 +1822,7 @@ def basic_complete(
18211822 line : str , # noqa: ARG002
18221823 begidx : int , # noqa: ARG002
18231824 endidx : int , # noqa: ARG002
1824- match_against : Iterable [Matchable ],
1825+ match_against : Iterable [str | CompletionItem ],
18251826 * ,
18261827 sort : bool = True ,
18271828 ) -> Completions :
@@ -2193,8 +2194,8 @@ def _determine_ap_completer_type(parser: argparse.ArgumentParser) -> type[argpar
21932194 :param parser: the parser to examine
21942195 :return: type of ArgparseCompleter
21952196 """
2196- Completer = type [argparse_completer .ArgparseCompleter ] | None # noqa: N806
2197- completer_type : Completer = parser .get_ap_completer_type () # type: ignore[attr-defined]
2197+ APCompleterType : TypeAlias = type [argparse_completer .ArgparseCompleter ] | None
2198+ completer_type : APCompleterType = parser .get_ap_completer_type () # type: ignore[attr-defined]
21982199
21992200 if completer_type is None :
22002201 completer_type = argparse_completer .DEFAULT_AP_COMPLETER
@@ -3283,8 +3284,8 @@ def _resolve_completer(
32833284 self ,
32843285 preserve_quotes : bool = False ,
32853286 choices : Iterable [Any ] | None = None ,
3286- choices_provider : ChoicesProviderUnbound | None = None ,
3287- completer : CompleterUnbound | None = None ,
3287+ choices_provider : ChoicesProviderUnbound [ CmdOrSet ] | None = None ,
3288+ completer : CompleterUnbound [ CmdOrSet ] | None = None ,
32883289 parser : argparse .ArgumentParser | None = None ,
32893290 ) -> Completer :
32903291 """Determine the appropriate completer based on provided arguments."""
@@ -3315,8 +3316,8 @@ def read_input(
33153316 history : Sequence [str ] | None = None ,
33163317 preserve_quotes : bool = False ,
33173318 choices : Iterable [Any ] | None = None ,
3318- choices_provider : ChoicesProviderUnbound | None = None ,
3319- completer : CompleterUnbound | None = None ,
3319+ choices_provider : ChoicesProviderUnbound [ CmdOrSet ] | None = None ,
3320+ completer : CompleterUnbound [ CmdOrSet ] | None = None ,
33203321 parser : argparse .ArgumentParser | None = None ,
33213322 ) -> str :
33223323 """Read a line of input with optional completion and history.
0 commit comments