orionis 0.474.0__tar.gz → 0.476.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.474.0/orionis.egg-info → orionis-0.476.0}/PKG-INFO +1 -1
- orionis-0.476.0/orionis/console/contracts/reactor.py +110 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/core/reactor.py +213 -77
- orionis-0.476.0/orionis/console/enums/command.py +43 -0
- orionis-0.476.0/orionis/console/enums/task.py +42 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/tasks/schedule.py +107 -13
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/contracts/container.py +30 -1
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/application.py +3 -1
- orionis-0.476.0/orionis/foundation/providers/performance_counter_provider.py +64 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/metadata/framework.py +1 -1
- orionis-0.476.0/orionis/support/performance/contracts/counter.py +40 -0
- orionis-0.476.0/orionis/support/performance/counter.py +87 -0
- {orionis-0.474.0 → orionis-0.476.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.474.0 → orionis-0.476.0}/orionis.egg-info/SOURCES.txt +8 -0
- orionis-0.476.0/tests/testing/records/__init__.py +0 -0
- orionis-0.476.0/tests/testing/validators/__init__.py +0 -0
- orionis-0.476.0/tests/testing/view/__init__.py +0 -0
- orionis-0.474.0/orionis/console/contracts/reactor.py +0 -57
- {orionis-0.474.0 → orionis-0.476.0}/LICENCE +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/MANIFEST.in +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/README.md +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/app.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/args/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/args/enums/actions.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/base/command.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/base/contracts/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/base/contracts/command.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/test.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dumper/contracts/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.474.0/orionis/console/output → orionis-0.476.0/orionis/console/enums}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/kernel.py +0 -0
- {orionis-0.474.0/orionis/console/output/contracts → orionis-0.476.0/orionis/console/output}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/console.py +0 -0
- {orionis-0.474.0/orionis/console/tasks → orionis-0.476.0/orionis/console/output/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/contracts/executor.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.474.0/orionis/container → orionis-0.476.0/orionis/console/tasks}/__init__.py +0 -0
- {orionis-0.474.0/orionis/container/context → orionis-0.476.0/orionis/container}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/container.py +0 -0
- {orionis-0.474.0/orionis/container/contracts → orionis-0.476.0/orionis/container/context}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.474.0/orionis/container/entities → orionis-0.476.0/orionis/container/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.474.0/orionis/container/facades → orionis-0.476.0/orionis/container/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.474.0/orionis/container/providers → orionis-0.476.0/orionis/container/facades}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.474.0/orionis/foundation → orionis-0.476.0/orionis/container/providers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.474.0/orionis/foundation/config → orionis-0.476.0/orionis/foundation}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/app → orionis-0.476.0/orionis/foundation/config}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/app/entities → orionis-0.476.0/orionis/foundation/config/app}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/auth → orionis-0.476.0/orionis/foundation/config/app/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/auth/entities → orionis-0.476.0/orionis/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/cache → orionis-0.476.0/orionis/foundation/config/auth/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/cache/entities → orionis-0.476.0/orionis/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/cors → orionis-0.476.0/orionis/foundation/config/cache/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/cors/entities → orionis-0.476.0/orionis/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/database → orionis-0.476.0/orionis/foundation/config/cors/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/database/entities → orionis-0.476.0/orionis/foundation/config/database}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/filesystems → orionis-0.476.0/orionis/foundation/config/database/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/filesystems/entitites → orionis-0.476.0/orionis/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/logging → orionis-0.476.0/orionis/foundation/config/filesystems/entitites}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/logging/entities → orionis-0.476.0/orionis/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/mail → orionis-0.476.0/orionis/foundation/config/logging/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/mail/entities → orionis-0.476.0/orionis/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/queue → orionis-0.476.0/orionis/foundation/config/mail/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/queue/entities → orionis-0.476.0/orionis/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/roots → orionis-0.476.0/orionis/foundation/config/queue/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/session → orionis-0.476.0/orionis/foundation/config/roots}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/session/entities → orionis-0.476.0/orionis/foundation/config/session}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/session/helpers → orionis-0.476.0/orionis/foundation/config/session/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/testing → orionis-0.476.0/orionis/foundation/config/session/helpers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.474.0/orionis/foundation/config/testing/entities → orionis-0.476.0/orionis/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.474.0/orionis/foundation/contracts → orionis-0.476.0/orionis/foundation/config/testing/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.474.0/orionis/foundation/providers → orionis-0.476.0/orionis/foundation/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.474.0/orionis/metadata → orionis-0.476.0/orionis/foundation/providers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.474.0/orionis/services → orionis-0.476.0/orionis/metadata}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/metadata/package.py +0 -0
- {orionis-0.474.0/orionis/services/asynchrony → orionis-0.476.0/orionis/services}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/asynchrony/contracts → orionis-0.476.0/orionis/services/asynchrony}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/environment → orionis-0.476.0/orionis/services/asynchrony/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.474.0/orionis/services/environment/contracts → orionis-0.476.0/orionis/services/environment}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/environment/core → orionis-0.476.0/orionis/services/environment/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.474.0/orionis/services/environment/dynamic → orionis-0.476.0/orionis/services/environment/core}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.474.0/orionis/services/environment/helpers → orionis-0.476.0/orionis/services/environment/dynamic}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.474.0/orionis/services/environment/key → orionis-0.476.0/orionis/services/environment/helpers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.474.0/orionis/services/inspirational → orionis-0.476.0/orionis/services/environment/key}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.474.0/orionis/services/inspirational/contracts → orionis-0.476.0/orionis/services/inspirational}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection → orionis-0.476.0/orionis/services/inspirational/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/abstract → orionis-0.476.0/orionis/services/introspection}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/abstract/contracts → orionis-0.476.0/orionis/services/introspection/abstract}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/callables → orionis-0.476.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/callables/contracts → orionis-0.476.0/orionis/services/introspection/callables}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/concretes → orionis-0.476.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/concretes/contracts → orionis-0.476.0/orionis/services/introspection/concretes}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/dependencies → orionis-0.476.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/dependencies/contracts → orionis-0.476.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/dependencies/entities → orionis-0.476.0/orionis/services/introspection/dependencies/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/instances → orionis-0.476.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/instances/contracts → orionis-0.476.0/orionis/services/introspection/instances}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/modules → orionis-0.476.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/modules/contracts → orionis-0.476.0/orionis/services/introspection/modules}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/introspection/objects → orionis-0.476.0/orionis/services/introspection/modules/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/log → orionis-0.476.0/orionis/services/introspection/objects}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.474.0/orionis/services/log/contracts → orionis-0.476.0/orionis/services/log}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/log/handlers → orionis-0.476.0/orionis/services/log/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.474.0/orionis/services/system → orionis-0.476.0/orionis/services/log/handlers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.474.0/orionis/services/system/contracts → orionis-0.476.0/orionis/services/system}/__init__.py +0 -0
- {orionis-0.474.0/orionis/services/system/runtime → orionis-0.476.0/orionis/services/system/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.474.0/orionis/support → orionis-0.476.0/orionis/services/system/runtime}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.474.0/orionis/support/entities → orionis-0.476.0/orionis/support}/__init__.py +0 -0
- {orionis-0.474.0/orionis/support/facades → orionis-0.476.0/orionis/support/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.474.0/orionis/support/formatter → orionis-0.476.0/orionis/support/facades}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.474.0/orionis/support/formatter/exceptions → orionis-0.476.0/orionis/support/formatter}/__init__.py +0 -0
- {orionis-0.474.0/orionis/support/formatter/exceptions/contracts → orionis-0.476.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
- {orionis-0.474.0/orionis/support/patterns → orionis-0.476.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.474.0/orionis/support/standard → orionis-0.476.0/orionis/support/patterns}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.474.0/orionis/support/standard/contracts → orionis-0.476.0/orionis/support/performance}/__init__.py +0 -0
- {orionis-0.474.0/orionis/test → orionis-0.476.0/orionis/support/performance/contracts}/__init__.py +0 -0
- {orionis-0.474.0/orionis/test/cases → orionis-0.476.0/orionis/support/standard}/__init__.py +0 -0
- {orionis-0.474.0/orionis/test → orionis-0.476.0/orionis/support/standard}/contracts/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.474.0/orionis/test/core → orionis-0.476.0/orionis/test}/__init__.py +0 -0
- {orionis-0.474.0/orionis/test/entities → orionis-0.476.0/orionis/test/cases}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.474.0/orionis/test/output → orionis-0.476.0/orionis/test/contracts}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.474.0/orionis/test/records → orionis-0.476.0/orionis/test/core}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/core/unit_test.py +0 -0
- {orionis-0.474.0/orionis/test/view → orionis-0.476.0/orionis/test/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/kernel.py +0 -0
- {orionis-0.474.0/tests → orionis-0.476.0/orionis/test/output}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.474.0/tests/container → orionis-0.476.0/orionis/test/records}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.474.0/tests/container/context → orionis-0.476.0/orionis/test/view}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis/test/view/render.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/setup.cfg +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/setup.py +0 -0
- {orionis-0.474.0/tests/container/core → orionis-0.476.0/tests}/__init__.py +0 -0
- {orionis-0.474.0/tests/container/entities → orionis-0.476.0/tests/container}/__init__.py +0 -0
- {orionis-0.474.0/tests/container/enums → orionis-0.476.0/tests/container/context}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.474.0/tests/container/facades → orionis-0.476.0/tests/container/core}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/core/test_advanced_async.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/core/test_async_optimizations.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.474.0/tests/container/mocks → orionis-0.476.0/tests/container/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.474.0/tests/container/providers → orionis-0.476.0/tests/container/enums}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.474.0/tests/container/validators → orionis-0.476.0/tests/container/facades}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.474.0/tests/example → orionis-0.476.0/tests/container/mocks}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/mocks/mock_advanced_async.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.474.0/tests/foundation → orionis-0.476.0/tests/container/providers}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.474.0/tests/foundation/config → orionis-0.476.0/tests/container/validators}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.474.0/tests/foundation/config/app → orionis-0.476.0/tests/example}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/example/test_example.py +0 -0
- {orionis-0.474.0/tests/foundation/config/auth → orionis-0.476.0/tests/foundation}/__init__.py +0 -0
- {orionis-0.474.0/tests/foundation/config/cache → orionis-0.476.0/tests/foundation/config}/__init__.py +0 -0
- {orionis-0.474.0/tests/foundation/config/cors → orionis-0.476.0/tests/foundation/config/app}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.474.0/tests/foundation/config/database → orionis-0.476.0/tests/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.474.0/tests/foundation/config/filesystems → orionis-0.476.0/tests/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.474.0/tests/foundation/config/logging → orionis-0.476.0/tests/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.474.0/tests/foundation/config/mail → orionis-0.476.0/tests/foundation/config/database}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.474.0/tests/foundation/config/queue → orionis-0.476.0/tests/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.474.0/tests/foundation/config/root → orionis-0.476.0/tests/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.474.0/tests/foundation/config/session → orionis-0.476.0/tests/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.474.0/tests/foundation/config/startup → orionis-0.476.0/tests/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.474.0/tests/foundation/config/testing → orionis-0.476.0/tests/foundation/config/root}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.474.0/tests/metadata → orionis-0.476.0/tests/foundation/config/session}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.474.0/tests/services → orionis-0.476.0/tests/foundation/config/startup}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.474.0/tests/services/asynchrony → orionis-0.476.0/tests/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.474.0/tests/services/environment → orionis-0.476.0/tests/metadata}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.474.0/tests/services/introspection → orionis-0.476.0/tests/services}/__init__.py +0 -0
- {orionis-0.474.0/tests/services/introspection/dependencies → orionis-0.476.0/tests/services/asynchrony}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.474.0/tests/services/introspection/dependencies/mocks → orionis-0.476.0/tests/services/environment}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.474.0/tests/services/introspection/reflection → orionis-0.476.0/tests/services/introspection}/__init__.py +0 -0
- {orionis-0.474.0/tests/services/introspection/reflection/mock → orionis-0.476.0/tests/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.474.0/tests/services/log → orionis-0.476.0/tests/services/introspection/dependencies/mocks}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.474.0/tests/services/system → orionis-0.476.0/tests/services/introspection/reflection}/__init__.py +0 -0
- {orionis-0.474.0/tests/support → orionis-0.476.0/tests/services/introspection/reflection/mock}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.474.0/tests/support/entities → orionis-0.476.0/tests/services/log}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.474.0/tests/support/patterns → orionis-0.476.0/tests/services/system}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.474.0/tests/support/patterns/singleton → orionis-0.476.0/tests/support}/__init__.py +0 -0
- {orionis-0.474.0/tests/support/standard → orionis-0.476.0/tests/support/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.474.0/tests/support/wrapper → orionis-0.476.0/tests/support/patterns}/__init__.py +0 -0
- {orionis-0.474.0/tests/testing → orionis-0.476.0/tests/support/patterns/singleton}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.474.0/tests/testing/cases → orionis-0.476.0/tests/support/standard}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.474.0/tests/testing/entities → orionis-0.476.0/tests/support/wrapper}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.474.0/tests/testing/enums → orionis-0.476.0/tests/testing}/__init__.py +0 -0
- {orionis-0.474.0/tests/testing/output → orionis-0.476.0/tests/testing/cases}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.474.0/tests/testing/records → orionis-0.476.0/tests/testing/entities}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.474.0/tests/testing/validators → orionis-0.476.0/tests/testing/enums}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.474.0/tests/testing/view → orionis-0.476.0/tests/testing/output}/__init__.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/test_testing_unit.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.474.0 → orionis-0.476.0}/tests/testing/view/test_render.py +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import Any, List, Optional
|
|
3
|
+
|
|
4
|
+
class IReactor(ABC):
|
|
5
|
+
|
|
6
|
+
@abstractmethod
|
|
7
|
+
def info(self) -> List[dict]:
|
|
8
|
+
"""
|
|
9
|
+
Retrieves a list of all registered commands with their metadata.
|
|
10
|
+
|
|
11
|
+
This method returns a list of dictionaries, each containing information about
|
|
12
|
+
a registered command, including its signature, description, and whether it has
|
|
13
|
+
timestamps enabled. This is useful for introspection and displaying available
|
|
14
|
+
commands to the user.
|
|
15
|
+
|
|
16
|
+
Returns
|
|
17
|
+
-------
|
|
18
|
+
List[dict]
|
|
19
|
+
A list of dictionaries representing the registered commands, where each dictionary
|
|
20
|
+
contains the command's signature, description, and timestamps status.
|
|
21
|
+
"""
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
@abstractmethod
|
|
25
|
+
def call(
|
|
26
|
+
self,
|
|
27
|
+
signature: str,
|
|
28
|
+
args: Optional[List[str]] = None
|
|
29
|
+
) -> Optional[Any]:
|
|
30
|
+
"""
|
|
31
|
+
Executes a registered command synchronously by its signature, optionally passing command-line arguments.
|
|
32
|
+
|
|
33
|
+
This method retrieves a command from the internal registry using its unique signature,
|
|
34
|
+
validates and parses any provided arguments using the command's argument parser,
|
|
35
|
+
and then executes the command's `handle` method synchronously. It manages execution timing,
|
|
36
|
+
logging, and error handling, and returns any output produced by the command.
|
|
37
|
+
|
|
38
|
+
Parameters
|
|
39
|
+
----------
|
|
40
|
+
signature : str
|
|
41
|
+
The unique signature identifier of the command to execute.
|
|
42
|
+
args : Optional[List[str]], default None
|
|
43
|
+
List of command-line arguments to pass to the command. If None, no arguments are provided.
|
|
44
|
+
|
|
45
|
+
Returns
|
|
46
|
+
-------
|
|
47
|
+
Optional[Any]
|
|
48
|
+
The output produced by the command's `handle` method if execution is successful.
|
|
49
|
+
Returns None if the command does not produce a result or if an error occurs.
|
|
50
|
+
|
|
51
|
+
Raises
|
|
52
|
+
------
|
|
53
|
+
CLIOrionisValueError
|
|
54
|
+
If the command with the specified signature is not found in the registry.
|
|
55
|
+
SystemExit
|
|
56
|
+
If argument parsing fails due to invalid arguments provided (raised by argparse).
|
|
57
|
+
Exception
|
|
58
|
+
Propagates any exception raised during command execution after logging and error output.
|
|
59
|
+
|
|
60
|
+
Notes
|
|
61
|
+
-----
|
|
62
|
+
- Logs execution start, completion, and errors with timestamps if enabled.
|
|
63
|
+
- Handles argument parsing and injects parsed arguments into the command instance.
|
|
64
|
+
- All exceptions are logged and displayed in the console.
|
|
65
|
+
"""
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
@abstractmethod
|
|
69
|
+
async def callAsync(
|
|
70
|
+
self,
|
|
71
|
+
signature: str,
|
|
72
|
+
args: Optional[List[str]] = None
|
|
73
|
+
) -> Optional[Any]:
|
|
74
|
+
"""
|
|
75
|
+
Executes a registered command asynchronously by its signature, optionally passing command-line arguments.
|
|
76
|
+
|
|
77
|
+
This method locates a command in the internal registry using its unique signature,
|
|
78
|
+
validates and parses any provided arguments using the command's argument parser,
|
|
79
|
+
and then executes the command's `handle` method asynchronously. It manages execution timing,
|
|
80
|
+
logging, and error handling, and returns any output produced by the command.
|
|
81
|
+
|
|
82
|
+
Parameters
|
|
83
|
+
----------
|
|
84
|
+
signature : str
|
|
85
|
+
The unique signature identifier of the command to execute.
|
|
86
|
+
args : Optional[List[str]], default None
|
|
87
|
+
List of command-line arguments to pass to the command. If None, no arguments are provided.
|
|
88
|
+
|
|
89
|
+
Returns
|
|
90
|
+
-------
|
|
91
|
+
Optional[Any]
|
|
92
|
+
The output produced by the command's `handle` method if execution is successful.
|
|
93
|
+
Returns None if the command does not produce a result or if an error occurs.
|
|
94
|
+
|
|
95
|
+
Raises
|
|
96
|
+
------
|
|
97
|
+
CLIOrionisValueError
|
|
98
|
+
If the command with the specified signature is not found in the registry.
|
|
99
|
+
SystemExit
|
|
100
|
+
If argument parsing fails due to invalid arguments provided (raised by argparse).
|
|
101
|
+
Exception
|
|
102
|
+
Propagates any exception raised during command execution after logging and error output.
|
|
103
|
+
|
|
104
|
+
Notes
|
|
105
|
+
-----
|
|
106
|
+
- Logs execution start, completion, and errors with timestamps if enabled.
|
|
107
|
+
- Handles argument parsing and injects parsed arguments into the command instance.
|
|
108
|
+
- All exceptions are logged and displayed in the console.
|
|
109
|
+
"""
|
|
110
|
+
pass
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import os
|
|
3
3
|
import re
|
|
4
|
-
import time
|
|
5
4
|
from pathlib import Path
|
|
6
|
-
from typing import List, Optional
|
|
5
|
+
from typing import Any, List, Optional
|
|
7
6
|
from orionis.app import Orionis
|
|
8
7
|
from orionis.console.args.argument import CLIArgument
|
|
9
8
|
from orionis.console.base.command import BaseCommand
|
|
10
9
|
from orionis.console.base.contracts.command import IBaseCommand
|
|
11
10
|
from orionis.console.contracts.reactor import IReactor
|
|
11
|
+
from orionis.console.enums.command import Command
|
|
12
|
+
from orionis.console.exceptions import CLIOrionisValueError
|
|
12
13
|
from orionis.console.output.contracts.console import IConsole
|
|
13
14
|
from orionis.console.output.contracts.executor import IExecutor
|
|
14
15
|
from orionis.foundation.contracts.application import IApplication
|
|
15
16
|
from orionis.services.introspection.modules.reflection import ReflectionModule
|
|
16
17
|
from orionis.services.log.contracts.log_service import ILogger
|
|
18
|
+
from orionis.support.performance.contracts.counter import IPerformanceCounter
|
|
17
19
|
|
|
18
20
|
class Reactor(IReactor):
|
|
19
21
|
|
|
@@ -60,7 +62,7 @@ class Reactor(IReactor):
|
|
|
60
62
|
self.__root: str = str(Path.cwd())
|
|
61
63
|
|
|
62
64
|
# Initialize the internal command registry as an empty dictionary
|
|
63
|
-
self.__commands: dict = {}
|
|
65
|
+
self.__commands: dict[str, Command] = {}
|
|
64
66
|
|
|
65
67
|
# Automatically discover and load command classes from the console commands directory
|
|
66
68
|
self.__loadCommands(str(self.__app.path('console_commands')), self.__root)
|
|
@@ -77,6 +79,9 @@ class Reactor(IReactor):
|
|
|
77
79
|
# Initialize the logger service for logging command execution details
|
|
78
80
|
self.__logger: ILogger = self.__app.make('x-orionis.services.log.log_service')
|
|
79
81
|
|
|
82
|
+
# Initialize the performance counter for measuring command execution time
|
|
83
|
+
self.__performance_counter: IPerformanceCounter = self.__app.make('x-orionis.support.performance.counter')
|
|
84
|
+
|
|
80
85
|
def __loadCoreCommands(self) -> None:
|
|
81
86
|
"""
|
|
82
87
|
Loads and registers core command classes provided by the Orionis framework.
|
|
@@ -127,13 +132,13 @@ class Reactor(IReactor):
|
|
|
127
132
|
args = self.__ensureArguments(obj)
|
|
128
133
|
|
|
129
134
|
# Register the command in the internal registry with all its metadata
|
|
130
|
-
self.__commands[signature] =
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
self.__commands[signature] = Command(
|
|
136
|
+
obj=obj,
|
|
137
|
+
timestamps=timestamp,
|
|
138
|
+
signature=signature,
|
|
139
|
+
description=description,
|
|
140
|
+
args=args
|
|
141
|
+
)
|
|
137
142
|
|
|
138
143
|
def __loadCommands(self, commands_path: str, root_path: str) -> None:
|
|
139
144
|
"""
|
|
@@ -208,13 +213,13 @@ class Reactor(IReactor):
|
|
|
208
213
|
args = self.__ensureArguments(obj)
|
|
209
214
|
|
|
210
215
|
# Add the command to the internal registry
|
|
211
|
-
self.__commands[signature] =
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
self.__commands[signature] = Command(
|
|
217
|
+
obj=obj,
|
|
218
|
+
timestamps=timestamp,
|
|
219
|
+
signature=signature,
|
|
220
|
+
description=description,
|
|
221
|
+
args=args
|
|
222
|
+
)
|
|
218
223
|
|
|
219
224
|
def __ensureTimestamps(self, obj: IBaseCommand) -> bool:
|
|
220
225
|
"""
|
|
@@ -403,6 +408,61 @@ class Reactor(IReactor):
|
|
|
403
408
|
# Return the configured ArgumentParser
|
|
404
409
|
return arg_parser
|
|
405
410
|
|
|
411
|
+
def __parseArgs(
|
|
412
|
+
self,
|
|
413
|
+
command: Command,
|
|
414
|
+
args: Optional[List[str]] = None
|
|
415
|
+
) -> dict:
|
|
416
|
+
"""
|
|
417
|
+
Parses command-line arguments for a given command using its internal ArgumentParser.
|
|
418
|
+
|
|
419
|
+
This method takes a command object and an optional list of command-line arguments,
|
|
420
|
+
and parses them into a dictionary of argument names and values. If the command
|
|
421
|
+
defines an ArgumentParser (i.e., expects arguments), the arguments are parsed
|
|
422
|
+
accordingly. If no arguments are expected or provided, an empty dictionary is returned.
|
|
423
|
+
|
|
424
|
+
Parameters
|
|
425
|
+
----------
|
|
426
|
+
command : Command
|
|
427
|
+
The command object containing the argument parser and metadata.
|
|
428
|
+
args : Optional[List[str]], default None
|
|
429
|
+
A list of command-line arguments to parse. If None, an empty list is used.
|
|
430
|
+
|
|
431
|
+
Returns
|
|
432
|
+
-------
|
|
433
|
+
dict
|
|
434
|
+
A dictionary containing the parsed argument names and their corresponding values.
|
|
435
|
+
Returns an empty dictionary if no arguments are expected or provided.
|
|
436
|
+
|
|
437
|
+
Raises
|
|
438
|
+
------
|
|
439
|
+
SystemExit
|
|
440
|
+
Raised by argparse if argument parsing fails or if help is requested.
|
|
441
|
+
"""
|
|
442
|
+
|
|
443
|
+
# Initialize parsed_args to None
|
|
444
|
+
parsed_args = None
|
|
445
|
+
|
|
446
|
+
# If the command expects arguments, parse them using its ArgumentParser
|
|
447
|
+
if command.args is not None and isinstance(command.args, argparse.ArgumentParser):
|
|
448
|
+
if args is None:
|
|
449
|
+
args = []
|
|
450
|
+
try:
|
|
451
|
+
# Parse the provided arguments using the command's ArgumentParser
|
|
452
|
+
parsed_args = command.args.parse_args(args)
|
|
453
|
+
except SystemExit:
|
|
454
|
+
# Allow argparse to handle help/error messages and exit
|
|
455
|
+
raise
|
|
456
|
+
|
|
457
|
+
# Convert the parsed arguments to a dictionary and return
|
|
458
|
+
if isinstance(parsed_args, argparse.Namespace):
|
|
459
|
+
return vars(parsed_args)
|
|
460
|
+
elif isinstance(parsed_args, dict):
|
|
461
|
+
return parsed_args
|
|
462
|
+
else:
|
|
463
|
+
# Return an empty dictionary if no arguments were parsed
|
|
464
|
+
return {}
|
|
465
|
+
|
|
406
466
|
def info(self) -> List[dict]:
|
|
407
467
|
"""
|
|
408
468
|
Retrieves a list of all registered commands with their metadata.
|
|
@@ -426,8 +486,8 @@ class Reactor(IReactor):
|
|
|
426
486
|
for command in self.__commands.values():
|
|
427
487
|
|
|
428
488
|
# Extract command metadata
|
|
429
|
-
signature:str = command.
|
|
430
|
-
description:str = command.
|
|
489
|
+
signature:str = command.signature
|
|
490
|
+
description:str = command.description
|
|
431
491
|
|
|
432
492
|
# Skip internal commands (those with double underscores)
|
|
433
493
|
if signature.startswith('__') and signature.endswith('__'):
|
|
@@ -446,103 +506,179 @@ class Reactor(IReactor):
|
|
|
446
506
|
self,
|
|
447
507
|
signature: str,
|
|
448
508
|
args: Optional[List[str]] = None
|
|
449
|
-
):
|
|
509
|
+
) -> Optional[Any]:
|
|
450
510
|
"""
|
|
451
|
-
Executes a command by its signature
|
|
511
|
+
Executes a registered command synchronously by its signature, optionally passing command-line arguments.
|
|
452
512
|
|
|
453
|
-
This method retrieves a
|
|
454
|
-
arguments
|
|
455
|
-
|
|
513
|
+
This method retrieves a command from the internal registry using its unique signature,
|
|
514
|
+
validates and parses any provided arguments using the command's argument parser,
|
|
515
|
+
and then executes the command's `handle` method synchronously. It manages execution timing,
|
|
516
|
+
logging, and error handling, and returns any output produced by the command.
|
|
456
517
|
|
|
457
518
|
Parameters
|
|
458
519
|
----------
|
|
459
520
|
signature : str
|
|
460
521
|
The unique signature identifier of the command to execute.
|
|
461
522
|
args : Optional[List[str]], default None
|
|
462
|
-
|
|
523
|
+
List of command-line arguments to pass to the command. If None, no arguments are provided.
|
|
463
524
|
|
|
464
525
|
Returns
|
|
465
526
|
-------
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
527
|
+
Optional[Any]
|
|
528
|
+
The output produced by the command's `handle` method if execution is successful.
|
|
529
|
+
Returns None if the command does not produce a result or if an error occurs.
|
|
469
530
|
|
|
470
531
|
Raises
|
|
471
532
|
------
|
|
472
|
-
|
|
533
|
+
CLIOrionisValueError
|
|
473
534
|
If the command with the specified signature is not found in the registry.
|
|
474
535
|
SystemExit
|
|
475
|
-
If argument parsing fails due to invalid arguments provided.
|
|
536
|
+
If argument parsing fails due to invalid arguments provided (raised by argparse).
|
|
537
|
+
Exception
|
|
538
|
+
Propagates any exception raised during command execution after logging and error output.
|
|
539
|
+
|
|
540
|
+
Notes
|
|
541
|
+
-----
|
|
542
|
+
- Logs execution start, completion, and errors with timestamps if enabled.
|
|
543
|
+
- Handles argument parsing and injects parsed arguments into the command instance.
|
|
544
|
+
- All exceptions are logged and displayed in the console.
|
|
476
545
|
"""
|
|
477
546
|
|
|
478
|
-
# Retrieve the command from the registry
|
|
479
|
-
command:
|
|
547
|
+
# Retrieve the command from the registry by its signature
|
|
548
|
+
command: Command = self.__commands.get(signature)
|
|
480
549
|
if command is None:
|
|
481
|
-
raise
|
|
550
|
+
raise CLIOrionisValueError(f"Command '{signature}' not found.")
|
|
482
551
|
|
|
483
|
-
# Start execution timer
|
|
484
|
-
|
|
552
|
+
# Start execution timer for performance measurement
|
|
553
|
+
self.__performance_counter.start()
|
|
485
554
|
|
|
486
|
-
#
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
timestamps: bool = command.get("timestamps")
|
|
555
|
+
# Log the command execution start with RUNNING state if timestamps are enabled
|
|
556
|
+
if command.timestamps:
|
|
557
|
+
self.__executer.running(program=signature)
|
|
490
558
|
|
|
491
|
-
|
|
492
|
-
|
|
559
|
+
try:
|
|
560
|
+
# Instantiate the command class using the application container
|
|
561
|
+
command_instance: IBaseCommand = self.__app.make(command.obj)
|
|
493
562
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
if args is None:
|
|
497
|
-
args = []
|
|
498
|
-
try:
|
|
499
|
-
# Parse the provided arguments using the command's ArgumentParser
|
|
500
|
-
parsed_args = arg_parser.parse_args(args)
|
|
501
|
-
except SystemExit:
|
|
502
|
-
# Re-raise SystemExit to allow argparse to handle help/error messages
|
|
503
|
-
raise
|
|
563
|
+
# Inject parsed arguments into the command instance
|
|
564
|
+
command_instance._args = self.__parseArgs(command, args)
|
|
504
565
|
|
|
505
|
-
|
|
506
|
-
|
|
566
|
+
# Execute the command's handle method and capture its output
|
|
567
|
+
output = self.__app.call(command_instance, 'handle')
|
|
568
|
+
|
|
569
|
+
# Calculate elapsed time and log completion with DONE state if command.timestamps are enabled
|
|
570
|
+
elapsed_time = round(self.__performance_counter.stop(), 2)
|
|
571
|
+
if command.timestamps:
|
|
572
|
+
self.__executer.done(program=signature, time=f"{elapsed_time}s")
|
|
573
|
+
|
|
574
|
+
# Log successful execution in the logger service
|
|
575
|
+
self.__logger.info(f"Command '{signature}' executed successfully in ({elapsed_time}) seconds.")
|
|
576
|
+
|
|
577
|
+
# Return the output produced by the command, if any
|
|
578
|
+
return output
|
|
579
|
+
|
|
580
|
+
except Exception as e:
|
|
581
|
+
# Display the error message in the console (without timestamp)
|
|
582
|
+
self.__console.error(f"An error occurred while executing command '{signature}': {e}", timestamp=False)
|
|
583
|
+
|
|
584
|
+
# Log the error in the logger service
|
|
585
|
+
self.__logger.error(f"Command '{signature}' execution failed: {e}")
|
|
586
|
+
|
|
587
|
+
# Calculate elapsed time and log failure with ERROR state if command.timestamps are enabled
|
|
588
|
+
elapsed_time = round(self.__performance_counter.stop(), 2)
|
|
589
|
+
if command.timestamps:
|
|
590
|
+
self.__executer.fail(program=signature, time=f"{elapsed_time}s")
|
|
591
|
+
|
|
592
|
+
# Propagate the exception after logging
|
|
593
|
+
raise
|
|
594
|
+
|
|
595
|
+
async def callAsync(
|
|
596
|
+
self,
|
|
597
|
+
signature: str,
|
|
598
|
+
args: Optional[List[str]] = None
|
|
599
|
+
) -> Optional[Any]:
|
|
600
|
+
"""
|
|
601
|
+
Executes a registered command asynchronously by its signature, optionally passing command-line arguments.
|
|
602
|
+
|
|
603
|
+
This method locates a command in the internal registry using its unique signature,
|
|
604
|
+
validates and parses any provided arguments using the command's argument parser,
|
|
605
|
+
and then executes the command's `handle` method asynchronously. It manages execution timing,
|
|
606
|
+
logging, and error handling, and returns any output produced by the command.
|
|
607
|
+
|
|
608
|
+
Parameters
|
|
609
|
+
----------
|
|
610
|
+
signature : str
|
|
611
|
+
The unique signature identifier of the command to execute.
|
|
612
|
+
args : Optional[List[str]], default None
|
|
613
|
+
List of command-line arguments to pass to the command. If None, no arguments are provided.
|
|
614
|
+
|
|
615
|
+
Returns
|
|
616
|
+
-------
|
|
617
|
+
Optional[Any]
|
|
618
|
+
The output produced by the command's `handle` method if execution is successful.
|
|
619
|
+
Returns None if the command does not produce a result or if an error occurs.
|
|
620
|
+
|
|
621
|
+
Raises
|
|
622
|
+
------
|
|
623
|
+
CLIOrionisValueError
|
|
624
|
+
If the command with the specified signature is not found in the registry.
|
|
625
|
+
SystemExit
|
|
626
|
+
If argument parsing fails due to invalid arguments provided (raised by argparse).
|
|
627
|
+
Exception
|
|
628
|
+
Propagates any exception raised during command execution after logging and error output.
|
|
629
|
+
|
|
630
|
+
Notes
|
|
631
|
+
-----
|
|
632
|
+
- Logs execution start, completion, and errors with timestamps if enabled.
|
|
633
|
+
- Handles argument parsing and injects parsed arguments into the command instance.
|
|
634
|
+
- All exceptions are logged and displayed in the console.
|
|
635
|
+
"""
|
|
636
|
+
|
|
637
|
+
# Retrieve the command from the registry by its signature
|
|
638
|
+
command: Command = self.__commands.get(signature)
|
|
639
|
+
if command is None:
|
|
640
|
+
raise CLIOrionisValueError(f"Command '{signature}' not found.")
|
|
641
|
+
|
|
642
|
+
# Start execution timer for performance measurement
|
|
643
|
+
self.__performance_counter.start()
|
|
644
|
+
|
|
645
|
+
# Log the command execution start with RUNNING state if timestamps are enabled
|
|
646
|
+
if command.timestamps:
|
|
507
647
|
self.__executer.running(program=signature)
|
|
508
648
|
|
|
509
649
|
try:
|
|
650
|
+
# Instantiate the command class using the application container
|
|
651
|
+
command_instance: IBaseCommand = self.__app.make(command.obj)
|
|
510
652
|
|
|
511
|
-
#
|
|
512
|
-
command_instance
|
|
653
|
+
# Inject parsed arguments into the command instance
|
|
654
|
+
command_instance._args = self.__parseArgs(command, args)
|
|
513
655
|
|
|
514
|
-
#
|
|
515
|
-
|
|
516
|
-
command_instance._args = vars(parsed_args)
|
|
517
|
-
elif isinstance(parsed_args, dict):
|
|
518
|
-
command_instance._args = parsed_args
|
|
519
|
-
else:
|
|
520
|
-
command_instance._args = {}
|
|
656
|
+
# Execute the command's handle method asynchronously and capture its output
|
|
657
|
+
output = await self.__app.callAsync(command_instance, 'handle')
|
|
521
658
|
|
|
522
|
-
#
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
# Log the command execution completion with DONE state
|
|
526
|
-
elapsed_time = round(time.perf_counter() - start_time, 2)
|
|
527
|
-
if timestamps:
|
|
659
|
+
# Calculate elapsed time and log completion with DONE state if command.timestamps are enabled
|
|
660
|
+
elapsed_time = round(self.__performance_counter.stop(), 2)
|
|
661
|
+
if command.timestamps:
|
|
528
662
|
self.__executer.done(program=signature, time=f"{elapsed_time}s")
|
|
529
663
|
|
|
530
|
-
# Log the
|
|
664
|
+
# Log successful execution in the logger service
|
|
531
665
|
self.__logger.info(f"Command '{signature}' executed successfully in ({elapsed_time}) seconds.")
|
|
532
666
|
|
|
533
|
-
#
|
|
534
|
-
|
|
535
|
-
return output
|
|
667
|
+
# Return the output produced by the command, if any
|
|
668
|
+
return output
|
|
536
669
|
|
|
537
670
|
except Exception as e:
|
|
538
671
|
|
|
539
|
-
# Display the error message in the console
|
|
672
|
+
# Display the error message in the console (without timestamp)
|
|
540
673
|
self.__console.error(f"An error occurred while executing command '{signature}': {e}", timestamp=False)
|
|
541
674
|
|
|
542
675
|
# Log the error in the logger service
|
|
543
676
|
self.__logger.error(f"Command '{signature}' execution failed: {e}")
|
|
544
677
|
|
|
545
|
-
#
|
|
546
|
-
elapsed_time = round(
|
|
547
|
-
if timestamps:
|
|
548
|
-
self.__executer.fail(program=signature, time=f"{elapsed_time}s")
|
|
678
|
+
# Calculate elapsed time and log failure with ERROR state if command.timestamps are enabled
|
|
679
|
+
elapsed_time = round(self.__performance_counter.stop(), 2)
|
|
680
|
+
if command.timestamps:
|
|
681
|
+
self.__executer.fail(program=signature, time=f"{elapsed_time}s")
|
|
682
|
+
|
|
683
|
+
# Propagate the exception after logging
|
|
684
|
+
raise
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from typing import Type, Optional
|
|
4
|
+
from orionis.support.entities.base import BaseEntity
|
|
5
|
+
|
|
6
|
+
@dataclass(kw_only=True)
|
|
7
|
+
class Command(BaseEntity):
|
|
8
|
+
"""
|
|
9
|
+
Represents a console command and its associated metadata.
|
|
10
|
+
|
|
11
|
+
Parameters
|
|
12
|
+
----------
|
|
13
|
+
obj : Type
|
|
14
|
+
The type or class associated with the command.
|
|
15
|
+
timestamps : bool
|
|
16
|
+
Whether timestamps are enabled for this command.
|
|
17
|
+
signature : str
|
|
18
|
+
The signature string representing the command usage.
|
|
19
|
+
description : str
|
|
20
|
+
A brief description of what the command does.
|
|
21
|
+
args : Optional[argparse.ArgumentParser], optional
|
|
22
|
+
Optional argument parser for command-line arguments.
|
|
23
|
+
|
|
24
|
+
Returns
|
|
25
|
+
-------
|
|
26
|
+
Command
|
|
27
|
+
An instance of the Command class containing metadata and configuration for a console command.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
# The type or class associated with the command
|
|
31
|
+
obj: Type
|
|
32
|
+
|
|
33
|
+
# Indicates if timestamps are enabled for this command
|
|
34
|
+
timestamps: bool
|
|
35
|
+
|
|
36
|
+
# The command usage signature
|
|
37
|
+
signature: str
|
|
38
|
+
|
|
39
|
+
# Description of the command's purpose
|
|
40
|
+
description: str
|
|
41
|
+
|
|
42
|
+
# Optional argument parser for command-line arguments
|
|
43
|
+
args: Optional[argparse.ArgumentParser] = None
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
from orionis.support.entities.base import BaseEntity
|
|
4
|
+
|
|
5
|
+
@dataclass(kw_only=True)
|
|
6
|
+
class Task(BaseEntity):
|
|
7
|
+
"""
|
|
8
|
+
Represents a task entity containing metadata for execution and description.
|
|
9
|
+
|
|
10
|
+
Parameters
|
|
11
|
+
----------
|
|
12
|
+
signature : str
|
|
13
|
+
The unique identifier or signature of the task.
|
|
14
|
+
args : Optional[List[str]], optional
|
|
15
|
+
List of arguments required by the task, by default None.
|
|
16
|
+
purpose : str, optional
|
|
17
|
+
Brief description of the task's purpose, by default None.
|
|
18
|
+
trigger : str, optional
|
|
19
|
+
Event or condition that triggers the task, by default None.
|
|
20
|
+
details : str, optional
|
|
21
|
+
Additional details or information about the task, by default None.
|
|
22
|
+
|
|
23
|
+
Returns
|
|
24
|
+
-------
|
|
25
|
+
Task
|
|
26
|
+
An instance of the Task class with the specified metadata.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
# Unique identifier for the task
|
|
30
|
+
signature: str
|
|
31
|
+
|
|
32
|
+
# List of arguments required by the task (optional)
|
|
33
|
+
args: Optional[List[str]] = None
|
|
34
|
+
|
|
35
|
+
# Brief description of the task's purpose (optional)
|
|
36
|
+
purpose: str = None
|
|
37
|
+
|
|
38
|
+
# Event or condition that triggers the task (optional)
|
|
39
|
+
trigger: str = None
|
|
40
|
+
|
|
41
|
+
# Additional details or information about the task (optional)
|
|
42
|
+
details: str = None
|