orionis 0.318.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.318.0/orionis.egg-info → orionis-0.319.0}/PKG-INFO +1 -1
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/container.py +397 -14
- orionis-0.319.0/orionis/container/contracts/container.py +202 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/callables/reflection_callable.py +14 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/concretes/reflection_concrete.py +11 -0
- {orionis-0.318.0 → orionis-0.319.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.318.0 → orionis-0.319.0}/orionis.egg-info/SOURCES.txt +1 -0
- {orionis-0.318.0 → orionis-0.319.0}/LICENCE +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/MANIFEST.in +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/README.md +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_application.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/container.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/container_integrity.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/lifetimes.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_container/resolve.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/application.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/config/config.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/base/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/base/command.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/command_filter.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/kernel.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/output/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/output/console.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/output/executor.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/parser.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/console/task_manager.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/container/container.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/container/container_integrity.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/files/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/log/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/providers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/providers/service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/config/config_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/files/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/log/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/services/log/log_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/support/exception_parse.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_contracts/support/reflection.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/app_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/commands/commands_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/config/config_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/environment/environment_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/files/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/files/path_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/log/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_facades/log/log_facade.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/console/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/providers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/config/config_service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/files/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/files/paths_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/log/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/log/log_service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_providers/service_provider.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/commands/scheduler_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/config/config_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/log/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/_services/log/log_service.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/application.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/base/command.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/command_filter.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/commands/cache_clear.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/commands/schedule_work.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/dumper/dump_die.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/kernel.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/output/console.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/output/progress_bar.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/output/styles.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/console/parser.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/exceptions/container_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/exceptions/type_error_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/container/exceptions/value_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/metadata/package.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/patterns/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/patterns/singleton/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/patterns/singleton/meta_class.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/contracts/types.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/dot_env.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/environment/types.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/abstract/reflection_abstract.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflect_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_abstract.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_concrete.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_instance.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/contracts/reflection_module.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_attribute_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_type_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/exceptions/reflection_value_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/instances/reflection_instance.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/modules/reflection_module.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/parsers/serializer.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/contracts/resolver.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/paths/resolver.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/runtime_imports.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/exceptions/std_value_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/wrapper/dicts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/support/wrapper/dicts/dot_dict.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/cases/test_async.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/cases/test_case.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/cases/test_sync.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/contracts/history.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/contracts/test_unit.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/entities/test_result.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/enums/test_mode.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/enums/test_status.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/test_config_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/exceptions/test_value_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/logs/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/logs/history.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/suite/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/suite/test_unit.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/test_suite.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/test/view/render.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis/unittesting.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/setup.cfg +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/setup.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/example/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/example/test_example.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/exceptions/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/foundation/exceptions/test_foundation_config_exceptions.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/patterns/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/patterns/singleton/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/mock/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/inspection/test_reflection.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/parsers/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/parsers/mocks/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/path/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/path/test_services_resolver.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/support/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/support/standard/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/support/wrapper/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/testing/__init__.py +0 -0
- {orionis-0.318.0 → orionis-0.319.0}/tests/testing/test_testing_result.py +0 -0
- {orionis-0.318.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,11 +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 threading
|
12
14
|
|
13
|
-
class Container:
|
15
|
+
class Container(IContainer):
|
14
16
|
|
15
17
|
# Singleton instance of the container.
|
16
18
|
# This is a class variable that holds the single instance of the Container class.
|
@@ -26,7 +28,11 @@ class Container:
|
|
26
28
|
# regardless of how many times the class is instantiated.
|
27
29
|
_initialized = False
|
28
30
|
|
29
|
-
def __new__(
|
31
|
+
def __new__(
|
32
|
+
cls,
|
33
|
+
*args,
|
34
|
+
**kwargs
|
35
|
+
) -> 'Container':
|
30
36
|
"""
|
31
37
|
Creates and returns a singleton instance of the class.
|
32
38
|
|
@@ -51,24 +57,29 @@ class Container:
|
|
51
57
|
cls._instance = super(Container, cls).__new__(cls)
|
52
58
|
return cls._instance
|
53
59
|
|
54
|
-
def __init__(
|
60
|
+
def __init__(
|
61
|
+
self
|
62
|
+
) -> None:
|
55
63
|
"""
|
56
64
|
Initializes a new instance of the container.
|
57
65
|
|
58
66
|
This constructor sets up the internal dictionaries for bindings and aliases,
|
59
67
|
ensuring that these are only initialized once per class. The initialization
|
60
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.
|
61
70
|
|
62
71
|
Notes
|
63
72
|
-----
|
64
73
|
- The `__bindings` dictionary is used to store service bindings.
|
65
74
|
- The `__aliasses` dictionary is used to store service aliases.
|
66
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.
|
67
77
|
"""
|
68
78
|
if not self.__class__._initialized:
|
69
79
|
self.__bindings = {}
|
70
80
|
self.__aliasses = {}
|
71
81
|
self.__class__._initialized = True
|
82
|
+
self.instance(IContainer, self)
|
72
83
|
|
73
84
|
def __dropService(
|
74
85
|
self,
|
@@ -379,6 +390,48 @@ class Container:
|
|
379
390
|
"Please ensure that all abstract methods are implemented."
|
380
391
|
)
|
381
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
|
+
|
382
435
|
def transient(
|
383
436
|
self,
|
384
437
|
abstract: Callable[..., Any],
|
@@ -715,7 +768,7 @@ class Container:
|
|
715
768
|
def function(
|
716
769
|
self,
|
717
770
|
alias: str,
|
718
|
-
|
771
|
+
fn: Callable[..., Any],
|
719
772
|
*,
|
720
773
|
lifetime: Lifetime = Lifetime.TRANSIENT
|
721
774
|
) -> bool:
|
@@ -726,7 +779,7 @@ class Container:
|
|
726
779
|
----------
|
727
780
|
alias : str
|
728
781
|
The alias to register the function under.
|
729
|
-
|
782
|
+
fn : Callable[..., Any]
|
730
783
|
The function or factory to register.
|
731
784
|
lifetime : Lifetime, optional
|
732
785
|
The lifetime of the function registration (default is TRANSIENT).
|
@@ -763,10 +816,10 @@ class Container:
|
|
763
816
|
self.__ensureAliasType(alias)
|
764
817
|
|
765
818
|
# Validate that the function is callable
|
766
|
-
self.__ensureIsCallable(
|
819
|
+
self.__ensureIsCallable(fn)
|
767
820
|
|
768
821
|
# Inspect the function signature
|
769
|
-
params = ReflectionCallable(
|
822
|
+
params = ReflectionCallable(fn).getDependencies()
|
770
823
|
|
771
824
|
# If the function requires arguments, only allow TRANSIENT
|
772
825
|
if (len(params.resolved) + len(params.unresolved)) > 0 and lifetime != Lifetime.TRANSIENT:
|
@@ -779,7 +832,7 @@ class Container:
|
|
779
832
|
|
780
833
|
# Register the function with the specified alias and lifetime
|
781
834
|
self.__bindings[alias] = Binding(
|
782
|
-
function=
|
835
|
+
function=fn,
|
783
836
|
lifetime=lifetime,
|
784
837
|
alias=alias
|
785
838
|
)
|
@@ -819,8 +872,8 @@ class Container:
|
|
819
872
|
def make(
|
820
873
|
self,
|
821
874
|
abstract_or_alias: Any,
|
822
|
-
*args,
|
823
|
-
**kwargs
|
875
|
+
*args: tuple,
|
876
|
+
**kwargs: dict
|
824
877
|
) -> Any:
|
825
878
|
"""
|
826
879
|
Resolves and returns an instance of the requested service.
|
@@ -844,11 +897,341 @@ class Container:
|
|
844
897
|
OrionisContainerException
|
845
898
|
If the requested service is not registered in the container.
|
846
899
|
"""
|
847
|
-
|
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:
|
848
905
|
raise OrionisContainerException(
|
849
906
|
f"The requested service '{abstract_or_alias}' is not registered in the container."
|
850
907
|
)
|
851
908
|
|
852
|
-
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.
|
853
1019
|
|
854
|
-
|
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
|