falyx 0.1.45__tar.gz → 0.1.46__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. {falyx-0.1.45 → falyx-0.1.46}/PKG-INFO +1 -1
  2. {falyx-0.1.45 → falyx-0.1.46}/falyx/__main__.py +1 -1
  3. {falyx-0.1.45 → falyx-0.1.46}/falyx/command.py +2 -2
  4. {falyx-0.1.45 → falyx-0.1.46}/falyx/config.py +1 -1
  5. {falyx-0.1.45 → falyx-0.1.46}/falyx/falyx.py +10 -3
  6. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/argparse.py +5 -5
  7. falyx-0.1.46/falyx/version.py +1 -0
  8. {falyx-0.1.45 → falyx-0.1.46}/pyproject.toml +1 -1
  9. falyx-0.1.45/falyx/version.py +0 -1
  10. {falyx-0.1.45 → falyx-0.1.46}/LICENSE +0 -0
  11. {falyx-0.1.45 → falyx-0.1.46}/README.md +0 -0
  12. {falyx-0.1.45 → falyx-0.1.46}/falyx/.pytyped +0 -0
  13. {falyx-0.1.45 → falyx-0.1.46}/falyx/__init__.py +0 -0
  14. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/.pytyped +0 -0
  15. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/__init__.py +0 -0
  16. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/action.py +0 -0
  17. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/action_factory.py +0 -0
  18. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/action_group.py +0 -0
  19. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/base.py +0 -0
  20. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/chained_action.py +0 -0
  21. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/fallback_action.py +0 -0
  22. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/http_action.py +0 -0
  23. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/io_action.py +0 -0
  24. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/literal_input_action.py +0 -0
  25. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/menu_action.py +0 -0
  26. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/mixins.py +0 -0
  27. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/process_action.py +0 -0
  28. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/process_pool_action.py +0 -0
  29. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/prompt_menu_action.py +0 -0
  30. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/select_file_action.py +0 -0
  31. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/selection_action.py +0 -0
  32. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/signal_action.py +0 -0
  33. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/types.py +0 -0
  34. {falyx-0.1.45 → falyx-0.1.46}/falyx/action/user_input_action.py +0 -0
  35. {falyx-0.1.45 → falyx-0.1.46}/falyx/bottom_bar.py +0 -0
  36. {falyx-0.1.45 → falyx-0.1.46}/falyx/context.py +0 -0
  37. {falyx-0.1.45 → falyx-0.1.46}/falyx/debug.py +0 -0
  38. {falyx-0.1.45 → falyx-0.1.46}/falyx/exceptions.py +0 -0
  39. {falyx-0.1.45 → falyx-0.1.46}/falyx/execution_registry.py +0 -0
  40. {falyx-0.1.45 → falyx-0.1.46}/falyx/hook_manager.py +0 -0
  41. {falyx-0.1.45 → falyx-0.1.46}/falyx/hooks.py +0 -0
  42. {falyx-0.1.45 → falyx-0.1.46}/falyx/init.py +0 -0
  43. {falyx-0.1.45 → falyx-0.1.46}/falyx/logger.py +0 -0
  44. {falyx-0.1.45 → falyx-0.1.46}/falyx/menu.py +0 -0
  45. {falyx-0.1.45 → falyx-0.1.46}/falyx/options_manager.py +0 -0
  46. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/.pytyped +0 -0
  47. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/__init__.py +0 -0
  48. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/parsers.py +0 -0
  49. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/signature.py +0 -0
  50. {falyx-0.1.45 → falyx-0.1.46}/falyx/parsers/utils.py +0 -0
  51. {falyx-0.1.45 → falyx-0.1.46}/falyx/prompt_utils.py +0 -0
  52. {falyx-0.1.45 → falyx-0.1.46}/falyx/protocols.py +0 -0
  53. {falyx-0.1.45 → falyx-0.1.46}/falyx/retry.py +0 -0
  54. {falyx-0.1.45 → falyx-0.1.46}/falyx/retry_utils.py +0 -0
  55. {falyx-0.1.45 → falyx-0.1.46}/falyx/selection.py +0 -0
  56. {falyx-0.1.45 → falyx-0.1.46}/falyx/signals.py +0 -0
  57. {falyx-0.1.45 → falyx-0.1.46}/falyx/tagged_table.py +0 -0
  58. {falyx-0.1.45 → falyx-0.1.46}/falyx/themes/__init__.py +0 -0
  59. {falyx-0.1.45 → falyx-0.1.46}/falyx/themes/colors.py +0 -0
  60. {falyx-0.1.45 → falyx-0.1.46}/falyx/utils.py +0 -0
  61. {falyx-0.1.45 → falyx-0.1.46}/falyx/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: falyx
3
- Version: 0.1.45
3
+ Version: 0.1.46
4
4
  Summary: Reliable and introspectable async CLI action framework.
5
5
  License: MIT
6
6
  Author: Roland Thomas Jr
@@ -97,7 +97,7 @@ def main() -> Any:
97
97
  init_project,
98
98
  aliases=["init"],
99
99
  argument_config=init_config,
100
- help_epilogue="If no name is provided, the current directory will be used.",
100
+ help_epilog="If no name is provided, the current directory will be used.",
101
101
  )
102
102
  flx.add_command(
103
103
  "G",
@@ -111,7 +111,7 @@ class Command(BaseModel):
111
111
  hidden: bool = False
112
112
  aliases: list[str] = Field(default_factory=list)
113
113
  help_text: str = ""
114
- help_epilogue: str = ""
114
+ help_epilog: str = ""
115
115
  style: str = OneColors.WHITE
116
116
  confirm: bool = False
117
117
  confirm_message: str = "Are you sure?"
@@ -233,7 +233,7 @@ class Command(BaseModel):
233
233
  command_description=self.description,
234
234
  command_style=self.style,
235
235
  help_text=self.help_text,
236
- help_epilogue=self.help_epilogue,
236
+ help_epilog=self.help_epilog,
237
237
  aliases=self.aliases,
238
238
  )
239
239
  for arg_def in self.get_argument_definitions():
@@ -102,7 +102,7 @@ class RawCommand(BaseModel):
102
102
  retry_policy: RetryPolicy = Field(default_factory=RetryPolicy)
103
103
  hidden: bool = False
104
104
  help_text: str = ""
105
- help_epilogue: str = ""
105
+ help_epilog: str = ""
106
106
 
107
107
  @field_validator("retry_policy")
108
108
  @classmethod
@@ -88,6 +88,11 @@ class CommandValidator(Validator):
88
88
 
89
89
  async def validate_async(self, document) -> None:
90
90
  text = document.text
91
+ if not text:
92
+ raise ValidationError(
93
+ message=self.error_message,
94
+ cursor_position=len(text),
95
+ )
91
96
  is_preview, choice, _, __ = await self.falyx.get_command(text, from_validate=True)
92
97
  if is_preview:
93
98
  return None
@@ -157,6 +162,7 @@ class Falyx:
157
162
  description: str | None = "Falyx CLI - Run structured async command workflows.",
158
163
  epilog: str | None = None,
159
164
  version: str = __version__,
165
+ version_style: str = OneColors.BLUE_b,
160
166
  prompt: str | AnyFormattedText = "> ",
161
167
  columns: int = 3,
162
168
  bottom_bar: BottomBar | str | Callable[[], Any] | None = None,
@@ -180,6 +186,7 @@ class Falyx:
180
186
  self.description: str | None = description
181
187
  self.epilog: str | None = epilog
182
188
  self.version: str = version
189
+ self.version_style: str = version_style
183
190
  self.prompt: str | AnyFormattedText = prompt
184
191
  self.columns: int = columns
185
192
  self.commands: dict[str, Command] = CaseInsensitiveDict()
@@ -615,7 +622,7 @@ class Falyx:
615
622
  hidden: bool = False,
616
623
  aliases: list[str] | None = None,
617
624
  help_text: str = "",
618
- help_epilogue: str = "",
625
+ help_epilog: str = "",
619
626
  style: str = OneColors.WHITE,
620
627
  confirm: bool = False,
621
628
  confirm_message: str = "Are you sure?",
@@ -664,7 +671,7 @@ class Falyx:
664
671
  hidden=hidden,
665
672
  aliases=aliases if aliases else [],
666
673
  help_text=help_text,
667
- help_epilogue=help_epilogue,
674
+ help_epilog=help_epilog,
668
675
  style=style,
669
676
  confirm=confirm,
670
677
  confirm_message=confirm_message,
@@ -1088,7 +1095,7 @@ class Falyx:
1088
1095
  sys.exit(0)
1089
1096
 
1090
1097
  if self.cli_args.command == "version" or self.cli_args.version:
1091
- self.console.print(f"[{OneColors.BLUE_b}]Falyx CLI v{__version__}[/]")
1098
+ self.console.print(f"[{self.version_style}]{self.program} v{__version__}[/]")
1092
1099
  sys.exit(0)
1093
1100
 
1094
1101
  if self.cli_args.command == "preview":
@@ -155,7 +155,7 @@ class CommandArgumentParser:
155
155
  command_description: str = "",
156
156
  command_style: str = "bold",
157
157
  help_text: str = "",
158
- help_epilogue: str = "",
158
+ help_epilog: str = "",
159
159
  aliases: list[str] | None = None,
160
160
  ) -> None:
161
161
  """Initialize the CommandArgumentParser."""
@@ -164,7 +164,7 @@ class CommandArgumentParser:
164
164
  self.command_description: str = command_description
165
165
  self.command_style: str = command_style
166
166
  self.help_text: str = help_text
167
- self.help_epilogue: str = help_epilogue
167
+ self.help_epilog: str = help_epilog
168
168
  self.aliases: list[str] = aliases or []
169
169
  self._arguments: list[Argument] = []
170
170
  self._positional: dict[str, Argument] = {}
@@ -917,9 +917,9 @@ class CommandArgumentParser:
917
917
  arg_line.append(help_text)
918
918
  self.console.print(arg_line)
919
919
 
920
- # Epilogue
921
- if self.help_epilogue:
922
- self.console.print("\n" + self.help_epilogue, style="dim")
920
+ # Epilog
921
+ if self.help_epilog:
922
+ self.console.print("\n" + self.help_epilog, style="dim")
923
923
 
924
924
  def __eq__(self, other: object) -> bool:
925
925
  if not isinstance(other, CommandArgumentParser):
@@ -0,0 +1 @@
1
+ __version__ = "0.1.46"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "falyx"
3
- version = "0.1.45"
3
+ version = "0.1.46"
4
4
  description = "Reliable and introspectable async CLI action framework."
5
5
  authors = ["Roland Thomas Jr <roland@rtj.dev>"]
6
6
  license = "MIT"
@@ -1 +0,0 @@
1
- __version__ = "0.1.45"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes