orionis 0.617.0__tar.gz → 0.618.0__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.
- {orionis-0.617.0/orionis.egg-info → orionis-0.618.0}/PKG-INFO +1 -1
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/base/command.py +103 -36
- orionis-0.618.0/orionis/console/contracts/base_command.py +188 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/core/reactor.py +56 -34
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/application.py +3 -5
- {orionis-0.617.0 → orionis-0.618.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/core/unit_test.py +12 -13
- {orionis-0.617.0 → orionis-0.618.0/orionis.egg-info}/PKG-INFO +1 -1
- orionis-0.617.0/orionis/console/contracts/base_command.py +0 -123
- {orionis-0.617.0 → orionis-0.618.0}/LICENCE +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/MANIFEST.in +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/README.md +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/base/scheduler.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/base/scheduler_event_listener.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/make_listener.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/scheduler_list.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/scheduler_work.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/test.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/base_scheduler.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/cli_request.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/command.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/console.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/debug.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/event.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/executor.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/progress_bar.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/dumper/debug.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/command.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/event.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/event_job.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_error.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_event_data.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_paused.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_resumed.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/entities/scheduler_started.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/enums/actions.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/enums/listener.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/enums/styles.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/exceptions/cli_exceptions.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/fluent/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/fluent/command.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/fluent/event.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/kernel.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/output/console.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/request/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/request/cli_request.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/stub/command.stub +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/stub/listener.stub +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/tasks/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/console/tasks/schedule.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/container.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/exceptions/container.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/base/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/base/handler.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/catch.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/contracts/catch.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/contracts/handler.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/failure/entities/throwable.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/exceptions/application.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/catch_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/cli_request_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/directory_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/metadata/package.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/asynchrony/exceptions/asynchrony.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/encrypter/encrypter.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/exceptions/environment.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/file/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/file/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/file/contracts/directory.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/file/directory.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/exceptions/introspection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/exceptions/log.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/application.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/application.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/console.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/directory.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/directory.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/dumper.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/executor.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/inspire.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/logger.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/performance_counter.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/progress_bar.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/reactor.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/testing.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/facades/workers.pyi +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/performance/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/performance/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/exceptions/standard.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/wrapper/dataclass.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/kernel.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/view/render.py +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis/test/view/report.stub +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis.egg-info/SOURCES.txt +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis.egg-info/not-zip-safe +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/setup.cfg +0 -0
- {orionis-0.617.0 → orionis-0.618.0}/setup.py +0 -0
|
@@ -24,34 +24,6 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
|
|
|
24
24
|
|
|
25
25
|
The class integrates with the framework's console and progress bar systems,
|
|
26
26
|
allowing commands to provide rich user feedback during execution.
|
|
27
|
-
|
|
28
|
-
Attributes
|
|
29
|
-
----------
|
|
30
|
-
timestamps : bool, default True
|
|
31
|
-
Controls whether timestamps are included in console output messages.
|
|
32
|
-
When True, all console output will be prefixed with timestamp information.
|
|
33
|
-
signature : str
|
|
34
|
-
Defines the command signature string used for command registration and
|
|
35
|
-
automatic help text generation. This should follow the framework's
|
|
36
|
-
signature format conventions.
|
|
37
|
-
description : str
|
|
38
|
-
Human-readable description of the command's purpose and functionality.
|
|
39
|
-
Used in help documentation and command listing interfaces.
|
|
40
|
-
_args : Dict[str, Any], default {}
|
|
41
|
-
Dictionary containing parsed command-line arguments and options.
|
|
42
|
-
Populated automatically by the command parser before handle() execution.
|
|
43
|
-
arguments : List[CLIArgument], default []
|
|
44
|
-
List of CLIArgument instances defining the command's accepted arguments
|
|
45
|
-
and options. Used for argument parsing and validation.
|
|
46
|
-
|
|
47
|
-
Methods
|
|
48
|
-
-------
|
|
49
|
-
handle()
|
|
50
|
-
Abstract method that must be implemented by subclasses to define the
|
|
51
|
-
main command execution logic.
|
|
52
|
-
argument(key: str)
|
|
53
|
-
Safely retrieves argument values from the parsed arguments dictionary
|
|
54
|
-
with type validation and error handling.
|
|
55
27
|
"""
|
|
56
28
|
|
|
57
29
|
# Enable timestamps in console output by default
|
|
@@ -64,12 +36,43 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
|
|
|
64
36
|
description: str
|
|
65
37
|
|
|
66
38
|
# Dictionary to store parsed command-line arguments and options
|
|
67
|
-
|
|
39
|
+
__args: Dict[str, Any] = {}
|
|
40
|
+
|
|
41
|
+
async def options(self) -> List[CLIArgument]:
|
|
42
|
+
"""
|
|
43
|
+
Defines the command-line arguments and options accepted by the command.
|
|
44
|
+
|
|
45
|
+
This asynchronous method should be overridden by subclasses to specify the list of
|
|
46
|
+
command-line arguments and options that the command supports. Each argument or option
|
|
47
|
+
should be represented as a CLIArgument object, which encapsulates details such as the
|
|
48
|
+
argument's name, type, default value, and help description.
|
|
49
|
+
|
|
50
|
+
This method enables the framework to automatically parse, validate, and document
|
|
51
|
+
the available arguments for each command, ensuring consistent user experience
|
|
52
|
+
across all commands.
|
|
53
|
+
|
|
54
|
+
Parameters
|
|
55
|
+
----------
|
|
56
|
+
None
|
|
57
|
+
|
|
58
|
+
Returns
|
|
59
|
+
-------
|
|
60
|
+
List
|
|
61
|
+
A list of CLIArgument objects, where each object describes a single
|
|
62
|
+
command-line argument or option accepted by the command. If the command
|
|
63
|
+
does not accept any arguments or options, an empty list is returned.
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
Notes
|
|
66
|
+
-----
|
|
67
|
+
Subclasses should override this method to declare their specific arguments.
|
|
68
|
+
The returned list is used by the framework for argument parsing and help
|
|
69
|
+
text generation.
|
|
70
|
+
"""
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
# Return an empty list by default; subclasses should override to provide arguments
|
|
73
|
+
return []
|
|
74
|
+
|
|
75
|
+
async def handle(self):
|
|
73
76
|
"""
|
|
74
77
|
Execute the main command logic.
|
|
75
78
|
|
|
@@ -99,6 +102,70 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
|
|
|
99
102
|
# Raise an error to enforce implementation in subclasses
|
|
100
103
|
raise NotImplementedError("The 'handle' method must be implemented in the subclass.")
|
|
101
104
|
|
|
105
|
+
def setArguments(self, args: Dict[str, Any]) -> None:
|
|
106
|
+
"""
|
|
107
|
+
Populate the internal arguments dictionary with parsed command-line arguments and options.
|
|
108
|
+
|
|
109
|
+
This method is intended for internal use by the command parsing mechanism to initialize
|
|
110
|
+
the internal arguments state before command execution. It assigns the provided dictionary
|
|
111
|
+
of arguments and options to the internal storage, making them accessible via the
|
|
112
|
+
`argument()` and `arguments()` methods.
|
|
113
|
+
|
|
114
|
+
Parameters
|
|
115
|
+
----------
|
|
116
|
+
args : Dict[str, Any]
|
|
117
|
+
Dictionary containing parsed command-line arguments and options, where each key
|
|
118
|
+
represents an argument name and each value is the corresponding argument value.
|
|
119
|
+
|
|
120
|
+
Returns
|
|
121
|
+
-------
|
|
122
|
+
None
|
|
123
|
+
This method does not return any value. It updates the internal state of the command
|
|
124
|
+
instance to reflect the provided arguments.
|
|
125
|
+
|
|
126
|
+
Raises
|
|
127
|
+
------
|
|
128
|
+
ValueError
|
|
129
|
+
If the provided `args` parameter is not a dictionary.
|
|
130
|
+
|
|
131
|
+
Notes
|
|
132
|
+
-----
|
|
133
|
+
This method is automatically invoked by the command framework prior to the execution
|
|
134
|
+
of the `handle()` method. It should not be called directly by command implementations.
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
# Ensure the provided arguments are in dictionary form
|
|
138
|
+
if not isinstance(args, dict):
|
|
139
|
+
raise ValueError(f"Arguments must be a dictionary, got '{type(args).__name__}' instead.")
|
|
140
|
+
|
|
141
|
+
# Store the parsed arguments internally for later retrieval
|
|
142
|
+
self.__args = args
|
|
143
|
+
|
|
144
|
+
def arguments(self) -> Dict[str, Any]:
|
|
145
|
+
"""
|
|
146
|
+
Retrieve the entire dictionary of parsed command-line arguments and options.
|
|
147
|
+
|
|
148
|
+
This method provides access to all arguments and options that have been parsed
|
|
149
|
+
and stored internally for the current command execution. It is useful for
|
|
150
|
+
scenarios where bulk access to all argument values is required, such as
|
|
151
|
+
dynamic processing or debugging.
|
|
152
|
+
|
|
153
|
+
Returns
|
|
154
|
+
-------
|
|
155
|
+
Dict[str, Any]
|
|
156
|
+
A dictionary containing all parsed command-line arguments and options,
|
|
157
|
+
where each key is the argument name and each value is the corresponding
|
|
158
|
+
argument value.
|
|
159
|
+
|
|
160
|
+
Notes
|
|
161
|
+
-----
|
|
162
|
+
The returned dictionary reflects the current state of the command's arguments.
|
|
163
|
+
Modifying the returned dictionary will affect the internal state of the command.
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
# Return the internal dictionary containing all parsed arguments and options
|
|
167
|
+
return self.__args
|
|
168
|
+
|
|
102
169
|
def argument(self, key: str, default: Any = None) -> Any:
|
|
103
170
|
"""
|
|
104
171
|
Retrieve the value of a specific command-line argument by key with optional default fallback.
|
|
@@ -131,7 +198,7 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
|
|
|
131
198
|
ValueError
|
|
132
199
|
If the provided key parameter is not of string type.
|
|
133
200
|
ValueError
|
|
134
|
-
If the internal
|
|
201
|
+
If the internal __args attribute is not of dictionary type, indicating
|
|
135
202
|
a corrupted or improperly initialized command state.
|
|
136
203
|
"""
|
|
137
204
|
|
|
@@ -140,8 +207,8 @@ class BaseCommand(Console, ProgressBar, IBaseCommand):
|
|
|
140
207
|
raise ValueError(f"Argument key must be a string, got '{type(key).__name__}' instead.")
|
|
141
208
|
|
|
142
209
|
# Ensure the internal args attribute is a valid dictionary
|
|
143
|
-
if not isinstance(self.
|
|
144
|
-
raise ValueError(f"Arguments must be a dictionary, got '{type(self.
|
|
210
|
+
if not isinstance(self.__args, dict):
|
|
211
|
+
raise ValueError(f"Arguments must be a dictionary, got '{type(self.__args).__name__}' instead.")
|
|
145
212
|
|
|
146
213
|
# Safely retrieve the argument value with optional default fallback
|
|
147
|
-
return self.
|
|
214
|
+
return self.__args.get(key, default)
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import Any, Dict, List
|
|
3
|
+
from orionis.console.args.argument import CLIArgument
|
|
4
|
+
|
|
5
|
+
class IBaseCommand(ABC):
|
|
6
|
+
"""
|
|
7
|
+
Abstract base contract for console commands in Orionis framework.
|
|
8
|
+
|
|
9
|
+
This abstract base class defines the standardized interface that all console
|
|
10
|
+
commands must implement within the Orionis framework. It provides a consistent
|
|
11
|
+
contract for command execution, argument handling, metadata storage, and console
|
|
12
|
+
output management.
|
|
13
|
+
|
|
14
|
+
The class establishes the foundation for command-line interface functionality,
|
|
15
|
+
ensuring all commands follow a uniform pattern for registration, execution,
|
|
16
|
+
and user interaction while maintaining flexibility for specific command logic
|
|
17
|
+
implementation.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
# Enable timestamps in console output by default
|
|
21
|
+
timestamps: bool = True
|
|
22
|
+
|
|
23
|
+
# Command signature string for registration and help text generation
|
|
24
|
+
signature: str
|
|
25
|
+
|
|
26
|
+
# Human-readable description for documentation and help display
|
|
27
|
+
description: str
|
|
28
|
+
|
|
29
|
+
# Dictionary to store parsed command-line arguments and options
|
|
30
|
+
__args: Dict[str, Any] = {}
|
|
31
|
+
|
|
32
|
+
@abstractmethod
|
|
33
|
+
async def options(self) -> List[CLIArgument]:
|
|
34
|
+
"""
|
|
35
|
+
Defines the command-line arguments and options accepted by the command.
|
|
36
|
+
|
|
37
|
+
This asynchronous method should be overridden by subclasses to specify the list of
|
|
38
|
+
command-line arguments and options that the command supports. Each argument or option
|
|
39
|
+
should be represented as a CLIArgument object, which encapsulates details such as the
|
|
40
|
+
argument's name, type, default value, and help description.
|
|
41
|
+
|
|
42
|
+
This method enables the framework to automatically parse, validate, and document
|
|
43
|
+
the available arguments for each command, ensuring consistent user experience
|
|
44
|
+
across all commands.
|
|
45
|
+
|
|
46
|
+
Parameters
|
|
47
|
+
----------
|
|
48
|
+
None
|
|
49
|
+
|
|
50
|
+
Returns
|
|
51
|
+
-------
|
|
52
|
+
List
|
|
53
|
+
A list of CLIArgument objects, where each object describes a single
|
|
54
|
+
command-line argument or option accepted by the command. If the command
|
|
55
|
+
does not accept any arguments or options, an empty list is returned.
|
|
56
|
+
|
|
57
|
+
Notes
|
|
58
|
+
-----
|
|
59
|
+
Subclasses should override this method to declare their specific arguments.
|
|
60
|
+
The returned list is used by the framework for argument parsing and help
|
|
61
|
+
text generation.
|
|
62
|
+
"""
|
|
63
|
+
pass
|
|
64
|
+
|
|
65
|
+
@abstractmethod
|
|
66
|
+
async def handle(self):
|
|
67
|
+
"""
|
|
68
|
+
Execute the main command logic.
|
|
69
|
+
|
|
70
|
+
This abstract method defines the entry point for command execution and must be
|
|
71
|
+
implemented by all concrete command subclasses. It serves as the primary interface
|
|
72
|
+
for running the command's core functionality after argument parsing and validation.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
None
|
|
77
|
+
This method does not return any value. All command output should be handled
|
|
78
|
+
through the inherited console methods or other side effects.
|
|
79
|
+
|
|
80
|
+
Raises
|
|
81
|
+
------
|
|
82
|
+
NotImplementedError
|
|
83
|
+
Always raised when called on the base class, indicating that subclasses
|
|
84
|
+
must provide their own implementation of this method.
|
|
85
|
+
|
|
86
|
+
Notes
|
|
87
|
+
-----
|
|
88
|
+
Subclasses should override this method to implement their specific command
|
|
89
|
+
behavior. The method will be called after all command-line arguments have
|
|
90
|
+
been parsed and stored in the _args dictionary.
|
|
91
|
+
"""
|
|
92
|
+
pass
|
|
93
|
+
|
|
94
|
+
@abstractmethod
|
|
95
|
+
def setArguments(self, args: Dict[str, Any]) -> None:
|
|
96
|
+
"""
|
|
97
|
+
Populate the internal arguments dictionary with parsed command-line arguments and options.
|
|
98
|
+
|
|
99
|
+
This method is intended for internal use by the command parsing mechanism to initialize
|
|
100
|
+
the internal arguments state before command execution. It assigns the provided dictionary
|
|
101
|
+
of arguments and options to the internal storage, making them accessible via the
|
|
102
|
+
`argument()` and `arguments()` methods.
|
|
103
|
+
|
|
104
|
+
Parameters
|
|
105
|
+
----------
|
|
106
|
+
args : Dict[str, Any]
|
|
107
|
+
Dictionary containing parsed command-line arguments and options, where each key
|
|
108
|
+
represents an argument name and each value is the corresponding argument value.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
None
|
|
113
|
+
This method does not return any value. It updates the internal state of the command
|
|
114
|
+
instance to reflect the provided arguments.
|
|
115
|
+
|
|
116
|
+
Raises
|
|
117
|
+
------
|
|
118
|
+
ValueError
|
|
119
|
+
If the provided `args` parameter is not a dictionary.
|
|
120
|
+
|
|
121
|
+
Notes
|
|
122
|
+
-----
|
|
123
|
+
This method is automatically invoked by the command framework prior to the execution
|
|
124
|
+
of the `handle()` method. It should not be called directly by command implementations.
|
|
125
|
+
"""
|
|
126
|
+
pass
|
|
127
|
+
|
|
128
|
+
@abstractmethod
|
|
129
|
+
def arguments(self) -> Dict[str, Any]:
|
|
130
|
+
"""
|
|
131
|
+
Retrieve the entire dictionary of parsed command-line arguments and options.
|
|
132
|
+
|
|
133
|
+
This method provides access to all arguments and options that have been parsed
|
|
134
|
+
and stored internally for the current command execution. It is useful for
|
|
135
|
+
scenarios where bulk access to all argument values is required, such as
|
|
136
|
+
dynamic processing or debugging.
|
|
137
|
+
|
|
138
|
+
Returns
|
|
139
|
+
-------
|
|
140
|
+
Dict[str, Any]
|
|
141
|
+
A dictionary containing all parsed command-line arguments and options,
|
|
142
|
+
where each key is the argument name and each value is the corresponding
|
|
143
|
+
argument value.
|
|
144
|
+
|
|
145
|
+
Notes
|
|
146
|
+
-----
|
|
147
|
+
The returned dictionary reflects the current state of the command's arguments.
|
|
148
|
+
Modifying the returned dictionary will affect the internal state of the command.
|
|
149
|
+
"""
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
@abstractmethod
|
|
153
|
+
def argument(self, key: str, default: Any = None) -> Any:
|
|
154
|
+
"""
|
|
155
|
+
Retrieve the value of a specific command-line argument by key with optional default fallback.
|
|
156
|
+
|
|
157
|
+
This method provides safe and validated access to command-line arguments stored in the
|
|
158
|
+
internal arguments dictionary. It performs type checking on both the key parameter and
|
|
159
|
+
the internal _args attribute to ensure data integrity before attempting retrieval.
|
|
160
|
+
|
|
161
|
+
The method follows a fail-safe approach by returning a default value when the requested
|
|
162
|
+
argument key is not found, preventing KeyError exceptions during command execution.
|
|
163
|
+
|
|
164
|
+
Parameters
|
|
165
|
+
----------
|
|
166
|
+
key : str
|
|
167
|
+
The string identifier used to locate the desired argument in the arguments
|
|
168
|
+
dictionary. Must be a non-empty string that corresponds to a valid argument name.
|
|
169
|
+
default : Any, optional
|
|
170
|
+
The fallback value to return if the specified key is not found in the arguments
|
|
171
|
+
dictionary. Defaults to None if not provided.
|
|
172
|
+
|
|
173
|
+
Returns
|
|
174
|
+
-------
|
|
175
|
+
Any
|
|
176
|
+
The value associated with the specified key if it exists in the arguments
|
|
177
|
+
dictionary. If the key is not found, returns the provided default value
|
|
178
|
+
or None if no default was specified.
|
|
179
|
+
|
|
180
|
+
Raises
|
|
181
|
+
------
|
|
182
|
+
ValueError
|
|
183
|
+
If the provided key parameter is not of string type.
|
|
184
|
+
ValueError
|
|
185
|
+
If the internal __args attribute is not of dictionary type, indicating
|
|
186
|
+
a corrupted or improperly initialized command state.
|
|
187
|
+
"""
|
|
188
|
+
pass
|
|
@@ -15,6 +15,7 @@ from orionis.console.contracts.executor import IExecutor
|
|
|
15
15
|
from orionis.console.exceptions import CLIOrionisTypeError
|
|
16
16
|
from orionis.console.request.cli_request import CLIRequest
|
|
17
17
|
from orionis.foundation.contracts.application import IApplication
|
|
18
|
+
from orionis.services.introspection.concretes.reflection import ReflectionConcrete
|
|
18
19
|
from orionis.services.introspection.modules.reflection import ReflectionModule
|
|
19
20
|
from orionis.services.log.contracts.log_service import ILogger
|
|
20
21
|
from orionis.support.performance.contracts.counter import IPerformanceCounter
|
|
@@ -87,6 +88,8 @@ class Reactor(IReactor):
|
|
|
87
88
|
self.__loadFluentCommands()
|
|
88
89
|
self.__load_fluent_commands: bool = True
|
|
89
90
|
|
|
91
|
+
print("Clase inicializada reactor")
|
|
92
|
+
|
|
90
93
|
def __loadCommands(self) -> None:
|
|
91
94
|
"""
|
|
92
95
|
Loads all available commands into the reactor's internal registry.
|
|
@@ -317,7 +320,7 @@ class Reactor(IReactor):
|
|
|
317
320
|
for obj in core_commands:
|
|
318
321
|
|
|
319
322
|
# Get the signature attribute from the command class
|
|
320
|
-
signature =
|
|
323
|
+
signature = ReflectionConcrete(obj).getAttribute('signature')
|
|
321
324
|
|
|
322
325
|
# Skip if signature is not defined
|
|
323
326
|
if signature is None:
|
|
@@ -501,7 +504,9 @@ class Reactor(IReactor):
|
|
|
501
504
|
|
|
502
505
|
# Validate the signature against the required pattern
|
|
503
506
|
if not re.match(pattern, obj.signature):
|
|
504
|
-
raise CLIOrionisValueError(
|
|
507
|
+
raise CLIOrionisValueError(
|
|
508
|
+
f"Command class {obj.__name__} 'signature' must contain only alphanumeric characters, underscores (_) and colons (:), cannot start or end with underscore or colon, and cannot start with a number."
|
|
509
|
+
)
|
|
505
510
|
|
|
506
511
|
# Return signature
|
|
507
512
|
return obj.signature.strip()
|
|
@@ -553,8 +558,8 @@ class Reactor(IReactor):
|
|
|
553
558
|
"""
|
|
554
559
|
Validates and processes command arguments for a command class.
|
|
555
560
|
|
|
556
|
-
|
|
557
|
-
and
|
|
561
|
+
Ensures the command class provides a valid list of CLIArgument instances via its 'options' method,
|
|
562
|
+
and constructs an ArgumentParser accordingly.
|
|
558
563
|
|
|
559
564
|
Parameters
|
|
560
565
|
----------
|
|
@@ -570,43 +575,53 @@ class Reactor(IReactor):
|
|
|
570
575
|
Raises
|
|
571
576
|
------
|
|
572
577
|
CLIOrionisTypeError
|
|
573
|
-
If the '
|
|
578
|
+
If the 'options' method does not return a list or contains non-CLIArgument instances.
|
|
574
579
|
"""
|
|
575
580
|
|
|
576
|
-
#
|
|
577
|
-
|
|
578
|
-
|
|
581
|
+
# Instantiate the command and retrieve its options
|
|
582
|
+
instance = self.__app.make(obj)
|
|
583
|
+
options: List[CLIArgument] = self.__app.call(instance, 'options')
|
|
579
584
|
|
|
580
|
-
#
|
|
581
|
-
if not isinstance(
|
|
582
|
-
raise CLIOrionisTypeError(
|
|
585
|
+
# Validate that options is a list
|
|
586
|
+
if not isinstance(options, list):
|
|
587
|
+
raise CLIOrionisTypeError(
|
|
588
|
+
f"Command class {obj.__name__} 'options' must return a list."
|
|
589
|
+
)
|
|
583
590
|
|
|
584
|
-
#
|
|
585
|
-
if
|
|
591
|
+
# Return None if there are no arguments
|
|
592
|
+
if not options:
|
|
586
593
|
return None
|
|
587
594
|
|
|
588
|
-
# Validate
|
|
589
|
-
for
|
|
590
|
-
if not isinstance(
|
|
591
|
-
raise CLIOrionisTypeError(
|
|
595
|
+
# Validate all items are CLIArgument instances
|
|
596
|
+
for idx, arg in enumerate(options):
|
|
597
|
+
if not isinstance(arg, CLIArgument):
|
|
598
|
+
raise CLIOrionisTypeError(
|
|
599
|
+
f"Command class {obj.__name__} 'options' must contain only CLIArgument instances, "
|
|
600
|
+
f"found '{type(arg).__name__}' at index {idx}."
|
|
601
|
+
)
|
|
602
|
+
|
|
592
603
|
|
|
593
|
-
#
|
|
594
|
-
|
|
604
|
+
# Get the Signature attribute from the command class
|
|
605
|
+
rf_concrete = ReflectionConcrete(obj)
|
|
606
|
+
signature = rf_concrete.getAttribute('signature', '<unknown>')
|
|
607
|
+
description = rf_concrete.getAttribute('description', '')
|
|
595
608
|
|
|
596
|
-
#
|
|
609
|
+
# Build the ArgumentParser
|
|
597
610
|
arg_parser = argparse.ArgumentParser(
|
|
598
|
-
usage=f"python -B reactor {
|
|
599
|
-
description=f"Command [{
|
|
611
|
+
usage=f"python -B reactor {signature} [options]",
|
|
612
|
+
description=f"Command [{signature}] : {description}",
|
|
600
613
|
formatter_class=argparse.RawTextHelpFormatter,
|
|
601
614
|
add_help=True,
|
|
602
615
|
allow_abbrev=False,
|
|
603
616
|
exit_on_error=True,
|
|
604
|
-
prog=
|
|
617
|
+
prog=signature
|
|
605
618
|
)
|
|
606
|
-
|
|
619
|
+
|
|
620
|
+
# Add each CLIArgument to the ArgumentParser
|
|
621
|
+
for arg in options:
|
|
607
622
|
arg.addToParser(arg_parser)
|
|
608
623
|
|
|
609
|
-
# Return the
|
|
624
|
+
# Return the constructed ArgumentParser
|
|
610
625
|
return arg_parser
|
|
611
626
|
|
|
612
627
|
def __parseArgs(
|
|
@@ -646,13 +661,17 @@ class Reactor(IReactor):
|
|
|
646
661
|
|
|
647
662
|
# If the command expects arguments, parse them using its ArgumentParser
|
|
648
663
|
if command.args is not None and isinstance(command.args, argparse.ArgumentParser):
|
|
664
|
+
|
|
665
|
+
# If no args provided, use an empty list
|
|
649
666
|
if args is None:
|
|
650
667
|
args = []
|
|
668
|
+
|
|
669
|
+
# Parse the provided arguments using the command's ArgumentParser
|
|
651
670
|
try:
|
|
652
|
-
# Parse the provided arguments using the command's ArgumentParser
|
|
653
671
|
parsed_args = command.args.parse_args(args)
|
|
672
|
+
|
|
673
|
+
# Raise a CLIOrionisRuntimeError with the help message included in the exception
|
|
654
674
|
except SystemExit:
|
|
655
|
-
# Raise a CLIOrionisRuntimeError with the help message included in the exception
|
|
656
675
|
raise CLIOrionisRuntimeError(
|
|
657
676
|
f"Failed to parse arguments for command '{command.signature}'.\n"
|
|
658
677
|
f"{command.args.format_help()}\n"
|
|
@@ -662,10 +681,13 @@ class Reactor(IReactor):
|
|
|
662
681
|
# Convert the parsed arguments to a dictionary and return
|
|
663
682
|
if isinstance(parsed_args, argparse.Namespace):
|
|
664
683
|
return vars(parsed_args)
|
|
684
|
+
|
|
685
|
+
# If parsed_args is already a dictionary, return it directly
|
|
665
686
|
elif isinstance(parsed_args, dict):
|
|
666
687
|
return parsed_args
|
|
688
|
+
|
|
689
|
+
# Return an empty dictionary if no arguments were parsed
|
|
667
690
|
else:
|
|
668
|
-
# Return an empty dictionary if no arguments were parsed
|
|
669
691
|
return {}
|
|
670
692
|
|
|
671
693
|
def command(
|
|
@@ -837,13 +859,13 @@ class Reactor(IReactor):
|
|
|
837
859
|
command_instance: IBaseCommand = self.__app.make(command.obj)
|
|
838
860
|
|
|
839
861
|
# Inject parsed arguments into the command instance
|
|
840
|
-
|
|
841
|
-
command_instance.
|
|
862
|
+
dict_args = self.__parseArgs(command, args)
|
|
863
|
+
command_instance.setArguments(dict_args.copy())
|
|
842
864
|
|
|
843
865
|
# Inject a scoped CLIRequest instance into the application container for the command's context
|
|
844
866
|
self.__app.scopedInstance(ICLIRequest, CLIRequest(
|
|
845
867
|
command=signature,
|
|
846
|
-
args=
|
|
868
|
+
args=dict_args.copy()
|
|
847
869
|
))
|
|
848
870
|
|
|
849
871
|
# Execute the command's handle method and capture its output
|
|
@@ -940,13 +962,13 @@ class Reactor(IReactor):
|
|
|
940
962
|
command_instance: IBaseCommand = self.__app.make(command.obj)
|
|
941
963
|
|
|
942
964
|
# Inject parsed arguments into the command instance
|
|
943
|
-
|
|
944
|
-
command_instance.
|
|
965
|
+
dict_args = self.__parseArgs(command, args)
|
|
966
|
+
command_instance.setArguments(dict_args.copy())
|
|
945
967
|
|
|
946
968
|
# Inject a scoped CLIRequest instance into the application container for the command's context
|
|
947
969
|
self.__app.scopedInstance(ICLIRequest, CLIRequest(
|
|
948
970
|
command=signature,
|
|
949
|
-
args=
|
|
971
|
+
args=dict_args.copy()
|
|
950
972
|
))
|
|
951
973
|
|
|
952
974
|
# Execute the command's handle method asynchronously and capture its output
|
|
@@ -2118,6 +2118,7 @@ class Application(Container, IApplication):
|
|
|
2118
2118
|
duplicate initialization. The startup time is calculated and logged
|
|
2119
2119
|
for performance monitoring purposes.
|
|
2120
2120
|
"""
|
|
2121
|
+
|
|
2121
2122
|
# Check if already booted
|
|
2122
2123
|
if not self.__booted:
|
|
2123
2124
|
|
|
@@ -2125,7 +2126,7 @@ class Application(Container, IApplication):
|
|
|
2125
2126
|
self.instance(
|
|
2126
2127
|
IApplication,
|
|
2127
2128
|
self,
|
|
2128
|
-
alias=f"x-
|
|
2129
|
+
alias=f"x-orionis.foundation.contracts.application.IApplication",
|
|
2129
2130
|
enforce_decoupling=None
|
|
2130
2131
|
)
|
|
2131
2132
|
|
|
@@ -2149,11 +2150,8 @@ class Application(Container, IApplication):
|
|
|
2149
2150
|
# Calculate elapsed time in milliseconds since application start
|
|
2150
2151
|
elapsed_ms = (time.time_ns() - self.startAt) // 1_000_000
|
|
2151
2152
|
|
|
2152
|
-
# Compose the boot message
|
|
2153
|
-
boot_message = f"Orionis Framework has been successfully booted. Startup time: {elapsed_ms} ms. Started at: {self.startAt} ns"
|
|
2154
|
-
|
|
2155
2153
|
# Log message to the logger
|
|
2156
|
-
logger.info(
|
|
2154
|
+
logger.info(f"Orionis Framework has been successfully booted. Startup time: {elapsed_ms} ms. Started at: {self.startAt} ns")
|
|
2157
2155
|
|
|
2158
2156
|
# Return the application instance for method chaining
|
|
2159
2157
|
return self
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import inspect
|
|
2
1
|
import io
|
|
3
2
|
import json
|
|
4
3
|
import logging
|
|
@@ -118,18 +117,6 @@ class UnitTest(IUnitTest):
|
|
|
118
117
|
# Use live console output during test execution
|
|
119
118
|
self.__live_console: bool = True
|
|
120
119
|
|
|
121
|
-
# Load and set internal paths for test discovery and result storage
|
|
122
|
-
self.__loadPaths()
|
|
123
|
-
|
|
124
|
-
# Load and validate the testing configuration from the application
|
|
125
|
-
self.__loadConfig()
|
|
126
|
-
|
|
127
|
-
# Discover and import test modules based on the configuration
|
|
128
|
-
self.__loadModules()
|
|
129
|
-
|
|
130
|
-
# Discover and load all test cases from the imported modules into the suite
|
|
131
|
-
self.__loadTests()
|
|
132
|
-
|
|
133
120
|
def __loadPaths(
|
|
134
121
|
self
|
|
135
122
|
) -> None:
|
|
@@ -737,6 +724,18 @@ class UnitTest(IUnitTest):
|
|
|
737
724
|
# Record the start time in seconds
|
|
738
725
|
performance_counter.start()
|
|
739
726
|
|
|
727
|
+
# Load and set internal paths for test discovery and result storage
|
|
728
|
+
self.__loadPaths()
|
|
729
|
+
|
|
730
|
+
# Load and validate the testing configuration from the application
|
|
731
|
+
self.__loadConfig()
|
|
732
|
+
|
|
733
|
+
# Discover and import test modules based on the configuration
|
|
734
|
+
self.__loadModules()
|
|
735
|
+
|
|
736
|
+
# Discover and load all test cases from the imported modules into the suite
|
|
737
|
+
self.__loadTests()
|
|
738
|
+
|
|
740
739
|
# Length of all tests in the suite
|
|
741
740
|
total_tests = self.getTestCount()
|
|
742
741
|
|