orionis 0.317.0__tar.gz → 0.319.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.317.0/orionis.egg-info → orionis-0.319.0}/PKG-INFO +1 -1
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/container.py +397 -15
- orionis-0.319.0/orionis/container/contracts/container.py +202 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/callables/reflection_callable.py +15 -2
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/concretes/reflection_concrete.py +11 -0
- orionis-0.319.0/orionis/services/introspection/dependencies/entities/callable_dependencies.py +55 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +3 -2
- {orionis-0.317.0 → orionis-0.319.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.317.0 → orionis-0.319.0}/orionis.egg-info/SOURCES.txt +2 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +2 -1
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_callable.py +2 -3
- {orionis-0.317.0 → orionis-0.319.0}/LICENCE +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/MANIFEST.in +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/README.md +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_application.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/container.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/container_integrity.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/lifetimes.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_container/resolve.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/application.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/config/config.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/base/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/base/command.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/command_filter.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/kernel.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/output/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/output/console.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/output/executor.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/parser.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/console/task_manager.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/container/container.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/container/container_integrity.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/files/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/log/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/providers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/providers/service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/config/config_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/files/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/log/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/services/log/log_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/support/exception_parse.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_contracts/support/reflection.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/app_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/commands/commands_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/config/config_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/environment/environment_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/files/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/files/path_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/log/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_facades/log/log_facade.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/console/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/providers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/config/config_service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/files/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/files/paths_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/log/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/log/log_service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_providers/service_provider.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/commands/scheduler_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/config/config_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/log/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/_services/log/log_service.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/application.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/base/command.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/command_filter.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/commands/cache_clear.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/commands/schedule_work.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/dumper/dump_die.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/kernel.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/output/console.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/output/progress_bar.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/output/styles.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/console/parser.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/exceptions/container_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/exceptions/type_error_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/container/exceptions/value_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/metadata/package.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/patterns/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/patterns/singleton/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/patterns/singleton/meta_class.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/contracts/types.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/dot_env.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/environment/types.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/abstract/reflection_abstract.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflect_dependencies.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_abstract.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_concrete.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_instance.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_module.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_attribute_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_type_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_value_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/instances/reflection_instance.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/modules/reflection_module.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/parsers/serializer.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/contracts/resolver.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/paths/resolver.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/runtime_imports.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/exceptions/std_value_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/wrapper/dicts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/support/wrapper/dicts/dot_dict.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/cases/test_async.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/cases/test_case.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/cases/test_sync.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/contracts/history.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/contracts/test_unit.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/entities/test_result.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/enums/test_mode.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/enums/test_status.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/test_config_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/exceptions/test_value_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/logs/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/logs/history.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/suite/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/suite/test_unit.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/test_suite.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/test/view/render.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis/unittesting.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/setup.cfg +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/setup.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/example/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/example/test_example.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/exceptions/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/patterns/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/patterns/singleton/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/mock/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/inspection/test_reflection.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/parsers/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/parsers/mocks/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/path/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/path/test_services_resolver.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/support/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/support/standard/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/support/wrapper/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/testing/__init__.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/testing/test_testing_result.py +0 -0
- {orionis-0.317.0 → orionis-0.319.0}/tests/testing/test_testing_unit.py +0 -0
@@ -1,4 +1,6 @@
|
|
1
|
+
import threading
|
1
2
|
from typing import Any, Callable
|
3
|
+
from orionis.container.contracts.container import IContainer
|
2
4
|
from orionis.container.entities.binding import Binding
|
3
5
|
from orionis.container.enums.lifetimes import Lifetime
|
4
6
|
from orionis.container.exceptions.container_exception import OrionisContainerException
|
@@ -6,12 +8,11 @@ from orionis.container.exceptions.type_error_exception import OrionisContainerTy
|
|
6
8
|
from orionis.services.introspection.abstract.reflection_abstract import ReflectionAbstract
|
7
9
|
from orionis.services.introspection.callables.reflection_callable import ReflectionCallable
|
8
10
|
from orionis.services.introspection.concretes.reflection_concrete import ReflectionConcrete
|
11
|
+
from orionis.services.introspection.dependencies.entities.resolved_dependencies import ResolvedDependency
|
9
12
|
from orionis.services.introspection.instances.reflection_instance import ReflectionInstance
|
10
13
|
from orionis.services.introspection.reflection import Reflection
|
11
|
-
import inspect
|
12
|
-
import threading
|
13
14
|
|
14
|
-
class Container:
|
15
|
+
class Container(IContainer):
|
15
16
|
|
16
17
|
# Singleton instance of the container.
|
17
18
|
# This is a class variable that holds the single instance of the Container class.
|
@@ -27,7 +28,11 @@ class Container:
|
|
27
28
|
# regardless of how many times the class is instantiated.
|
28
29
|
_initialized = False
|
29
30
|
|
30
|
-
def __new__(
|
31
|
+
def __new__(
|
32
|
+
cls,
|
33
|
+
*args,
|
34
|
+
**kwargs
|
35
|
+
) -> 'Container':
|
31
36
|
"""
|
32
37
|
Creates and returns a singleton instance of the class.
|
33
38
|
|
@@ -52,24 +57,29 @@ class Container:
|
|
52
57
|
cls._instance = super(Container, cls).__new__(cls)
|
53
58
|
return cls._instance
|
54
59
|
|
55
|
-
def __init__(
|
60
|
+
def __init__(
|
61
|
+
self
|
62
|
+
) -> None:
|
56
63
|
"""
|
57
64
|
Initializes a new instance of the container.
|
58
65
|
|
59
66
|
This constructor sets up the internal dictionaries for bindings and aliases,
|
60
67
|
ensuring that these are only initialized once per class. The initialization
|
61
68
|
is guarded by the `_initialized` class attribute to prevent redundant setup.
|
69
|
+
The container also registers itself as a service to allow for injection.
|
62
70
|
|
63
71
|
Notes
|
64
72
|
-----
|
65
73
|
- The `__bindings` dictionary is used to store service bindings.
|
66
74
|
- The `__aliasses` dictionary is used to store service aliases.
|
67
75
|
- Initialization occurs only once per class, regardless of the number of instances.
|
76
|
+
- The container registers itself under the IContainer interface to allow for dependency injection.
|
68
77
|
"""
|
69
78
|
if not self.__class__._initialized:
|
70
79
|
self.__bindings = {}
|
71
80
|
self.__aliasses = {}
|
72
81
|
self.__class__._initialized = True
|
82
|
+
self.instance(IContainer, self)
|
73
83
|
|
74
84
|
def __dropService(
|
75
85
|
self,
|
@@ -380,6 +390,48 @@ class Container:
|
|
380
390
|
"Please ensure that all abstract methods are implemented."
|
381
391
|
)
|
382
392
|
|
393
|
+
def __getService(
|
394
|
+
self,
|
395
|
+
abstract_or_alias: Any
|
396
|
+
) -> Binding:
|
397
|
+
"""
|
398
|
+
Retrieves the binding for the requested abstract type or alias.
|
399
|
+
|
400
|
+
Parameters
|
401
|
+
----------
|
402
|
+
abstract_or_alias : Any
|
403
|
+
The abstract class, interface, or alias (str) to retrieve.
|
404
|
+
|
405
|
+
Returns
|
406
|
+
-------
|
407
|
+
Binding
|
408
|
+
The binding associated with the requested abstract type or alias.
|
409
|
+
"""
|
410
|
+
return self.__bindings.get(abstract_or_alias) or self.__aliasses.get(abstract_or_alias)
|
411
|
+
|
412
|
+
def __getFirstService(
|
413
|
+
self,
|
414
|
+
abstract_or_aliasses: list
|
415
|
+
) -> Binding:
|
416
|
+
"""
|
417
|
+
Retrieves the first binding from a list of abstract types or aliases.
|
418
|
+
|
419
|
+
Parameters
|
420
|
+
----------
|
421
|
+
abstract_or_aliasses : list
|
422
|
+
A list of abstract classes, interfaces, or aliases (str) to retrieve.
|
423
|
+
|
424
|
+
Returns
|
425
|
+
-------
|
426
|
+
Binding
|
427
|
+
The first binding found in the container for the provided abstract types or aliases.
|
428
|
+
"""
|
429
|
+
for item in abstract_or_aliasses:
|
430
|
+
binding = self.__getService(item)
|
431
|
+
if binding:
|
432
|
+
return binding
|
433
|
+
return None
|
434
|
+
|
383
435
|
def transient(
|
384
436
|
self,
|
385
437
|
abstract: Callable[..., Any],
|
@@ -716,7 +768,7 @@ class Container:
|
|
716
768
|
def function(
|
717
769
|
self,
|
718
770
|
alias: str,
|
719
|
-
|
771
|
+
fn: Callable[..., Any],
|
720
772
|
*,
|
721
773
|
lifetime: Lifetime = Lifetime.TRANSIENT
|
722
774
|
) -> bool:
|
@@ -727,7 +779,7 @@ class Container:
|
|
727
779
|
----------
|
728
780
|
alias : str
|
729
781
|
The alias to register the function under.
|
730
|
-
|
782
|
+
fn : Callable[..., Any]
|
731
783
|
The function or factory to register.
|
732
784
|
lifetime : Lifetime, optional
|
733
785
|
The lifetime of the function registration (default is TRANSIENT).
|
@@ -764,10 +816,10 @@ class Container:
|
|
764
816
|
self.__ensureAliasType(alias)
|
765
817
|
|
766
818
|
# Validate that the function is callable
|
767
|
-
self.__ensureIsCallable(
|
819
|
+
self.__ensureIsCallable(fn)
|
768
820
|
|
769
821
|
# Inspect the function signature
|
770
|
-
params = ReflectionCallable(
|
822
|
+
params = ReflectionCallable(fn).getDependencies()
|
771
823
|
|
772
824
|
# If the function requires arguments, only allow TRANSIENT
|
773
825
|
if (len(params.resolved) + len(params.unresolved)) > 0 and lifetime != Lifetime.TRANSIENT:
|
@@ -780,7 +832,7 @@ class Container:
|
|
780
832
|
|
781
833
|
# Register the function with the specified alias and lifetime
|
782
834
|
self.__bindings[alias] = Binding(
|
783
|
-
function=
|
835
|
+
function=fn,
|
784
836
|
lifetime=lifetime,
|
785
837
|
alias=alias
|
786
838
|
)
|
@@ -820,8 +872,8 @@ class Container:
|
|
820
872
|
def make(
|
821
873
|
self,
|
822
874
|
abstract_or_alias: Any,
|
823
|
-
*args,
|
824
|
-
**kwargs
|
875
|
+
*args: tuple,
|
876
|
+
**kwargs: dict
|
825
877
|
) -> Any:
|
826
878
|
"""
|
827
879
|
Resolves and returns an instance of the requested service.
|
@@ -845,11 +897,341 @@ class Container:
|
|
845
897
|
OrionisContainerException
|
846
898
|
If the requested service is not registered in the container.
|
847
899
|
"""
|
848
|
-
|
900
|
+
# Retrieve the binding for the requested abstract or alias
|
901
|
+
binding = self.__getService(abstract_or_alias)
|
902
|
+
|
903
|
+
# Check if the requested service is registered in the container
|
904
|
+
if not binding:
|
849
905
|
raise OrionisContainerException(
|
850
906
|
f"The requested service '{abstract_or_alias}' is not registered in the container."
|
851
907
|
)
|
852
908
|
|
853
|
-
binding
|
909
|
+
# Handle based on binding type and lifetime
|
910
|
+
if binding.lifetime == Lifetime.TRANSIENT:
|
911
|
+
return self.__resolveTransient(binding, *args, **kwargs)
|
912
|
+
elif binding.lifetime == Lifetime.SINGLETON:
|
913
|
+
return self.__resolveSingleton(binding, *args, **kwargs)
|
914
|
+
elif binding.lifetime == Lifetime.SCOPED:
|
915
|
+
# TODO: Implement scoped lifetime resolution
|
916
|
+
raise OrionisContainerException(
|
917
|
+
"Scoped lifetime resolution is not yet implemented."
|
918
|
+
)
|
919
|
+
|
920
|
+
def __resolveTransient(self, binding: Binding, *args, **kwargs) -> Any:
|
921
|
+
"""
|
922
|
+
Resolves a service with transient lifetime.
|
923
|
+
|
924
|
+
Parameters
|
925
|
+
----------
|
926
|
+
binding : Binding
|
927
|
+
The binding to resolve.
|
928
|
+
*args : tuple
|
929
|
+
Positional arguments to pass to the constructor.
|
930
|
+
**kwargs : dict
|
931
|
+
Keyword arguments to pass to the constructor.
|
932
|
+
|
933
|
+
Returns
|
934
|
+
-------
|
935
|
+
Any
|
936
|
+
A new instance of the requested service.
|
937
|
+
"""
|
938
|
+
|
939
|
+
# Check if the binding has a concrete class or function defined
|
940
|
+
if binding.concrete:
|
941
|
+
if args or kwargs:
|
942
|
+
return self.__instantiateConcreteWithArgs(binding.concrete, *args, **kwargs)
|
943
|
+
else:
|
944
|
+
return self.__instantiateConcreteReflective(binding.concrete)
|
945
|
+
|
946
|
+
# If the binding has a function defined
|
947
|
+
elif binding.function:
|
948
|
+
if args or kwargs:
|
949
|
+
return self.__instantiateCallableWithArgs(binding.function, *args, **kwargs)
|
950
|
+
else:
|
951
|
+
return self.__instantiateCallableReflective(binding.function)
|
952
|
+
|
953
|
+
# If neither concrete class nor function is defined
|
954
|
+
else:
|
955
|
+
raise OrionisContainerException(
|
956
|
+
"Cannot resolve transient binding: neither a concrete class nor a function is defined."
|
957
|
+
)
|
958
|
+
|
959
|
+
def __resolveSingleton(self, binding: Binding, *args, **kwargs) -> Any:
|
960
|
+
"""
|
961
|
+
Resolves a service with singleton lifetime.
|
962
|
+
|
963
|
+
Parameters
|
964
|
+
----------
|
965
|
+
binding : Binding
|
966
|
+
The binding to resolve.
|
967
|
+
*args : tuple
|
968
|
+
Positional arguments to pass to the constructor (only used if instance doesn't exist yet).
|
969
|
+
**kwargs : dict
|
970
|
+
Keyword arguments to pass to the constructor (only used if instance doesn't exist yet).
|
971
|
+
|
972
|
+
Returns
|
973
|
+
-------
|
974
|
+
Any
|
975
|
+
The singleton instance of the requested service.
|
976
|
+
"""
|
977
|
+
# Return existing instance if available
|
978
|
+
if binding.instance:
|
979
|
+
return binding.instance
|
980
|
+
|
981
|
+
# Create instance if needed
|
982
|
+
if binding.concrete:
|
983
|
+
if args or kwargs:
|
984
|
+
binding.instance = self.__instantiateConcreteWithArgs(binding.concrete, *args, **kwargs)
|
985
|
+
else:
|
986
|
+
binding.instance = self.__instantiateConcreteReflective(binding.concrete)
|
987
|
+
return binding.instance
|
988
|
+
|
989
|
+
# If the binding has a function defined
|
990
|
+
elif binding.function:
|
991
|
+
if args or kwargs:
|
992
|
+
result = self.__instantiateCallableWithArgs(binding.function, *args, **kwargs)
|
993
|
+
else:
|
994
|
+
result = self.__instantiateCallableReflective(binding.function)
|
995
|
+
|
996
|
+
# Store the result directly as the singleton instance
|
997
|
+
# We don't automatically invoke factory function results anymore
|
998
|
+
binding.instance = result
|
999
|
+
return binding.instance
|
1000
|
+
|
1001
|
+
# If neither concrete class nor function is defined
|
1002
|
+
else:
|
1003
|
+
raise OrionisContainerException(
|
1004
|
+
"Cannot resolve singleton binding: neither a concrete class, instance, nor function is defined."
|
1005
|
+
)
|
1006
|
+
|
1007
|
+
def __instantiateConcreteWithArgs(self, concrete: Callable[..., Any], *args, **kwargs) -> Any:
|
1008
|
+
"""
|
1009
|
+
Instantiates a concrete class with the provided arguments.
|
1010
|
+
|
1011
|
+
Parameters
|
1012
|
+
----------
|
1013
|
+
concrete : Callable[..., Any]
|
1014
|
+
Class to instantiate.
|
1015
|
+
*args : tuple
|
1016
|
+
Positional arguments to pass to the constructor.
|
1017
|
+
**kwargs : dict
|
1018
|
+
Keyword arguments to pass to the constructor.
|
854
1019
|
|
855
|
-
|
1020
|
+
Returns
|
1021
|
+
-------
|
1022
|
+
object
|
1023
|
+
A new instance of the specified concrete class.
|
1024
|
+
"""
|
1025
|
+
|
1026
|
+
# try to instantiate the concrete class with the provided arguments
|
1027
|
+
try:
|
1028
|
+
|
1029
|
+
# If the concrete is a class, instantiate it directly
|
1030
|
+
return concrete(*args, **kwargs)
|
1031
|
+
|
1032
|
+
except TypeError as e:
|
1033
|
+
|
1034
|
+
# If instantiation fails, use ReflectionConcrete to get class name and constructor signature
|
1035
|
+
rf_concrete = ReflectionConcrete(concrete)
|
1036
|
+
class_name = rf_concrete.getClassName()
|
1037
|
+
signature = rf_concrete.getConstructorSignature()
|
1038
|
+
|
1039
|
+
# Raise an exception with detailed information about the failure
|
1040
|
+
raise OrionisContainerException(
|
1041
|
+
f"Failed to instantiate [{class_name}] with the provided arguments: {e}\n"
|
1042
|
+
f"Expected constructor signature: [{signature}]"
|
1043
|
+
) from e
|
1044
|
+
|
1045
|
+
def __instantiateCallableWithArgs(self, fn: Callable[..., Any], *args, **kwargs) -> Any:
|
1046
|
+
"""
|
1047
|
+
Invokes a callable with the provided arguments.
|
1048
|
+
|
1049
|
+
Parameters
|
1050
|
+
----------
|
1051
|
+
fn : Callable[..., Any]
|
1052
|
+
The callable to invoke.
|
1053
|
+
*args : tuple
|
1054
|
+
Positional arguments to pass to the callable.
|
1055
|
+
**kwargs : dict
|
1056
|
+
Keyword arguments to pass to the callable.
|
1057
|
+
|
1058
|
+
Returns
|
1059
|
+
-------
|
1060
|
+
Any
|
1061
|
+
The result of the callable.
|
1062
|
+
"""
|
1063
|
+
|
1064
|
+
# Try to invoke the callable with the provided arguments
|
1065
|
+
try:
|
1066
|
+
|
1067
|
+
# If the callable is a function, invoke it directly
|
1068
|
+
return fn(*args, **kwargs)
|
1069
|
+
|
1070
|
+
except TypeError as e:
|
1071
|
+
|
1072
|
+
# If invocation fails, use ReflectionCallable to get function name and signature
|
1073
|
+
rf_callable = ReflectionCallable(fn)
|
1074
|
+
function_name = rf_callable.getName()
|
1075
|
+
signature = rf_callable.getSignature()
|
1076
|
+
|
1077
|
+
# Raise an exception with detailed information about the failure
|
1078
|
+
raise OrionisContainerException(
|
1079
|
+
f"Failed to invoke function [{function_name}] with the provided arguments: {e}\n"
|
1080
|
+
f"Expected function signature: [{signature}]"
|
1081
|
+
) from e
|
1082
|
+
|
1083
|
+
def __instantiateConcreteReflective(self, concrete: Callable[..., Any]) -> Any:
|
1084
|
+
"""
|
1085
|
+
Instantiates a concrete class reflectively, resolving its dependencies from the container.
|
1086
|
+
|
1087
|
+
Parameters
|
1088
|
+
----------
|
1089
|
+
concrete : Callable[..., Any]
|
1090
|
+
The concrete class to instantiate.
|
1091
|
+
|
1092
|
+
Returns
|
1093
|
+
-------
|
1094
|
+
Any
|
1095
|
+
A new instance of the concrete class.
|
1096
|
+
"""
|
1097
|
+
# Resolve dependencies for the concrete class
|
1098
|
+
params = self.__resolveDependencies(concrete, is_class=True)
|
1099
|
+
|
1100
|
+
# Instantiate the concrete class with resolved dependencies
|
1101
|
+
return concrete(**params)
|
1102
|
+
|
1103
|
+
def __instantiateCallableReflective(self, fn: Callable[..., Any]) -> Any:
|
1104
|
+
"""
|
1105
|
+
Invokes a callable reflectively, resolving its dependencies from the container.
|
1106
|
+
|
1107
|
+
Parameters
|
1108
|
+
----------
|
1109
|
+
fn : Callable[..., Any]
|
1110
|
+
The callable to invoke.
|
1111
|
+
|
1112
|
+
Returns
|
1113
|
+
-------
|
1114
|
+
Any
|
1115
|
+
The result of the callable.
|
1116
|
+
"""
|
1117
|
+
|
1118
|
+
# Resolve dependencies for the callable
|
1119
|
+
params = self.__resolveDependencies(fn, is_class=False)
|
1120
|
+
|
1121
|
+
# Invoke the callable with resolved dependencies
|
1122
|
+
return fn(**params)
|
1123
|
+
|
1124
|
+
def __resolveDependencies(
|
1125
|
+
self,
|
1126
|
+
target: Callable[..., Any],
|
1127
|
+
*,
|
1128
|
+
is_class: bool = False
|
1129
|
+
) -> dict:
|
1130
|
+
"""
|
1131
|
+
Resolves dependencies for a target callable or class.
|
1132
|
+
|
1133
|
+
Parameters
|
1134
|
+
----------
|
1135
|
+
target : Callable[..., Any]
|
1136
|
+
The target callable or class whose dependencies to resolve.
|
1137
|
+
is_class : bool, optional
|
1138
|
+
Whether the target is a class (True) or a callable (False).
|
1139
|
+
|
1140
|
+
Returns
|
1141
|
+
-------
|
1142
|
+
dict
|
1143
|
+
A dictionary of resolved dependencies.
|
1144
|
+
"""
|
1145
|
+
try:
|
1146
|
+
|
1147
|
+
# Use ReflectionConcrete for classes and ReflectionCallable for callables
|
1148
|
+
if is_class:
|
1149
|
+
reflection = ReflectionConcrete(target)
|
1150
|
+
dependencies = reflection.getConstructorDependencies()
|
1151
|
+
name = reflection.getClassName()
|
1152
|
+
|
1153
|
+
# If the target is a callable, use ReflectionCallable
|
1154
|
+
else:
|
1155
|
+
reflection = ReflectionCallable(target)
|
1156
|
+
dependencies = reflection.getDependencies()
|
1157
|
+
name = reflection.getName()
|
1158
|
+
|
1159
|
+
# Check for unresolved dependencies
|
1160
|
+
if dependencies.unresolved:
|
1161
|
+
unresolved_args = ', '.join(dependencies.unresolved)
|
1162
|
+
raise OrionisContainerException(
|
1163
|
+
f"Cannot resolve '{name}' because the following required arguments are missing: [{unresolved_args}]."
|
1164
|
+
)
|
1165
|
+
|
1166
|
+
# Resolve dependencies
|
1167
|
+
params = {}
|
1168
|
+
for param_name, dep in dependencies.resolved.items():
|
1169
|
+
|
1170
|
+
# If the dependency is a ResolvedDependency, resolve it
|
1171
|
+
if isinstance(dep, ResolvedDependency):
|
1172
|
+
|
1173
|
+
# If the dependency is a built-in type, raise an exception
|
1174
|
+
if dep.module_name == 'builtins':
|
1175
|
+
raise OrionisContainerException(
|
1176
|
+
f"Cannot resolve '{name}' because parameter '{param_name}' depends on built-in type '{dep.type.__name__}'."
|
1177
|
+
)
|
1178
|
+
|
1179
|
+
# Try to resolve from container
|
1180
|
+
service = self.__getFirstService([dep.type, dep.full_class_path])
|
1181
|
+
if service:
|
1182
|
+
params[param_name] = self.make(service.alias)
|
1183
|
+
|
1184
|
+
# Try to instantiate directly if it's a concrete class
|
1185
|
+
elif ReflectionConcrete.isConcreteClass(dep.type):
|
1186
|
+
params[param_name] = dep.type(**self.__resolveDependencies(dep.type, is_class=True))
|
1187
|
+
|
1188
|
+
# Try to call directly if it's a callable
|
1189
|
+
elif callable(dep.type) and not isinstance(dep.type, type):
|
1190
|
+
params[param_name] = dep.type(**self.__resolveDependencies(dep.type, is_class=False))
|
1191
|
+
|
1192
|
+
# If the dependency cannot be resolved, raise an exception
|
1193
|
+
else:
|
1194
|
+
raise OrionisContainerException(
|
1195
|
+
f"Cannot resolve dependency '{param_name}' of type '{dep.type.__name__}' for '{name}'."
|
1196
|
+
)
|
1197
|
+
else:
|
1198
|
+
# Use default value
|
1199
|
+
params[param_name] = dep
|
1200
|
+
|
1201
|
+
# Return the resolved parameters
|
1202
|
+
return params
|
1203
|
+
|
1204
|
+
except ImportError as e:
|
1205
|
+
|
1206
|
+
# Extract module name from the error message if possible
|
1207
|
+
import_msg = str(e)
|
1208
|
+
module_name = target.__module__ if hasattr(target, '__module__') else "unknown module"
|
1209
|
+
|
1210
|
+
# Check for potential circular import patterns
|
1211
|
+
if "circular import" in import_msg.lower() or "cannot import name" in import_msg.lower():
|
1212
|
+
raise OrionisContainerException(
|
1213
|
+
f"Circular import detected while resolving dependencies for '{target.__name__}' in module '{module_name}'.\n"
|
1214
|
+
f"This typically happens when two modules import each other. Consider:\n"
|
1215
|
+
f"1. Restructuring your code to avoid circular dependencies\n"
|
1216
|
+
f"2. Using delayed imports inside methods rather than at module level\n"
|
1217
|
+
f"3. Using dependency injection to break the cycle\n"
|
1218
|
+
f"Original error: {import_msg}"
|
1219
|
+
) from e
|
1220
|
+
else:
|
1221
|
+
raise OrionisContainerException(
|
1222
|
+
f"Import error while resolving dependencies for '{target.__name__}' in module '{module_name}':\n"
|
1223
|
+
f"{import_msg}"
|
1224
|
+
) from e
|
1225
|
+
|
1226
|
+
except Exception as e:
|
1227
|
+
|
1228
|
+
# Get more context about where the error occurred
|
1229
|
+
target_type = "class" if isinstance(target, type) else "function"
|
1230
|
+
target_name = target.__name__ if hasattr(target, '__name__') else str(target)
|
1231
|
+
module_name = target.__module__ if hasattr(target, '__module__') else "unknown module"
|
1232
|
+
|
1233
|
+
raise OrionisContainerException(
|
1234
|
+
f"Error resolving dependencies for {target_type} '{target_name}' in '{module_name}':\n"
|
1235
|
+
f"{str(e)}\n"
|
1236
|
+
f"Check that all dependencies are properly registered in the container."
|
1237
|
+
) from e
|