falyx 0.1.40__py3-none-any.whl → 0.1.42__py3-none-any.whl
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.
- falyx/__main__.py +27 -33
- falyx/command.py +10 -0
- falyx/config.py +12 -0
- falyx/falyx.py +70 -9
- falyx/init.py +1 -1
- falyx/parsers/argparse.py +38 -15
- falyx/parsers/parsers.py +28 -3
- falyx/version.py +1 -1
- {falyx-0.1.40.dist-info → falyx-0.1.42.dist-info}/METADATA +1 -1
- {falyx-0.1.40.dist-info → falyx-0.1.42.dist-info}/RECORD +13 -13
- {falyx-0.1.40.dist-info → falyx-0.1.42.dist-info}/LICENSE +0 -0
- {falyx-0.1.40.dist-info → falyx-0.1.42.dist-info}/WHEEL +0 -0
- {falyx-0.1.40.dist-info → falyx-0.1.42.dist-info}/entry_points.txt +0 -0
falyx/__main__.py
CHANGED
@@ -8,13 +8,12 @@ Licensed under the MIT License. See LICENSE file for details.
|
|
8
8
|
import asyncio
|
9
9
|
import os
|
10
10
|
import sys
|
11
|
-
from argparse import Namespace
|
12
11
|
from pathlib import Path
|
13
12
|
from typing import Any
|
14
13
|
|
15
14
|
from falyx.config import loader
|
16
15
|
from falyx.falyx import Falyx
|
17
|
-
from falyx.parsers import
|
16
|
+
from falyx.parsers import CommandArgumentParser
|
18
17
|
|
19
18
|
|
20
19
|
def find_falyx_config() -> Path | None:
|
@@ -39,45 +38,40 @@ def bootstrap() -> Path | None:
|
|
39
38
|
return config_path
|
40
39
|
|
41
40
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
def init_config(parser: CommandArgumentParser) -> None:
|
42
|
+
parser.add_argument(
|
43
|
+
"name",
|
44
|
+
type=str,
|
45
|
+
help="Name of the new Falyx project",
|
46
|
+
default=".",
|
47
|
+
nargs="?",
|
46
48
|
)
|
47
|
-
init_parser.add_argument("name", nargs="?", default=".", help="Project directory")
|
48
|
-
falyx_parsers.subparsers.add_parser(
|
49
|
-
"init-global", help="Set up ~/.config/falyx with example tasks"
|
50
|
-
)
|
51
|
-
return falyx_parsers
|
52
|
-
|
53
|
-
|
54
|
-
def run(args: Namespace) -> Any:
|
55
|
-
if args.command == "init":
|
56
|
-
from falyx.init import init_project
|
57
|
-
|
58
|
-
init_project(args.name)
|
59
|
-
return
|
60
49
|
|
61
|
-
if args.command == "init-global":
|
62
|
-
from falyx.init import init_global
|
63
|
-
|
64
|
-
init_global()
|
65
|
-
return
|
66
50
|
|
51
|
+
def main() -> Any:
|
67
52
|
bootstrap_path = bootstrap()
|
68
53
|
if not bootstrap_path:
|
69
|
-
|
70
|
-
|
54
|
+
from falyx.init import init_global, init_project
|
55
|
+
|
56
|
+
flx: Falyx = Falyx()
|
57
|
+
flx.add_command(
|
58
|
+
"I",
|
59
|
+
"Initialize a new Falyx project",
|
60
|
+
init_project,
|
61
|
+
aliases=["init"],
|
62
|
+
argument_config=init_config,
|
63
|
+
)
|
64
|
+
flx.add_command(
|
65
|
+
"G",
|
66
|
+
"Initialize Falyx global configuration",
|
67
|
+
init_global,
|
68
|
+
aliases=["init-global"],
|
69
|
+
)
|
70
|
+
else:
|
71
|
+
flx = loader(bootstrap_path)
|
71
72
|
|
72
|
-
flx: Falyx = loader(bootstrap_path)
|
73
73
|
return asyncio.run(flx.run())
|
74
74
|
|
75
75
|
|
76
|
-
def main():
|
77
|
-
parsers = get_falyx_parsers()
|
78
|
-
args = parsers.parse_args()
|
79
|
-
run(args)
|
80
|
-
|
81
|
-
|
82
76
|
if __name__ == "__main__":
|
83
77
|
main()
|
falyx/command.py
CHANGED
@@ -307,6 +307,16 @@ class Command(BaseModel):
|
|
307
307
|
|
308
308
|
return FormattedText(prompt)
|
309
309
|
|
310
|
+
@property
|
311
|
+
def usage(self) -> str:
|
312
|
+
"""Generate a help string for the command arguments."""
|
313
|
+
if not self.arg_parser:
|
314
|
+
return "No arguments defined."
|
315
|
+
|
316
|
+
command_keys_text = self.arg_parser.get_command_keys_text(plain_text=True)
|
317
|
+
options_text = self.arg_parser.get_options_text(plain_text=True)
|
318
|
+
return f" {command_keys_text:<20} {options_text} "
|
319
|
+
|
310
320
|
def log_summary(self) -> None:
|
311
321
|
if self._context:
|
312
322
|
self._context.log_summary()
|
falyx/config.py
CHANGED
@@ -18,6 +18,7 @@ from falyx.action.base import BaseAction
|
|
18
18
|
from falyx.command import Command
|
19
19
|
from falyx.falyx import Falyx
|
20
20
|
from falyx.logger import logger
|
21
|
+
from falyx.parsers import CommandArgumentParser
|
21
22
|
from falyx.retry import RetryPolicy
|
22
23
|
from falyx.themes import OneColors
|
23
24
|
|
@@ -101,6 +102,7 @@ class RawCommand(BaseModel):
|
|
101
102
|
retry_policy: RetryPolicy = Field(default_factory=RetryPolicy)
|
102
103
|
hidden: bool = False
|
103
104
|
help_text: str = ""
|
105
|
+
help_epilogue: str = ""
|
104
106
|
|
105
107
|
@field_validator("retry_policy")
|
106
108
|
@classmethod
|
@@ -116,6 +118,14 @@ def convert_commands(raw_commands: list[dict[str, Any]]) -> list[Command]:
|
|
116
118
|
commands = []
|
117
119
|
for entry in raw_commands:
|
118
120
|
raw_command = RawCommand(**entry)
|
121
|
+
parser = CommandArgumentParser(
|
122
|
+
command_key=raw_command.key,
|
123
|
+
command_description=raw_command.description,
|
124
|
+
command_style=raw_command.style,
|
125
|
+
help_text=raw_command.help_text,
|
126
|
+
help_epilogue=raw_command.help_epilogue,
|
127
|
+
aliases=raw_command.aliases,
|
128
|
+
)
|
119
129
|
commands.append(
|
120
130
|
Command.model_validate(
|
121
131
|
{
|
@@ -123,9 +133,11 @@ def convert_commands(raw_commands: list[dict[str, Any]]) -> list[Command]:
|
|
123
133
|
"action": wrap_if_needed(
|
124
134
|
import_action(raw_command.action), name=raw_command.description
|
125
135
|
),
|
136
|
+
"arg_parser": parser,
|
126
137
|
}
|
127
138
|
)
|
128
139
|
)
|
140
|
+
|
129
141
|
return commands
|
130
142
|
|
131
143
|
|
falyx/falyx.py
CHANGED
@@ -59,7 +59,7 @@ from falyx.execution_registry import ExecutionRegistry as er
|
|
59
59
|
from falyx.hook_manager import Hook, HookManager, HookType
|
60
60
|
from falyx.logger import logger
|
61
61
|
from falyx.options_manager import OptionsManager
|
62
|
-
from falyx.parsers import CommandArgumentParser, get_arg_parsers
|
62
|
+
from falyx.parsers import CommandArgumentParser, FalyxParsers, get_arg_parsers
|
63
63
|
from falyx.protocols import ArgParserProtocol
|
64
64
|
from falyx.retry import RetryPolicy
|
65
65
|
from falyx.signals import BackSignal, CancelSignal, HelpSignal, QuitSignal
|
@@ -152,6 +152,11 @@ class Falyx:
|
|
152
152
|
self,
|
153
153
|
title: str | Markdown = "Menu",
|
154
154
|
*,
|
155
|
+
program: str | None = "falyx",
|
156
|
+
usage: str | None = None,
|
157
|
+
description: str | None = "Falyx CLI - Run structured async command workflows.",
|
158
|
+
epilog: str | None = None,
|
159
|
+
version: str = __version__,
|
155
160
|
prompt: str | AnyFormattedText = "> ",
|
156
161
|
columns: int = 3,
|
157
162
|
bottom_bar: BottomBar | str | Callable[[], Any] | None = None,
|
@@ -170,6 +175,11 @@ class Falyx:
|
|
170
175
|
) -> None:
|
171
176
|
"""Initializes the Falyx object."""
|
172
177
|
self.title: str | Markdown = title
|
178
|
+
self.program: str | None = program
|
179
|
+
self.usage: str | None = usage
|
180
|
+
self.description: str | None = description
|
181
|
+
self.epilog: str | None = epilog
|
182
|
+
self.version: str = version
|
173
183
|
self.prompt: str | AnyFormattedText = prompt
|
174
184
|
self.columns: int = columns
|
175
185
|
self.commands: dict[str, Command] = CaseInsensitiveDict()
|
@@ -820,10 +830,11 @@ class Falyx:
|
|
820
830
|
self.console.print(
|
821
831
|
f"[{OneColors.LIGHT_YELLOW}]⚠️ Unknown command '{choice}'[/]"
|
822
832
|
)
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
833
|
+
else:
|
834
|
+
raise ValidationError(
|
835
|
+
message=f"Unknown command '{choice}'.",
|
836
|
+
cursor_position=len(raw_choices),
|
837
|
+
)
|
827
838
|
return is_preview, None, args, kwargs
|
828
839
|
|
829
840
|
def _create_context(self, selected_command: Command) -> ExecutionContext:
|
@@ -1015,12 +1026,35 @@ class Falyx:
|
|
1015
1026
|
if self.exit_message:
|
1016
1027
|
self.print_message(self.exit_message)
|
1017
1028
|
|
1018
|
-
async def run(
|
1029
|
+
async def run(
|
1030
|
+
self,
|
1031
|
+
falyx_parsers: FalyxParsers | None = None,
|
1032
|
+
callback: Callable[..., Any] | None = None,
|
1033
|
+
) -> None:
|
1019
1034
|
"""Run Falyx CLI with structured subcommands."""
|
1020
|
-
if
|
1021
|
-
|
1035
|
+
if self.cli_args:
|
1036
|
+
raise FalyxError(
|
1037
|
+
"Run is incompatible with CLI arguments. Use 'run_key' instead."
|
1038
|
+
)
|
1039
|
+
if falyx_parsers:
|
1040
|
+
if not isinstance(falyx_parsers, FalyxParsers):
|
1041
|
+
raise FalyxError("falyx_parsers must be an instance of FalyxParsers.")
|
1042
|
+
else:
|
1043
|
+
falyx_parsers = get_arg_parsers(
|
1044
|
+
self.program,
|
1045
|
+
self.usage,
|
1046
|
+
self.description,
|
1047
|
+
self.epilog,
|
1048
|
+
commands=self.commands,
|
1049
|
+
)
|
1050
|
+
self.cli_args = falyx_parsers.parse_args()
|
1022
1051
|
self.options.from_namespace(self.cli_args, "cli_args")
|
1023
1052
|
|
1053
|
+
if callback:
|
1054
|
+
if not callable(callback):
|
1055
|
+
raise FalyxError("Callback must be a callable function.")
|
1056
|
+
callback(self.cli_args)
|
1057
|
+
|
1024
1058
|
if not self.options.get("never_prompt"):
|
1025
1059
|
self.options.set("never_prompt", self._never_prompt)
|
1026
1060
|
|
@@ -1075,11 +1109,24 @@ class Falyx:
|
|
1075
1109
|
args, kwargs = await command.parse_args(self.cli_args.command_args)
|
1076
1110
|
except HelpSignal:
|
1077
1111
|
sys.exit(0)
|
1112
|
+
except CommandArgumentError as error:
|
1113
|
+
self.console.print(f"[{OneColors.DARK_RED}]❌ ['{command.key}'] {error}")
|
1114
|
+
command.show_help()
|
1115
|
+
sys.exit(1)
|
1078
1116
|
try:
|
1079
1117
|
await self.run_key(self.cli_args.name, args=args, kwargs=kwargs)
|
1080
1118
|
except FalyxError as error:
|
1081
1119
|
self.console.print(f"[{OneColors.DARK_RED}]❌ Error: {error}[/]")
|
1082
1120
|
sys.exit(1)
|
1121
|
+
except QuitSignal:
|
1122
|
+
logger.info("[QuitSignal]. <- Exiting run.")
|
1123
|
+
sys.exit(0)
|
1124
|
+
except BackSignal:
|
1125
|
+
logger.info("[BackSignal]. <- Exiting run.")
|
1126
|
+
sys.exit(0)
|
1127
|
+
except CancelSignal:
|
1128
|
+
logger.info("[CancelSignal]. <- Exiting run.")
|
1129
|
+
sys.exit(0)
|
1083
1130
|
|
1084
1131
|
if self.cli_args.summary:
|
1085
1132
|
er.summary()
|
@@ -1103,9 +1150,23 @@ class Falyx:
|
|
1103
1150
|
f"[{OneColors.CYAN_b}]🚀 Running all commands with tag:[/] "
|
1104
1151
|
f"{self.cli_args.tag}"
|
1105
1152
|
)
|
1153
|
+
|
1106
1154
|
for cmd in matching:
|
1107
1155
|
self._set_retry_policy(cmd)
|
1108
|
-
|
1156
|
+
try:
|
1157
|
+
await self.run_key(cmd.key)
|
1158
|
+
except FalyxError as error:
|
1159
|
+
self.console.print(f"[{OneColors.DARK_RED}]❌ Error: {error}[/]")
|
1160
|
+
sys.exit(1)
|
1161
|
+
except QuitSignal:
|
1162
|
+
logger.info("[QuitSignal]. <- Exiting run.")
|
1163
|
+
sys.exit(0)
|
1164
|
+
except BackSignal:
|
1165
|
+
logger.info("[BackSignal]. <- Exiting run.")
|
1166
|
+
sys.exit(0)
|
1167
|
+
except CancelSignal:
|
1168
|
+
logger.info("[CancelSignal]. <- Exiting run.")
|
1169
|
+
sys.exit(0)
|
1109
1170
|
|
1110
1171
|
if self.cli_args.summary:
|
1111
1172
|
er.summary()
|
falyx/init.py
CHANGED
falyx/parsers/argparse.py
CHANGED
@@ -168,6 +168,7 @@ class CommandArgumentParser:
|
|
168
168
|
self._arguments: list[Argument] = []
|
169
169
|
self._positional: dict[str, Argument] = {}
|
170
170
|
self._keyword: dict[str, Argument] = {}
|
171
|
+
self._keyword_list: list[Argument] = []
|
171
172
|
self._flag_map: dict[str, Argument] = {}
|
172
173
|
self._dest_set: set[str] = set()
|
173
174
|
self._add_help()
|
@@ -488,6 +489,8 @@ class CommandArgumentParser:
|
|
488
489
|
self._arguments.append(argument)
|
489
490
|
if positional:
|
490
491
|
self._positional[dest] = argument
|
492
|
+
else:
|
493
|
+
self._keyword_list.append(argument)
|
491
494
|
|
492
495
|
def get_argument(self, dest: str) -> Argument | None:
|
493
496
|
return next((a for a in self._arguments if a.dest == dest), None)
|
@@ -832,11 +835,11 @@ class CommandArgumentParser:
|
|
832
835
|
kwargs_dict[arg.dest] = parsed[arg.dest]
|
833
836
|
return tuple(args_list), kwargs_dict
|
834
837
|
|
835
|
-
def
|
838
|
+
def get_options_text(self, plain_text=False) -> str:
|
836
839
|
# Options
|
837
840
|
# Add all keyword arguments to the options list
|
838
841
|
options_list = []
|
839
|
-
for arg in self.
|
842
|
+
for arg in self._keyword_list:
|
840
843
|
choice_text = arg.get_choice_text()
|
841
844
|
if choice_text:
|
842
845
|
options_list.extend([f"[{arg.flags[0]} {choice_text}]"])
|
@@ -848,19 +851,39 @@ class CommandArgumentParser:
|
|
848
851
|
choice_text = arg.get_choice_text()
|
849
852
|
if isinstance(arg.nargs, int):
|
850
853
|
choice_text = " ".join([choice_text] * arg.nargs)
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
f"[{self.command_style}]{alias}[/{self.command_style}]"
|
858
|
-
for alias in self.aliases
|
859
|
-
]
|
860
|
-
)
|
854
|
+
if plain_text:
|
855
|
+
options_list.append(choice_text)
|
856
|
+
else:
|
857
|
+
options_list.append(escape(choice_text))
|
858
|
+
|
859
|
+
return " ".join(options_list)
|
861
860
|
|
862
|
-
|
863
|
-
|
861
|
+
def get_command_keys_text(self, plain_text=False) -> str:
|
862
|
+
if plain_text:
|
863
|
+
command_keys = " | ".join(
|
864
|
+
[f"{self.command_key}"] + [f"{alias}" for alias in self.aliases]
|
865
|
+
)
|
866
|
+
else:
|
867
|
+
command_keys = " | ".join(
|
868
|
+
[f"[{self.command_style}]{self.command_key}[/{self.command_style}]"]
|
869
|
+
+ [
|
870
|
+
f"[{self.command_style}]{alias}[/{self.command_style}]"
|
871
|
+
for alias in self.aliases
|
872
|
+
]
|
873
|
+
)
|
874
|
+
return command_keys
|
875
|
+
|
876
|
+
def get_usage(self, plain_text=False) -> str:
|
877
|
+
"""Get the usage text for the command."""
|
878
|
+
command_keys = self.get_command_keys_text(plain_text)
|
879
|
+
options_text = self.get_options_text(plain_text)
|
880
|
+
if options_text:
|
881
|
+
return f"{command_keys} {options_text}"
|
882
|
+
return command_keys
|
883
|
+
|
884
|
+
def render_help(self) -> None:
|
885
|
+
usage = self.get_usage()
|
886
|
+
self.console.print(f"[bold]usage: {usage}[/bold]\n")
|
864
887
|
|
865
888
|
# Description
|
866
889
|
if self.help_text:
|
@@ -877,7 +900,7 @@ class CommandArgumentParser:
|
|
877
900
|
arg_line.append(help_text)
|
878
901
|
self.console.print(arg_line)
|
879
902
|
self.console.print("[bold]options:[/bold]")
|
880
|
-
for arg in self.
|
903
|
+
for arg in self._keyword_list:
|
881
904
|
flags = ", ".join(arg.flags)
|
882
905
|
flags_choice = f"{flags} {arg.get_choice_text()}"
|
883
906
|
arg_line = Text(f" {flags_choice:<30} ")
|
falyx/parsers/parsers.py
CHANGED
@@ -2,10 +2,18 @@
|
|
2
2
|
"""parsers.py
|
3
3
|
This module contains the argument parsers used for the Falyx CLI.
|
4
4
|
"""
|
5
|
-
from argparse import
|
5
|
+
from argparse import (
|
6
|
+
REMAINDER,
|
7
|
+
ArgumentParser,
|
8
|
+
Namespace,
|
9
|
+
RawDescriptionHelpFormatter,
|
10
|
+
_SubParsersAction,
|
11
|
+
)
|
6
12
|
from dataclasses import asdict, dataclass
|
7
13
|
from typing import Any, Sequence
|
8
14
|
|
15
|
+
from falyx.command import Command
|
16
|
+
|
9
17
|
|
10
18
|
@dataclass
|
11
19
|
class FalyxParsers:
|
@@ -47,6 +55,7 @@ def get_arg_parsers(
|
|
47
55
|
add_help: bool = True,
|
48
56
|
allow_abbrev: bool = True,
|
49
57
|
exit_on_error: bool = True,
|
58
|
+
commands: dict[str, Command] | None = None,
|
50
59
|
) -> FalyxParsers:
|
51
60
|
"""Returns the argument parser for the CLI."""
|
52
61
|
parser = ArgumentParser(
|
@@ -79,8 +88,24 @@ def get_arg_parsers(
|
|
79
88
|
parser.add_argument("--version", action="store_true", help="Show Falyx version")
|
80
89
|
subparsers = parser.add_subparsers(dest="command")
|
81
90
|
|
82
|
-
|
83
|
-
|
91
|
+
run_description = ["Run a command by its key or alias.\n"]
|
92
|
+
run_description.append("commands:")
|
93
|
+
if isinstance(commands, dict):
|
94
|
+
for command in commands.values():
|
95
|
+
run_description.append(command.usage)
|
96
|
+
command_description = command.description or command.help_text
|
97
|
+
run_description.append(f"{' '*24}{command_description}")
|
98
|
+
run_epilog = (
|
99
|
+
"Tip: Use 'falyx run ?[COMMAND]' to preview commands by their key or alias."
|
100
|
+
)
|
101
|
+
run_parser = subparsers.add_parser(
|
102
|
+
"run",
|
103
|
+
help="Run a specific command",
|
104
|
+
description="\n".join(run_description),
|
105
|
+
epilog=run_epilog,
|
106
|
+
formatter_class=RawDescriptionHelpFormatter,
|
107
|
+
)
|
108
|
+
run_parser.add_argument("name", help="Run a command by its key or alias")
|
84
109
|
run_parser.add_argument(
|
85
110
|
"--summary",
|
86
111
|
action="store_true",
|
falyx/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.1.
|
1
|
+
__version__ = "0.1.42"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
falyx/.pytyped,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
falyx/__init__.py,sha256=Gh88lQ5pbD7xbGWrBgslE2kSTZKY9TkvKSa53rZ3l8U,305
|
3
|
-
falyx/__main__.py,sha256=
|
3
|
+
falyx/__main__.py,sha256=8abZbfytyFcSccyEZzlX3E2Krto1tVr1pRI_ep9KcUs,1911
|
4
4
|
falyx/action/.pytyped,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
falyx/action/__init__.py,sha256=4E3Rb0GgGcmggrPJh0YFiwbVgN_PQjIzL06-Z3qMReo,1247
|
6
6
|
falyx/action/action.py,sha256=w6xDbsB1SlMPSvpo2Dh0e11lRGP6a4E3K6AdfjlEqGY,5759
|
@@ -23,23 +23,23 @@ falyx/action/signal_action.py,sha256=5UMqvzy7fBnLANGwYUWoe1VRhrr7e-yOVeLdOnCBiJo
|
|
23
23
|
falyx/action/types.py,sha256=NfZz1ufZuvCgp-he2JIItbnjX7LjOUadjtKbjpRlSIY,1399
|
24
24
|
falyx/action/user_input_action.py,sha256=7kL5G7L0j2LuLvHu-CMwOaHyEisagE7O_2G2EhqWRr8,3483
|
25
25
|
falyx/bottom_bar.py,sha256=iWxgOKWgn5YmREeZBuGA50FzqzEfz1-Vnqm0V_fhldc,7383
|
26
|
-
falyx/command.py,sha256=
|
27
|
-
falyx/config.py,sha256=
|
26
|
+
falyx/command.py,sha256=JO_kPoEUFnW_0BMP7tvdjfj78uWUSfT3JAo-zOqouPM,15023
|
27
|
+
falyx/config.py,sha256=BBDRv5uj0teydBm25eTIvEl9hKQqGGGX-Z6H9EHOHHw,10077
|
28
28
|
falyx/context.py,sha256=NfBpxzFzn-dYP6I3wrtGFucqm__UZo4SSBLmM8yYayE,10330
|
29
29
|
falyx/debug.py,sha256=IRpYtdH8yeXJEsfP5rASALmBQb2U_EwrTudF2GIDdZY,1545
|
30
30
|
falyx/exceptions.py,sha256=kK9k1v7LVNjJSwYztRa9Krhr3ZOI-6Htq2ZjlYICPKg,922
|
31
31
|
falyx/execution_registry.py,sha256=rctsz0mrIHPToLZqylblVjDdKWdq1x_JBc8GwMP5sJ8,4710
|
32
|
-
falyx/falyx.py,sha256=
|
32
|
+
falyx/falyx.py,sha256=kMQWAd_uL8M5hkzRy7k1KgNe5wBzkWCyHvqwFjykvdI,47340
|
33
33
|
falyx/hook_manager.py,sha256=TFuHQnAncS_rk6vuw-VSx8bnAppLuHfrZCrzLwqcO9o,2979
|
34
34
|
falyx/hooks.py,sha256=xMfQROib0BNsaQF4AXJpmCiGePoE1f1xpcdibgnVZWM,2913
|
35
|
-
falyx/init.py,sha256=
|
35
|
+
falyx/init.py,sha256=VZ3rYMxo7g01EraYATdl_pRN4ZqrsVueo2ZFx54gojo,3326
|
36
36
|
falyx/logger.py,sha256=1Mfb_vJFJ1tQwziuyU2p-cSMi2Js8N2byniFEnI6vOQ,132
|
37
37
|
falyx/menu.py,sha256=E580qZsx08bnWcqRVjJuD2Fy8Zh_1zIexp5f0lC7L2c,3745
|
38
38
|
falyx/options_manager.py,sha256=dFAnQw543tQ6Xupvh1PwBrhiSWlSACHw8K-sHP_lUh4,2842
|
39
39
|
falyx/parsers/.pytyped,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
40
|
falyx/parsers/__init__.py,sha256=l0QMf89uJHhTpOqQfiV3tx7aAHvELqDFWAyjCbwEgBQ,370
|
41
|
-
falyx/parsers/argparse.py,sha256=
|
42
|
-
falyx/parsers/parsers.py,sha256=
|
41
|
+
falyx/parsers/argparse.py,sha256=WB8InZJ_WOaqi6J80IfnxInRyJ7aBCP0sv0zalo8al0,36924
|
42
|
+
falyx/parsers/parsers.py,sha256=RQdfK_347TeTMYWZ_7WqZxGaslC-fRZeuir4kdHjvFM,6527
|
43
43
|
falyx/parsers/signature.py,sha256=i4iOiJxv70sxQYivKKXC_YOsShRUYfcI8Cjq8yVZvMo,2262
|
44
44
|
falyx/parsers/utils.py,sha256=Z4qLu8NVIprcHK2RDXoISpcDKBUii3n05G9mlgiPDgw,889
|
45
45
|
falyx/prompt_utils.py,sha256=qgk0bXs7mwzflqzWyFhEOTpKQ_ZtMIqGhKeg-ocwNnE,1542
|
@@ -53,9 +53,9 @@ falyx/themes/__init__.py,sha256=1CZhEUCin9cUk8IGYBUFkVvdHRNNJBEFXccHwpUKZCA,284
|
|
53
53
|
falyx/themes/colors.py,sha256=4aaeAHJetmeNInI0Zytg4E3YqKfPFelpf04vtjSvsS8,19776
|
54
54
|
falyx/utils.py,sha256=U45xnZFUdoFC4xiji_9S1jHS5V7MvxSDtufP8EgB0SM,6732
|
55
55
|
falyx/validators.py,sha256=t5iyzVpY8tdC4rfhr4isEfWpD5gNTzjeX_Hbi_Uq6sA,1328
|
56
|
-
falyx/version.py,sha256=
|
57
|
-
falyx-0.1.
|
58
|
-
falyx-0.1.
|
59
|
-
falyx-0.1.
|
60
|
-
falyx-0.1.
|
61
|
-
falyx-0.1.
|
56
|
+
falyx/version.py,sha256=a0ON039K5sX117g1thh7kP35cYMBjBhhhU9A-PERuT0,23
|
57
|
+
falyx-0.1.42.dist-info/LICENSE,sha256=B0yqgaHuSdhN7T3OBmgQSiDTy8HqT5Oe_dLypRe4Ra4,1073
|
58
|
+
falyx-0.1.42.dist-info/METADATA,sha256=8L4CG1zpDFOwepLhP9oji_1UGmTkM24p6_QcHRQDY8c,5517
|
59
|
+
falyx-0.1.42.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
60
|
+
falyx-0.1.42.dist-info/entry_points.txt,sha256=j8owOSl2j1Ss8DtGMnKfgehKaolqnIPhVFHaUBLUnMs,45
|
61
|
+
falyx-0.1.42.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|