orionis 0.454.0__tar.gz → 0.456.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.454.0/orionis.egg-info → orionis-0.456.0}/PKG-INFO +1 -1
- orionis-0.456.0/orionis/console/commands/help.py +36 -0
- orionis-0.456.0/orionis/console/contracts/reactor.py +39 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/core/reactor.py +7 -2
- orionis-0.456.0/orionis/console/kernel.py +99 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/application.py +3 -1
- orionis-0.456.0/orionis/foundation/providers/reactor_provider.py +93 -0
- orionis-0.456.0/orionis/foundation/providers/testing_provider.py +77 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/unit_test.py +54 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/kernel.py +27 -1
- {orionis-0.454.0 → orionis-0.456.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/SOURCES.txt +3 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +7 -3
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_abstract.py +2 -11
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_concrete.py +2 -11
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_instance.py +2 -11
- orionis-0.454.0/orionis/console/kernel.py +0 -25
- orionis-0.454.0/orionis/foundation/providers/testing_provider.py +0 -125
- {orionis-0.454.0 → orionis-0.456.0}/LICENCE +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/MANIFEST.in +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/README.md +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/app.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/args/enums/actions.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/command.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/base/contracts/command.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/console.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/contracts/executor.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/container.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/metadata/package.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/core/unit_test.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis/test/view/render.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/setup.cfg +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/setup.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/facades/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/providers/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/example/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/example/test_example.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/log/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/standard/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/wrapper/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/entities/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/enums/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/records/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/test_testing_unit.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/validators/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/view/__init__.py +0 -0
- {orionis-0.454.0 → orionis-0.456.0}/tests/testing/view/test_render.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from orionis.console.base.command import BaseCommand
|
|
2
|
+
from orionis.console.exceptions import CLIOrionisRuntimeError
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
from rich.panel import Panel
|
|
5
|
+
|
|
6
|
+
class HelpCommand(BaseCommand):
|
|
7
|
+
"""
|
|
8
|
+
Command class to display usage information for the Orionis CLI.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
timestamps: bool = False
|
|
12
|
+
signature: str = "help"
|
|
13
|
+
description: str = "Prints help information for the Orionis CLI commands."
|
|
14
|
+
|
|
15
|
+
def handle(self) -> None:
|
|
16
|
+
"""
|
|
17
|
+
Executes the command to display usage information for the Orionis CLI.
|
|
18
|
+
"""
|
|
19
|
+
try:
|
|
20
|
+
console = Console()
|
|
21
|
+
usage = (
|
|
22
|
+
"[bold cyan]Usage:[/]\n"
|
|
23
|
+
" orionis <command> [options]\n\n"
|
|
24
|
+
"[bold cyan]Available Commands:[/]\n"
|
|
25
|
+
" help Show this help message\n"
|
|
26
|
+
" run Run the application\n"
|
|
27
|
+
" make Generate code scaffolding\n"
|
|
28
|
+
" migrate Run database migrations\n"
|
|
29
|
+
" ... Other available commands\n\n"
|
|
30
|
+
"[bold cyan]Options:[/]\n"
|
|
31
|
+
" -h, --help Show this help message and exit\n"
|
|
32
|
+
)
|
|
33
|
+
panel = Panel(usage, title="[bold green]Orionis CLI Help[/]", expand=False, border_style="bright_blue")
|
|
34
|
+
console.print(panel)
|
|
35
|
+
except Exception as e:
|
|
36
|
+
raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
|
|
4
|
+
class IReactor(ABC):
|
|
5
|
+
|
|
6
|
+
@abstractmethod
|
|
7
|
+
def call(
|
|
8
|
+
self,
|
|
9
|
+
signature: str,
|
|
10
|
+
args: Optional[List[str]] = None
|
|
11
|
+
):
|
|
12
|
+
"""
|
|
13
|
+
Executes a command by its signature with optional command-line arguments.
|
|
14
|
+
|
|
15
|
+
This method retrieves a registered command by its signature, validates any provided
|
|
16
|
+
arguments against the command's argument parser, and executes the command's handle
|
|
17
|
+
method with the parsed arguments and application context.
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
signature : str
|
|
22
|
+
The unique signature identifier of the command to execute.
|
|
23
|
+
args : Optional[List[str]], default None
|
|
24
|
+
Command-line arguments to pass to the command. If None, no arguments are provided.
|
|
25
|
+
|
|
26
|
+
Returns
|
|
27
|
+
-------
|
|
28
|
+
None
|
|
29
|
+
This method does not return any value. The command's handle method is called
|
|
30
|
+
directly for execution.
|
|
31
|
+
|
|
32
|
+
Raises
|
|
33
|
+
------
|
|
34
|
+
ValueError
|
|
35
|
+
If the command with the specified signature is not found in the registry.
|
|
36
|
+
SystemExit
|
|
37
|
+
If argument parsing fails due to invalid arguments provided.
|
|
38
|
+
"""
|
|
39
|
+
pass
|
|
@@ -8,13 +8,14 @@ from orionis.app import Orionis
|
|
|
8
8
|
from orionis.console.args.argument import CLIArgument
|
|
9
9
|
from orionis.console.base.command import BaseCommand
|
|
10
10
|
from orionis.console.base.contracts.command import IBaseCommand
|
|
11
|
+
from orionis.console.contracts.reactor import IReactor
|
|
11
12
|
from orionis.console.output.contracts.console import IConsole
|
|
12
13
|
from orionis.console.output.contracts.executor import IExecutor
|
|
13
14
|
from orionis.foundation.contracts.application import IApplication
|
|
14
15
|
from orionis.services.introspection.modules.reflection import ReflectionModule
|
|
15
16
|
from orionis.services.log.contracts.log_service import ILogger
|
|
16
17
|
|
|
17
|
-
class Reactor:
|
|
18
|
+
class Reactor(IReactor):
|
|
18
19
|
|
|
19
20
|
def __init__(
|
|
20
21
|
self,
|
|
@@ -100,9 +101,13 @@ class Reactor:
|
|
|
100
101
|
|
|
101
102
|
# Import the core command class for version
|
|
102
103
|
from orionis.console.commands.version import VersionCommand
|
|
104
|
+
from orionis.console.commands.help import HelpCommand
|
|
103
105
|
|
|
104
106
|
# List of core command classes to load (extend this list as more core commands are added)
|
|
105
|
-
core_commands = [
|
|
107
|
+
core_commands = [
|
|
108
|
+
VersionCommand,
|
|
109
|
+
HelpCommand
|
|
110
|
+
]
|
|
106
111
|
|
|
107
112
|
# Iterate through the core command classes and register them
|
|
108
113
|
for obj in core_commands:
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from orionis.console.contracts.kernel import IKernelCLI
|
|
2
|
+
from orionis.console.contracts.reactor import IReactor
|
|
3
|
+
from orionis.console.output.contracts.console import IConsole
|
|
4
|
+
from orionis.foundation.contracts.application import IApplication
|
|
5
|
+
from orionis.console.exceptions import CLIOrionisValueError
|
|
6
|
+
|
|
7
|
+
class KernelCLI(IKernelCLI):
|
|
8
|
+
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
app: IApplication
|
|
12
|
+
) -> None:
|
|
13
|
+
"""
|
|
14
|
+
Initializes the KernelCLI instance with the provided application container.
|
|
15
|
+
|
|
16
|
+
Parameters
|
|
17
|
+
----------
|
|
18
|
+
app : IApplication
|
|
19
|
+
The application container instance that provides access to services and dependencies.
|
|
20
|
+
|
|
21
|
+
Returns
|
|
22
|
+
-------
|
|
23
|
+
None
|
|
24
|
+
This constructor does not return a value. It initializes internal dependencies required for CLI operations.
|
|
25
|
+
|
|
26
|
+
Raises
|
|
27
|
+
------
|
|
28
|
+
CLIOrionisValueError
|
|
29
|
+
If the provided `app` argument is not an instance of `IApplication`.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
# Validate that the app is an instance of IApplication
|
|
33
|
+
if not isinstance(app, IApplication):
|
|
34
|
+
raise CLIOrionisValueError(
|
|
35
|
+
f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
# Retrieve and initialize the reactor instance from the application container.
|
|
39
|
+
# The reactor is responsible for dispatching CLI commands.
|
|
40
|
+
self.__reactor: IReactor = app.make('x-orionis.console.core.reactor', app)
|
|
41
|
+
|
|
42
|
+
# Retrieve and initialize the console instance for command output and error handling.
|
|
43
|
+
self.__console: IConsole = app.make('x-orionis.console.output.console')
|
|
44
|
+
|
|
45
|
+
def handle(self, args: list) -> None:
|
|
46
|
+
"""
|
|
47
|
+
Processes and dispatches command line arguments to the appropriate command handler.
|
|
48
|
+
|
|
49
|
+
Parameters
|
|
50
|
+
----------
|
|
51
|
+
args : list
|
|
52
|
+
The list of command line arguments, typically `sys.argv`.
|
|
53
|
+
|
|
54
|
+
Returns
|
|
55
|
+
-------
|
|
56
|
+
None
|
|
57
|
+
This method does not return a value. It may terminate the process or delegate execution to command handlers.
|
|
58
|
+
|
|
59
|
+
Raises
|
|
60
|
+
------
|
|
61
|
+
SystemExit
|
|
62
|
+
If invalid arguments are provided or no command is specified, this method may terminate the process with an error message.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
try:
|
|
66
|
+
|
|
67
|
+
# Ensure the arguments are provided as a list
|
|
68
|
+
if not isinstance(args, list):
|
|
69
|
+
raise CLIOrionisValueError(
|
|
70
|
+
f"Failed to handle command line arguments: expected list, got {type(args).__module__}.{type(args).__name__}."
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# If no arguments or only the script name is provided, show the default help command
|
|
74
|
+
if not args or len(args) <= 1:
|
|
75
|
+
return self.__reactor.call('help')
|
|
76
|
+
|
|
77
|
+
# Remove the first argument (script name) to process only the command and its parameters
|
|
78
|
+
args = args[1:]
|
|
79
|
+
|
|
80
|
+
# If no command is provided after removing the script name, exit with an error
|
|
81
|
+
if len(args) == 0:
|
|
82
|
+
raise CLIOrionisValueError("No command provided to execute.")
|
|
83
|
+
|
|
84
|
+
# If only the command is provided, call it without additional arguments
|
|
85
|
+
if len(args) == 1:
|
|
86
|
+
return self.__reactor.call(args[0])
|
|
87
|
+
|
|
88
|
+
# If command and arguments are provided, call the command with its arguments
|
|
89
|
+
return self.__reactor.call(args[0], args[1:])
|
|
90
|
+
|
|
91
|
+
except SystemExit as e:
|
|
92
|
+
|
|
93
|
+
# Handle SystemExit exceptions gracefully, allowing for clean exits with error messages
|
|
94
|
+
self.__console.exitError(str(e))
|
|
95
|
+
|
|
96
|
+
except Exception as e:
|
|
97
|
+
|
|
98
|
+
# Handle any other exceptions that may occur during command processing
|
|
99
|
+
self.__console.exitError(f"An unexpected error occurred: {str(e)}")
|
|
@@ -179,6 +179,7 @@ class Application(Container, IApplication):
|
|
|
179
179
|
from orionis.foundation.providers.testing_provider import TestingProvider
|
|
180
180
|
from orionis.foundation.providers.inspirational_provider import InspirationalProvider
|
|
181
181
|
from orionis.foundation.providers.executor_provider import ConsoleExecuteProvider
|
|
182
|
+
from orionis.foundation.providers.reactor_provider import ReactorProvider
|
|
182
183
|
|
|
183
184
|
# Core framework providers
|
|
184
185
|
core_providers = [
|
|
@@ -189,7 +190,8 @@ class Application(Container, IApplication):
|
|
|
189
190
|
LoggerProvider,
|
|
190
191
|
TestingProvider,
|
|
191
192
|
InspirationalProvider,
|
|
192
|
-
ConsoleExecuteProvider
|
|
193
|
+
ConsoleExecuteProvider,
|
|
194
|
+
ReactorProvider
|
|
193
195
|
]
|
|
194
196
|
|
|
195
197
|
# Register each core provider
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from orionis.console.contracts.reactor import IReactor
|
|
2
|
+
from orionis.console.core.reactor import Reactor
|
|
3
|
+
from orionis.container.providers.service_provider import ServiceProvider
|
|
4
|
+
|
|
5
|
+
class ReactorProvider(ServiceProvider):
|
|
6
|
+
"""
|
|
7
|
+
Service provider for worker management functionality within the Orionis framework.
|
|
8
|
+
|
|
9
|
+
This provider is responsible for registering and configuring the worker management
|
|
10
|
+
service implementation in the application's dependency injection container. It
|
|
11
|
+
establishes the binding between the IReactor interface contract and its concrete
|
|
12
|
+
Reactor implementation, enabling consistent reactor operations throughout the
|
|
13
|
+
application lifecycle.
|
|
14
|
+
|
|
15
|
+
The provider follows the standard service provider pattern, offering both
|
|
16
|
+
registration and boot phases for complete service lifecycle management.
|
|
17
|
+
|
|
18
|
+
Attributes
|
|
19
|
+
----------
|
|
20
|
+
app : Application
|
|
21
|
+
The main application container instance used for service registration
|
|
22
|
+
and dependency injection management.
|
|
23
|
+
|
|
24
|
+
Notes
|
|
25
|
+
-----
|
|
26
|
+
This provider registers the reactor service with a transient lifetime, ensuring
|
|
27
|
+
that each request for reactor functionality receives a fresh instance. This
|
|
28
|
+
approach is optimal for operations that may maintain temporary state or require
|
|
29
|
+
isolation between different execution contexts.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def register(self) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Register the reactor management service in the application container.
|
|
35
|
+
|
|
36
|
+
This method binds the IReactor interface to a new instance of the Reactor
|
|
37
|
+
implementation within the application's dependency injection container. The
|
|
38
|
+
service is registered with a transient lifetime, ensuring that each resolution
|
|
39
|
+
yields a new Reactor instance. An alias is provided for convenient retrieval.
|
|
40
|
+
|
|
41
|
+
Parameters
|
|
42
|
+
----------
|
|
43
|
+
None
|
|
44
|
+
|
|
45
|
+
Returns
|
|
46
|
+
-------
|
|
47
|
+
None
|
|
48
|
+
This method does not return any value. It performs registration
|
|
49
|
+
as a side effect on the application container.
|
|
50
|
+
|
|
51
|
+
Notes
|
|
52
|
+
-----
|
|
53
|
+
- Each call to resolve IReactor will produce a new Reactor instance.
|
|
54
|
+
- No singleton or caching behavior is applied.
|
|
55
|
+
- The alias "x-orionis.console.core.reactor" can be used for explicit lookups.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
# Register the Reactor service with the application container
|
|
59
|
+
# as a singleton, allowing it to be resolved throughout the application lifecycle
|
|
60
|
+
self.app.singleton(
|
|
61
|
+
IReactor,
|
|
62
|
+
Reactor,
|
|
63
|
+
alias="x-orionis.console.core.reactor"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def boot(self) -> None:
|
|
67
|
+
"""
|
|
68
|
+
Perform post-registration initialization for the reactor management service.
|
|
69
|
+
|
|
70
|
+
This method is invoked after all services have been registered in the container.
|
|
71
|
+
It provides an opportunity for additional setup, configuration, or initialization
|
|
72
|
+
logic that may depend on other services being available. Currently, this method
|
|
73
|
+
does not perform any actions but serves as a placeholder for future enhancements.
|
|
74
|
+
|
|
75
|
+
Parameters
|
|
76
|
+
----------
|
|
77
|
+
None
|
|
78
|
+
|
|
79
|
+
Returns
|
|
80
|
+
-------
|
|
81
|
+
None
|
|
82
|
+
This method does not return any value. It only performs initialization
|
|
83
|
+
side effects if required.
|
|
84
|
+
|
|
85
|
+
Notes
|
|
86
|
+
-----
|
|
87
|
+
- Called automatically during the application boot sequence.
|
|
88
|
+
- Intended for cross-service configuration or runtime setup.
|
|
89
|
+
- No initialization is currently required for the reactor service.
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
# No additional initialization required at this time
|
|
93
|
+
pass
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from orionis.container.providers.service_provider import ServiceProvider
|
|
2
|
+
from orionis.test.contracts.unit_test import IUnitTest
|
|
3
|
+
from orionis.test.core.unit_test import UnitTest
|
|
4
|
+
|
|
5
|
+
class TestingProvider(ServiceProvider):
|
|
6
|
+
"""
|
|
7
|
+
Provides comprehensive unit testing environment services for the Orionis framework.
|
|
8
|
+
|
|
9
|
+
This service provider integrates a native unit testing framework into the Orionis
|
|
10
|
+
application ecosystem, enabling advanced testing capabilities with configurable
|
|
11
|
+
execution modes, parallel processing, and persistent result storage. The provider
|
|
12
|
+
registers the testing service as a singleton within the application's dependency
|
|
13
|
+
injection container, making it available throughout the application lifecycle.
|
|
14
|
+
|
|
15
|
+
The TestingProvider handles the complete lifecycle of testing services, from
|
|
16
|
+
initial configuration and test discovery to storage preparation and service
|
|
17
|
+
registration. It supports various testing patterns, execution strategies, and
|
|
18
|
+
reporting mechanisms to accommodate different testing scenarios and requirements.
|
|
19
|
+
|
|
20
|
+
Attributes
|
|
21
|
+
----------
|
|
22
|
+
app : Application
|
|
23
|
+
The Orionis application container instance that manages service registration,
|
|
24
|
+
configuration access, and dependency injection throughout the framework.
|
|
25
|
+
|
|
26
|
+
Notes
|
|
27
|
+
-----
|
|
28
|
+
This provider follows the Orionis service provider pattern, implementing both
|
|
29
|
+
register() and boot() methods to ensure proper service initialization and
|
|
30
|
+
post-registration setup. The testing service is registered with the interface
|
|
31
|
+
binding IUnitTest and can be resolved using the alias "x-orionis.test.core.unit_test".
|
|
32
|
+
|
|
33
|
+
The provider requires a valid testing configuration section in the application
|
|
34
|
+
configuration, which should include settings for verbosity, execution mode,
|
|
35
|
+
worker configuration, and storage paths.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
def register(self) -> None:
|
|
39
|
+
"""
|
|
40
|
+
Register and configure the unit testing service in the application container.
|
|
41
|
+
|
|
42
|
+
This method loads the testing configuration from the application, instantiates
|
|
43
|
+
and configures a UnitTest service, and registers it as a singleton in the
|
|
44
|
+
dependency injection container. The service is bound to the IUnitTest interface
|
|
45
|
+
and is accessible via the alias "x-orionis.test.core.unit_test".
|
|
46
|
+
|
|
47
|
+
The registration process includes:
|
|
48
|
+
- Retrieving testing configuration from the application settings.
|
|
49
|
+
- Instantiating the UnitTest service with the appropriate configuration.
|
|
50
|
+
- Registering the UnitTest service as a singleton in the container.
|
|
51
|
+
- Binding the service to the IUnitTest interface and alias.
|
|
52
|
+
|
|
53
|
+
Returns
|
|
54
|
+
-------
|
|
55
|
+
None
|
|
56
|
+
This method does not return any value. It performs side effects by
|
|
57
|
+
registering and binding the testing service in the application container.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
# Register the UnitTest service as a singleton in the application container.
|
|
61
|
+
# The service is bound to the IUnitTest interface and can be resolved using the alias.
|
|
62
|
+
self.app.singleton(IUnitTest, UnitTest, alias="x-orionis.test.core.unit_test")
|
|
63
|
+
|
|
64
|
+
def boot(self) -> None:
|
|
65
|
+
"""
|
|
66
|
+
Finalize initialization for the testing provider after service registration.
|
|
67
|
+
|
|
68
|
+
This method is called after the registration phase to allow for any additional
|
|
69
|
+
setup required for the testing environment. In this implementation, no further
|
|
70
|
+
actions are performed during the boot phase.
|
|
71
|
+
|
|
72
|
+
Returns
|
|
73
|
+
-------
|
|
74
|
+
None
|
|
75
|
+
This method does not return any value.
|
|
76
|
+
"""
|
|
77
|
+
pass
|
|
@@ -52,6 +52,60 @@ class IUnitTest(ABC):
|
|
|
52
52
|
"""
|
|
53
53
|
pass
|
|
54
54
|
|
|
55
|
+
@abstractmethod
|
|
56
|
+
def discoverTests(
|
|
57
|
+
self,
|
|
58
|
+
base_path: str | Path,
|
|
59
|
+
folder_path: str | List[str],
|
|
60
|
+
pattern: str,
|
|
61
|
+
test_name_pattern: Optional[str] = None,
|
|
62
|
+
tags: Optional[List[str]] = None
|
|
63
|
+
) -> 'IUnitTest':
|
|
64
|
+
"""
|
|
65
|
+
Discover test cases from specified folders using flexible path discovery.
|
|
66
|
+
|
|
67
|
+
This method provides a convenient way to discover and load test cases from multiple folders
|
|
68
|
+
based on various path specifications. It supports wildcard discovery, single folder loading,
|
|
69
|
+
and multiple folder loading. The method automatically resolves paths relative to the base
|
|
70
|
+
directory and discovers all folders containing files matching the specified pattern.
|
|
71
|
+
|
|
72
|
+
Parameters
|
|
73
|
+
----------
|
|
74
|
+
base_path : str or Path
|
|
75
|
+
Base directory path for resolving relative folder paths. This serves as the root
|
|
76
|
+
directory from which all folder searches are conducted.
|
|
77
|
+
folder_path : str or list of str
|
|
78
|
+
Specification of folders to search for test cases. Can be:
|
|
79
|
+
- '*' : Discover all folders containing matching files within base_path
|
|
80
|
+
- str : Single folder path relative to base_path
|
|
81
|
+
- list of str : Multiple folder paths relative to base_path
|
|
82
|
+
pattern : str
|
|
83
|
+
File name pattern to match test files, supporting wildcards (* and ?).
|
|
84
|
+
Examples: 'test_*.py', '*_test.py', 'test*.py'
|
|
85
|
+
test_name_pattern : str, optional
|
|
86
|
+
Regular expression pattern to filter test method names. Only tests whose
|
|
87
|
+
names match this pattern will be included. Default is None (no filtering).
|
|
88
|
+
tags : list of str, optional
|
|
89
|
+
List of tags to filter tests. Only tests decorated with matching tags
|
|
90
|
+
will be included. Default is None (no tag filtering).
|
|
91
|
+
|
|
92
|
+
Returns
|
|
93
|
+
-------
|
|
94
|
+
UnitTest
|
|
95
|
+
The current UnitTest instance with discovered tests added to the suite,
|
|
96
|
+
enabling method chaining.
|
|
97
|
+
|
|
98
|
+
Notes
|
|
99
|
+
-----
|
|
100
|
+
- All paths are resolved as absolute paths relative to the base_path
|
|
101
|
+
- When folder_path is '*', the method searches recursively through all subdirectories
|
|
102
|
+
- The method uses the existing discoverTestsInFolder method for actual test discovery
|
|
103
|
+
- Duplicate folders are automatically eliminated using a set data structure
|
|
104
|
+
- The method does not validate the existence of specified folders; validation
|
|
105
|
+
occurs during the actual test discovery process
|
|
106
|
+
"""
|
|
107
|
+
pass
|
|
108
|
+
|
|
55
109
|
@abstractmethod
|
|
56
110
|
def discoverTestsInFolder(
|
|
57
111
|
self,
|
|
@@ -2,6 +2,7 @@ from orionis.console.output.contracts.console import IConsole
|
|
|
2
2
|
from orionis.foundation.contracts.application import IApplication
|
|
3
3
|
from orionis.test.contracts.kernel import ITestKernel
|
|
4
4
|
from orionis.test.contracts.unit_test import IUnitTest
|
|
5
|
+
from orionis.foundation.config.testing.entities.testing import Testing
|
|
5
6
|
from orionis.test.exceptions import OrionisTestConfigException, OrionisTestFailureException
|
|
6
7
|
|
|
7
8
|
class TestKernel(ITestKernel):
|
|
@@ -38,8 +39,33 @@ class TestKernel(ITestKernel):
|
|
|
38
39
|
f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
|
|
39
40
|
)
|
|
40
41
|
|
|
42
|
+
# Load testing configuration from application config and create Testing instance
|
|
43
|
+
config = Testing(**app.config('testing'))
|
|
44
|
+
|
|
41
45
|
# Resolve the unit test service from the application container
|
|
42
|
-
self.__unit_test: IUnitTest = app.make('x-orionis.test.core.unit_test')
|
|
46
|
+
self.__unit_test: IUnitTest = app.make('x-orionis.test.core.unit_test', app)
|
|
47
|
+
|
|
48
|
+
# Apply configuration settings to the UnitTest instance
|
|
49
|
+
self.__unit_test.configure(
|
|
50
|
+
verbosity=config.verbosity, # Set output verbosity level
|
|
51
|
+
execution_mode=config.execution_mode, # Configure test execution mode
|
|
52
|
+
max_workers=config.max_workers, # Set maximum worker threads for parallel execution
|
|
53
|
+
fail_fast=config.fail_fast, # Enable/disable fail-fast behavior
|
|
54
|
+
print_result=config.print_result, # Control result output printing
|
|
55
|
+
throw_exception=config.throw_exception, # Configure exception throwing behavior
|
|
56
|
+
persistent=config.persistent, # Enable/disable persistent test results
|
|
57
|
+
persistent_driver=config.persistent_driver, # Set persistent storage driver
|
|
58
|
+
web_report=config.web_report # Enable/disable web-based reporting
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
# Discover and load test files based on configuration criteria
|
|
62
|
+
self.__unit_test.discoverTests(
|
|
63
|
+
base_path=config.base_path, # Root directory for test discovery
|
|
64
|
+
folder_path=config.folder_path, # Specific folder path within base_path
|
|
65
|
+
pattern=config.pattern, # File name pattern for test files
|
|
66
|
+
test_name_pattern=config.test_name_pattern, # Pattern for test method names
|
|
67
|
+
tags=config.tags # Tags to filter tests during discovery
|
|
68
|
+
)
|
|
43
69
|
|
|
44
70
|
# Resolve the console service from the application container
|
|
45
71
|
self.__console: IConsole = app.make('x-orionis.console.output.console')
|
|
@@ -21,9 +21,11 @@ orionis/console/base/command.py
|
|
|
21
21
|
orionis/console/base/contracts/__init__.py
|
|
22
22
|
orionis/console/base/contracts/command.py
|
|
23
23
|
orionis/console/commands/__init__.py
|
|
24
|
+
orionis/console/commands/help.py
|
|
24
25
|
orionis/console/commands/version.py
|
|
25
26
|
orionis/console/contracts/__init__.py
|
|
26
27
|
orionis/console/contracts/kernel.py
|
|
28
|
+
orionis/console/contracts/reactor.py
|
|
27
29
|
orionis/console/core/__init__.py
|
|
28
30
|
orionis/console/core/reactor.py
|
|
29
31
|
orionis/console/dumper/__init__.py
|
|
@@ -187,6 +189,7 @@ orionis/foundation/providers/executor_provider.py
|
|
|
187
189
|
orionis/foundation/providers/inspirational_provider.py
|
|
188
190
|
orionis/foundation/providers/logger_provider.py
|
|
189
191
|
orionis/foundation/providers/progress_bar_provider.py
|
|
192
|
+
orionis/foundation/providers/reactor_provider.py
|
|
190
193
|
orionis/foundation/providers/testing_provider.py
|
|
191
194
|
orionis/foundation/providers/workers_provider.py
|
|
192
195
|
orionis/metadata/__init__.py
|
|
@@ -170,7 +170,7 @@ class TestReflectDependencies(AsyncTestCase):
|
|
|
170
170
|
self.assertEqual(dep_user_permissions.type, FakeUserWithPermissions)
|
|
171
171
|
|
|
172
172
|
# Extract and validate the 'permissions' dependency (built-in generic type)
|
|
173
|
-
dep_permissions: Argument = method_dependencies.
|
|
173
|
+
dep_permissions: Argument = method_dependencies.unresolved.get('permissions')
|
|
174
174
|
|
|
175
175
|
# Ensure the built-in type dependency is properly resolved as an Argument instance
|
|
176
176
|
self.assertIsInstance(dep_permissions, Argument)
|
|
@@ -248,10 +248,14 @@ class TestReflectDependencies(AsyncTestCase):
|
|
|
248
248
|
dep_x: Argument = callable_dependencies.resolved.get('x')
|
|
249
249
|
|
|
250
250
|
# Verify that the 'x' parameter resolves to its default value of 3
|
|
251
|
-
self.
|
|
251
|
+
self.assertIsInstance(dep_x, Argument)
|
|
252
|
+
self.assertTrue(dep_x.resolved)
|
|
253
|
+
self.assertEqual(dep_x.default, 3)
|
|
252
254
|
|
|
253
255
|
# Extract and validate the 'y' parameter dependency from resolved dependencies
|
|
254
256
|
dep_y: Argument = callable_dependencies.resolved.get('y')
|
|
255
257
|
|
|
256
258
|
# Verify that the 'y' parameter resolves to its default value of 4
|
|
257
|
-
self.
|
|
259
|
+
self.assertIsInstance(dep_y, Argument)
|
|
260
|
+
self.assertTrue(dep_y.resolved)
|
|
261
|
+
self.assertEqual(dep_y.default, 4)
|
|
@@ -1007,14 +1007,5 @@ class TestServiceReflectionAbstract(AsyncTestCase):
|
|
|
1007
1007
|
"""
|
|
1008
1008
|
reflect = ReflectionAbstract(AbstractFakeClass)
|
|
1009
1009
|
method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
|
|
1010
|
-
self.assertIn('x', method_deps.
|
|
1011
|
-
self.assertIn('y', method_deps.
|
|
1012
|
-
self.assertEqual(method_deps.resolved['x'].class_name, 'int')
|
|
1013
|
-
self.assertEqual(method_deps.resolved['y'].class_name, 'int')
|
|
1014
|
-
self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
|
|
1015
|
-
self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
|
|
1016
|
-
self.assertEqual(method_deps.resolved['x'].type, int)
|
|
1017
|
-
self.assertEqual(method_deps.resolved['y'].type, int)
|
|
1018
|
-
self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
|
|
1019
|
-
self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
|
|
1020
|
-
self.assertEqual(method_deps.unresolved, [])
|
|
1010
|
+
self.assertIn('x', method_deps.unresolved)
|
|
1011
|
+
self.assertIn('y', method_deps.unresolved)
|
|
@@ -948,14 +948,5 @@ class TestServiceReflectionConcrete(AsyncTestCase):
|
|
|
948
948
|
"""
|
|
949
949
|
reflect = ReflectionConcrete(FakeClass)
|
|
950
950
|
method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
|
|
951
|
-
self.assertIn('x', method_deps.
|
|
952
|
-
self.assertIn('y', method_deps.
|
|
953
|
-
self.assertEqual(method_deps.resolved['x'].class_name, 'int')
|
|
954
|
-
self.assertEqual(method_deps.resolved['y'].class_name, 'int')
|
|
955
|
-
self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
|
|
956
|
-
self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
|
|
957
|
-
self.assertEqual(method_deps.resolved['x'].type, int)
|
|
958
|
-
self.assertEqual(method_deps.resolved['y'].type, int)
|
|
959
|
-
self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
|
|
960
|
-
self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
|
|
961
|
-
self.assertEqual(method_deps.unresolved, [])
|
|
951
|
+
self.assertIn('x', method_deps.unresolved)
|
|
952
|
+
self.assertIn('y', method_deps.unresolved)
|
|
@@ -1229,14 +1229,5 @@ class TestServiceReflectionInstance(AsyncTestCase):
|
|
|
1229
1229
|
"""
|
|
1230
1230
|
reflect = ReflectionInstance(FakeClass())
|
|
1231
1231
|
method_deps: ResolveArguments = reflect.getMethodDependencies('instanceSyncMethod')
|
|
1232
|
-
self.assertIn('x', method_deps.
|
|
1233
|
-
self.assertIn('y', method_deps.
|
|
1234
|
-
self.assertEqual(method_deps.resolved['x'].class_name, 'int')
|
|
1235
|
-
self.assertEqual(method_deps.resolved['y'].class_name, 'int')
|
|
1236
|
-
self.assertEqual(method_deps.resolved['x'].module_name, 'builtins')
|
|
1237
|
-
self.assertEqual(method_deps.resolved['y'].module_name, 'builtins')
|
|
1238
|
-
self.assertEqual(method_deps.resolved['x'].type, int)
|
|
1239
|
-
self.assertEqual(method_deps.resolved['y'].type, int)
|
|
1240
|
-
self.assertEqual(method_deps.resolved['x'].full_class_path, 'builtins.int')
|
|
1241
|
-
self.assertEqual(method_deps.resolved['y'].full_class_path, 'builtins.int')
|
|
1242
|
-
self.assertEqual(method_deps.unresolved, [])
|
|
1232
|
+
self.assertIn('x', method_deps.unresolved)
|
|
1233
|
+
self.assertIn('y', method_deps.unresolved)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
from orionis.console.contracts.kernel import IKernelCLI
|
|
2
|
-
from orionis.foundation.contracts.application import IApplication
|
|
3
|
-
from orionis.console.exceptions import CLIOrionisValueError
|
|
4
|
-
|
|
5
|
-
class KernelCLI(IKernelCLI):
|
|
6
|
-
|
|
7
|
-
def __init__(
|
|
8
|
-
self,
|
|
9
|
-
app: IApplication
|
|
10
|
-
) -> None:
|
|
11
|
-
|
|
12
|
-
# Validate that the app is an instance of IApplication
|
|
13
|
-
if not isinstance(app, IApplication):
|
|
14
|
-
raise CLIOrionisValueError(
|
|
15
|
-
f"Failed to initialize TestKernel: expected IApplication, got {type(app).__module__}.{type(app).__name__}."
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
def handle(self, args: list) -> None:
|
|
19
|
-
"""
|
|
20
|
-
Handle the command line arguments.
|
|
21
|
-
|
|
22
|
-
:param args: List of command line arguments (e.g., sys.argv).
|
|
23
|
-
"""
|
|
24
|
-
# This method should be implemented in subclasses
|
|
25
|
-
print(args)
|