Skip to content

Commit ea128a7

Browse files
authored
Refactor completion API (#1575)
Overhauled the completion API to use encapsulation and better reflect how prompt-toolkit works.
1 parent 4482a79 commit ea128a7

32 files changed

+2355
-2440
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ shell, and the option for a persistent bottom bar that can display realtime stat
2727
`cmd2.Cmd.async_alert`
2828
- Removed `cmd2.Cmd.async_refresh_prompt` and `cmd2.Cmd.need_prompt_refresh` as they are no
2929
longer needed
30+
- `completer` functions must now return a `cmd2.Completions` object instead of `list[str]`.
31+
- `choices_provider` functions must now return a `cmd2.Choices` object instead of `list[str]`.
32+
- An argparse argument's `descriptive_headers` field is now called `table_header`.
33+
- `CompletionItem.descriptive_data` is now called `CompletionItem.table_row`.
34+
- `Cmd.default_sort_key` moved to `utils.DEFAULT_STR_SORT_KEY`.
35+
- Moved completion state data, which previously resided in `Cmd`, into other classes.
36+
1. `Cmd.matches_sorted` -> `Completions.is_sorted` and `Choices.is_sorted`
37+
1. `Cmd.completion_hint` -> `Completions.completion_hint`
38+
1. `Cmd.formatted_completions` -> `Completions.completion_table`
39+
1. `Cmd.matches_delimited` -> `Completions.is_delimited`
40+
1. `Cmd.allow_appended_space/allow_closing_quote` -> `Completions.allow_finalization`
3041
- Enhancements
3142
- New `cmd2.Cmd` parameters
3243
- **auto_suggest**: (boolean) if `True`, provide fish shell style auto-suggestions. These

cmd2/__init__.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from .argparse_custom import (
1616
Cmd2ArgumentParser,
1717
Cmd2AttributeWrapper,
18-
CompletionItem,
1918
register_argparse_argument_parameter,
2019
set_default_argument_parser_type,
2120
)
@@ -25,6 +24,11 @@
2524
CommandSet,
2625
with_default_category,
2726
)
27+
from .completion import (
28+
Choices,
29+
CompletionItem,
30+
Completions,
31+
)
2832
from .constants import (
2933
COMMAND_NAME,
3034
DEFAULT_SHORTCUTS,
@@ -52,6 +56,7 @@
5256
CustomCompletionSettings,
5357
Settable,
5458
categorize,
59+
set_default_str_sort_key,
5560
)
5661

5762
__all__: list[str] = [ # noqa: RUF022
@@ -60,7 +65,6 @@
6065
# Argparse Exports
6166
'Cmd2ArgumentParser',
6267
'Cmd2AttributeWrapper',
63-
'CompletionItem',
6468
'register_argparse_argument_parameter',
6569
'set_default_ap_completer_type',
6670
'set_default_argument_parser_type',
@@ -71,6 +75,10 @@
7175
'Statement',
7276
# Colors
7377
"Color",
78+
# Completion
79+
'Choices',
80+
'CompletionItem',
81+
'Completions',
7482
# Decorators
7583
'with_argument_list',
7684
'with_argparser',
@@ -98,4 +106,5 @@
98106
'CompletionMode',
99107
'CustomCompletionSettings',
100108
'Settable',
109+
'set_default_str_sort_key',
101110
]

0 commit comments

Comments
 (0)