Fix completion bug, ensure_async callback
This commit is contained in:
		| @@ -86,7 +86,7 @@ class FalyxCompleter(Completer): | ||||
|             if not command.arg_parser: | ||||
|                 return | ||||
|             suggestions = command.arg_parser.suggest_next( | ||||
|                 parsed_args + ([stub] if stub else []) | ||||
|                 parsed_args + ([stub] if stub else []), cursor_at_end_of_token | ||||
|             ) | ||||
|             for suggestion in suggestions: | ||||
|                 if suggestion.startswith(stub): | ||||
|   | ||||
| @@ -64,7 +64,7 @@ from falyx.protocols import ArgParserProtocol | ||||
| from falyx.retry import RetryPolicy | ||||
| from falyx.signals import BackSignal, CancelSignal, HelpSignal, QuitSignal | ||||
| from falyx.themes import OneColors | ||||
| from falyx.utils import CaseInsensitiveDict, _noop, chunks | ||||
| from falyx.utils import CaseInsensitiveDict, _noop, chunks, ensure_async | ||||
| from falyx.version import __version__ | ||||
|  | ||||
|  | ||||
| @@ -1091,7 +1091,8 @@ class Falyx: | ||||
|         if callback: | ||||
|             if not callable(callback): | ||||
|                 raise FalyxError("Callback must be a callable function.") | ||||
|             callback(self.cli_args) | ||||
|             async_callback = ensure_async(callback) | ||||
|             await async_callback(self.cli_args) | ||||
|  | ||||
|         if not self.options.get("never_prompt"): | ||||
|             self.options.set("never_prompt", self._never_prompt) | ||||
|   | ||||
| @@ -1018,7 +1018,9 @@ class CommandArgumentParser: | ||||
|                 kwargs_dict[arg.dest] = parsed[arg.dest] | ||||
|         return tuple(args_list), kwargs_dict | ||||
|  | ||||
|     def suggest_next(self, args: list[str]) -> list[str]: | ||||
|     def suggest_next( | ||||
|         self, args: list[str], cursor_at_end_of_token: bool = False | ||||
|     ) -> list[str]: | ||||
|         """ | ||||
|         Suggest completions for the next argument based on current input. | ||||
|  | ||||
| @@ -1026,6 +1028,7 @@ class CommandArgumentParser: | ||||
|  | ||||
|         Args: | ||||
|             args (list[str]): Current partial argument tokens. | ||||
|             cursor_at_end_of_token (bool): True if space at end of args | ||||
|  | ||||
|         Returns: | ||||
|             list[str]: List of suggested completions. | ||||
| @@ -1096,6 +1099,7 @@ class CommandArgumentParser: | ||||
|                 and last not in arg.suggestions | ||||
|                 and not any(last.startswith(suggestion) for suggestion in arg.suggestions) | ||||
|                 and any(suggestion.startswith(last) for suggestion in arg.suggestions) | ||||
|                 and not cursor_at_end_of_token | ||||
|             ): | ||||
|                 suggestions.extend(arg.suggestions) | ||||
|             else: | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| __version__ = "0.1.67" | ||||
| __version__ = "0.1.68" | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| [tool.poetry] | ||||
| name = "falyx" | ||||
| version = "0.1.67" | ||||
| version = "0.1.68" | ||||
| description = "Reliable and introspectable async CLI action framework." | ||||
| authors = ["Roland Thomas Jr <roland@rtj.dev>"] | ||||
| license = "MIT" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user