From b44ee227fdc61f3277a085ad0f931c805465686f Mon Sep 17 00:00:00 2001 From: kolo Date: Tue, 8 Apr 2025 20:40:52 +0300 Subject: [PATCH] fix many bugs --- argenta/app/__init__.py | 2 +- argenta/app/models.py | 15 +++++++-------- argenta/command/__init__.py | 2 +- argenta/command/flag/__init__.py | 2 +- mock/mock_app/main.py | 4 +--- pyproject.toml | 2 +- ...st_system_handling_non_standard_behavior.py | 18 +++++++++--------- 7 files changed, 21 insertions(+), 24 deletions(-) diff --git a/argenta/app/__init__.py b/argenta/app/__init__.py index 1d023f9..b2876f6 100644 --- a/argenta/app/__init__.py +++ b/argenta/app/__init__.py @@ -1,3 +1,3 @@ __all__ = ["App"] -from .models import App +from argenta.app.models import App diff --git a/argenta/app/models.py b/argenta/app/models.py index 3357a94..a51527a 100644 --- a/argenta/app/models.py +++ b/argenta/app/models.py @@ -109,7 +109,7 @@ class AppPrinters(AppInit): self._print_func(self._dividing_line.get_full_line(max_length_line)) -class AppNonStandardHandlers(AppInit, AppPrinters): +class AppNonStandardHandlers(AppPrinters): def _is_exit_command(self, command: InputCommand): if command.get_trigger().lower() == self._exit_command.lower(): if self._ignore_command_register: @@ -163,7 +163,7 @@ class AppValidators(AppInit): raise NoRegisteredHandlersException(router.get_name()) -class AppSetups(AppInit): +class AppSetups(AppValidators, AppPrinters): def _setup_system_router(self): system_router.set_title(self._system_points_title) @@ -182,12 +182,7 @@ class AppSetups(AppInit): f'[bold red]\n{text2art(f'\n{self._farewell_message}\n', font='chanky')}[/bold red]\n' f'[red i]github.com/koloideal/Argenta[/red i] | [red bold i]made by kolo[/red bold i]\n') - - -class App(AppInit, AppSetters, - AppNonStandardHandlers, - AppValidators, AppSetups): - def start_polling(self) -> None: + def _pre_cycle_setup(self): self._setup_default_view() self._setup_system_router() self._validate_number_of_routers() @@ -201,6 +196,10 @@ class App(AppInit, AppSetters, if not self._repeat_command_groups_description: self._print_command_group_description() + +class App(AppSetters, AppNonStandardHandlers, AppSetups): + def start_polling(self) -> None: + self._pre_cycle_setup() while True: if self._repeat_command_groups_description: self._print_command_group_description() diff --git a/argenta/command/__init__.py b/argenta/command/__init__.py index 627a1d2..f399757 100644 --- a/argenta/command/__init__.py +++ b/argenta/command/__init__.py @@ -1,3 +1,3 @@ __all__ = ["Command"] -from .models import Command \ No newline at end of file +from argenta.command.models import Command \ No newline at end of file diff --git a/argenta/command/flag/__init__.py b/argenta/command/flag/__init__.py index 601772f..6c446fd 100644 --- a/argenta/command/flag/__init__.py +++ b/argenta/command/flag/__init__.py @@ -1,4 +1,4 @@ __all__ = ('InputFlags', 'InputFlag', 'Flag', 'Flags') -from .models import InputFlags, InputFlag, Flags, Flag +from argenta.command.flag.models import InputFlags, InputFlag, Flags, Flag diff --git a/mock/mock_app/main.py b/mock/mock_app/main.py index 7c8e254..b9966db 100644 --- a/mock/mock_app/main.py +++ b/mock/mock_app/main.py @@ -5,9 +5,7 @@ from argenta.app.defaults import PredeterminedMessages from argenta.app.dividing_line import DynamicDividingLine -app: App = App(dividing_line=DynamicDividingLine(), - initial_message='WordMath', - farewell_message='shiiiit') +app: App = App(dividing_line=DynamicDividingLine()) def main(): diff --git a/pyproject.toml b/pyproject.toml index 6911431..0871dc8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "argenta" -version = "0.4.9" +version = "0.4.10" description = "Python library for creating TUI" authors = [ {name = "kolo", email = "kolo.is.main@gmail.com"} diff --git a/tests/system_tests/test_system_handling_non_standard_behavior.py b/tests/system_tests/test_system_handling_non_standard_behavior.py index 07cc89e..6610d97 100644 --- a/tests/system_tests/test_system_handling_non_standard_behavior.py +++ b/tests/system_tests/test_system_handling_non_standard_behavior.py @@ -24,7 +24,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.unknown_command_handler = lambda command: print(f'Unknown command: {command.get_trigger()}') + app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}')) app.start_polling() output = mock_stdout.getvalue() @@ -43,7 +43,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App(ignore_command_register=False) app.include_router(router) - app.unknown_command_handler = lambda command: print(f'Unknown command: {command.get_trigger()}') + app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}')) app.start_polling() output = mock_stdout.getvalue() @@ -117,12 +117,12 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.unknown_command_handler = lambda command: print(f'Unknown command: {command.get_trigger()}') + app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}')) app.start_polling() output = mock_stdout.getvalue() - self.assertRegex(output, re.compile(r'\ntest command\n(.|\n)*\nUnknown command: some\n')) + self.assertRegex(output, re.compile(r'\ntest command\n(.|\n)*\nUnknown command: some')) @patch("builtins.input", side_effect=["test", "some", "more", "q"]) @@ -140,7 +140,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.unknown_command_handler = lambda command: print(f'Unknown command: {command.get_trigger()}') + app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}')) app.start_polling() output = mock_stdout.getvalue() @@ -159,7 +159,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.invalid_input_flags_handler = lambda command: print(f'Incorrect flag syntax: "{command}"') + app.set_invalid_input_flags_handler(lambda command: print(f'Incorrect flag syntax: "{command}"')) app.start_polling() output = mock_stdout.getvalue() @@ -178,7 +178,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.empty_input_command_handler = lambda: print('Empty input command') + app.set_empty_command_handler(lambda: print('Empty input command')) app.start_polling() output = mock_stdout.getvalue() @@ -197,9 +197,9 @@ class TestSystemHandlerNormalWork(unittest.TestCase): app = App() app.include_router(router) - app.repeated_input_flags_handler = lambda command: print(f'Repeated input flags: "{command}"') + app.set_repeated_input_flags_handler(lambda command: print(f'Repeated input flags: "{command}"')) app.start_polling() output = mock_stdout.getvalue() - self.assertIn("\nRepeated input flags: \"test --port 22 --port 33\"", output) + self.assertIn("\nRepeated input flags: \"test --port 22 --port 33\"\n", output)