Skip to content

Commit 7f38e85

Browse files
committed
Moved some imports.
Fixed circular import between utils.py and completion.py.
1 parent 6e444f4 commit 7f38e85

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

cmd2/cmd2.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
TYPE_CHECKING,
6363
Any,
6464
TextIO,
65+
TypeAlias,
6566
TypeVar,
6667
Union,
6768
cast,
@@ -198,6 +199,13 @@ def __init__(self, msg: str = '') -> None:
198199
suggest_similar,
199200
)
200201

202+
if TYPE_CHECKING: # pragma: no cover
203+
StaticArgParseBuilder = staticmethod[[], argparse.ArgumentParser]
204+
ClassArgParseBuilder = classmethod['Cmd' | CommandSet, [], argparse.ArgumentParser]
205+
else:
206+
StaticArgParseBuilder = staticmethod
207+
ClassArgParseBuilder = classmethod
208+
201209

202210
class _SavedCmd2Env:
203211
"""cmd2 environment settings that are backed up when entering an interactive Python shell."""
@@ -211,14 +219,6 @@ def __init__(self) -> None:
211219
DisabledCommand = namedtuple('DisabledCommand', ['command_function', 'help_function', 'completer_function']) # noqa: PYI024
212220

213221

214-
if TYPE_CHECKING: # pragma: no cover
215-
StaticArgParseBuilder = staticmethod[[], argparse.ArgumentParser]
216-
ClassArgParseBuilder = classmethod['Cmd' | CommandSet, [], argparse.ArgumentParser]
217-
else:
218-
StaticArgParseBuilder = staticmethod
219-
ClassArgParseBuilder = classmethod
220-
221-
222222
class _CommandParsers:
223223
"""Create and store all command method argument parsers for a given Cmd instance.
224224

@@ -2195,8 +2195,8 @@ def _determine_ap_completer_type(parser: argparse.ArgumentParser) -> type[argpar
21952195
:param parser: the parser to examine
21962196
:return: type of ArgparseCompleter
21972197
"""
2198-
Completer = type[argparse_completer.ArgparseCompleter] | None # noqa: N806
2199-
completer_type: Completer = parser.get_ap_completer_type() # type: ignore[attr-defined]
2198+
APCompleterType: TypeAlias = type[argparse_completer.ArgparseCompleter] | None
2199+
completer_type: APCompleterType = parser.get_ap_completer_type() # type: ignore[attr-defined]
22002200

22012201
if completer_type is None:
22022202
completer_type = argparse_completer.DEFAULT_AP_COMPLETER

cmd2/completion.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
from rich.protocol import is_renderable
2929

3030
from . import rich_utils as ru
31-
from . import utils
3231

3332
# Regular expression to identify strings which we should sort numerically
3433
NUMERIC_RE = re.compile(
@@ -143,6 +142,8 @@ class CompletionResultsBase:
143142

144143
def __post_init__(self) -> None:
145144
"""Finalize the object after initialization."""
145+
from . import utils
146+
146147
unique_items = utils.remove_duplicates(self.items)
147148
if not self.is_sorted:
148149
if all_display_numeric(unique_items):

cmd2/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
from . import constants
3030
from . import string_utils as su
31-
from .completion import Choices
3231
from .types import (
3332
ChoicesProviderUnbound,
3433
CmdOrSet,
@@ -114,6 +113,7 @@ def __init__(
114113
:param completer: completion function that provides choices for this argument
115114
"""
116115
if val_type is bool:
116+
from .completion import Choices
117117

118118
def get_bool_choices(_cmd2_self: CmdOrSet) -> Choices:
119119
"""Tab complete lowercase boolean values."""

0 commit comments

Comments
 (0)