orionis 0.443.0__tar.gz → 0.445.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.443.0/orionis.egg-info → orionis-0.445.0}/PKG-INFO +1 -1
- orionis-0.445.0/orionis/console/args/argument.py +343 -0
- orionis-0.445.0/orionis/console/args/enums/actions.py +43 -0
- orionis-0.445.0/orionis/console/commands/version.py +46 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/application.py +0 -2
- orionis-0.445.0/orionis/foundation/providers/testing_provider.py +82 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/core/unit_test.py +134 -5
- orionis-0.445.0/orionis/test/kernel.py +79 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/workers.py +2 -2
- {orionis-0.443.0 → orionis-0.445.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.443.0 → orionis-0.445.0}/orionis.egg-info/SOURCES.txt +5 -13
- {orionis-0.443.0 → orionis-0.445.0}/tests/example/test_example.py +163 -173
- orionis-0.443.0/orionis/console/commands/version.py +0 -31
- orionis-0.443.0/orionis/foundation/providers/path_resolver_provider.py +0 -43
- orionis-0.443.0/orionis/foundation/providers/testing_provider.py +0 -45
- orionis-0.443.0/orionis/services/paths/contracts/resolver.py +0 -51
- orionis-0.443.0/orionis/services/paths/exceptions/__init__.py +0 -7
- orionis-0.443.0/orionis/services/paths/exceptions/exception.py +0 -19
- orionis-0.443.0/orionis/services/paths/exceptions/file.py +0 -19
- orionis-0.443.0/orionis/services/paths/resolver.py +0 -95
- orionis-0.443.0/orionis/support/facades/path_resolver.py +0 -15
- orionis-0.443.0/orionis/test/kernel.py +0 -132
- orionis-0.443.0/tests/services/path/test_services_resolver.py +0 -112
- orionis-0.443.0/tests/testing/validators/__init__.py +0 -0
- orionis-0.443.0/tests/testing/view/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/LICENCE +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/MANIFEST.in +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/README.md +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/app.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/__init__.py +0 -0
- {orionis-0.443.0/orionis/console/arguments → orionis-0.445.0/orionis/console/args}/__init__.py +0 -0
- {orionis-0.443.0/orionis/console/base → orionis-0.445.0/orionis/console/args/enums}/__init__.py +0 -0
- {orionis-0.443.0/orionis/console/arguments → orionis-0.445.0/orionis/console/args}/parser.py +0 -0
- {orionis-0.443.0/orionis/console/base/contracts → orionis-0.445.0/orionis/console/base}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/base/command.py +0 -0
- {orionis-0.443.0/orionis/console/dumper → orionis-0.445.0/orionis/console/base/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/base/contracts/command.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/core/reactor.py +0 -0
- {orionis-0.443.0/orionis/console/dumper/contracts → orionis-0.445.0/orionis/console/dumper}/__init__.py +0 -0
- {orionis-0.443.0/orionis/console/dynamic → orionis-0.445.0/orionis/console/dumper/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.443.0/orionis/console/dynamic/contracts → orionis-0.445.0/orionis/console/dynamic}/__init__.py +0 -0
- {orionis-0.443.0/orionis/console/output → orionis-0.445.0/orionis/console/dynamic/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/kernel.py +0 -0
- {orionis-0.443.0/orionis/console/output/contracts → orionis-0.445.0/orionis/console/output}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/output/console.py +0 -0
- {orionis-0.443.0/orionis/container → orionis-0.445.0/orionis/console/output/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.443.0/orionis/container/context → orionis-0.445.0/orionis/container}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/container.py +0 -0
- {orionis-0.443.0/orionis/container/contracts → orionis-0.445.0/orionis/container/context}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.443.0/orionis/container/entities → orionis-0.445.0/orionis/container/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/contracts/resolver.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.443.0/orionis/container/facades → orionis-0.445.0/orionis/container/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.443.0/orionis/container/providers → orionis-0.445.0/orionis/container/facades}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.443.0/orionis/container/resolver → orionis-0.445.0/orionis/container/providers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.443.0/orionis/foundation → orionis-0.445.0/orionis/container/resolver}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/resolver/resolver.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.443.0/orionis/foundation/config → orionis-0.445.0/orionis/foundation}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/app → orionis-0.445.0/orionis/foundation/config}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/app/entities → orionis-0.445.0/orionis/foundation/config/app}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/auth → orionis-0.445.0/orionis/foundation/config/app/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/auth/entities → orionis-0.445.0/orionis/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/cache → orionis-0.445.0/orionis/foundation/config/auth/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/cache/entities → orionis-0.445.0/orionis/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/cors → orionis-0.445.0/orionis/foundation/config/cache/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/cors/entities → orionis-0.445.0/orionis/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/database → orionis-0.445.0/orionis/foundation/config/cors/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/database/entities → orionis-0.445.0/orionis/foundation/config/database}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/filesystems → orionis-0.445.0/orionis/foundation/config/database/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/filesystems/entitites → orionis-0.445.0/orionis/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/logging → orionis-0.445.0/orionis/foundation/config/filesystems/entitites}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/logging/entities → orionis-0.445.0/orionis/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/mail → orionis-0.445.0/orionis/foundation/config/logging/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/mail/entities → orionis-0.445.0/orionis/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/queue → orionis-0.445.0/orionis/foundation/config/mail/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/queue/entities → orionis-0.445.0/orionis/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/roots → orionis-0.445.0/orionis/foundation/config/queue/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/session → orionis-0.445.0/orionis/foundation/config/roots}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/session/entities → orionis-0.445.0/orionis/foundation/config/session}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/session/helpers → orionis-0.445.0/orionis/foundation/config/session/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/testing → orionis-0.445.0/orionis/foundation/config/session/helpers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.443.0/orionis/foundation/config/testing/entities → orionis-0.445.0/orionis/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.443.0/orionis/foundation/contracts → orionis-0.445.0/orionis/foundation/config/testing/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.443.0/orionis/foundation/providers → orionis-0.445.0/orionis/foundation/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.443.0/orionis/metadata → orionis-0.445.0/orionis/foundation/providers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.443.0/orionis/services → orionis-0.445.0/orionis/metadata}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/metadata/package.py +0 -0
- {orionis-0.443.0/orionis/services/asynchrony → orionis-0.445.0/orionis/services}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/asynchrony/contracts → orionis-0.445.0/orionis/services/asynchrony}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/environment → orionis-0.445.0/orionis/services/asynchrony/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.443.0/orionis/services/environment/contracts → orionis-0.445.0/orionis/services/environment}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/environment/core → orionis-0.445.0/orionis/services/environment/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.443.0/orionis/services/environment/dynamic → orionis-0.445.0/orionis/services/environment/core}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.443.0/orionis/services/environment/helpers → orionis-0.445.0/orionis/services/environment/dynamic}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.443.0/orionis/services/environment/key → orionis-0.445.0/orionis/services/environment/helpers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.443.0/orionis/services/inspirational → orionis-0.445.0/orionis/services/environment/key}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.443.0/orionis/services/introspection → orionis-0.445.0/orionis/services/inspirational}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/abstract → orionis-0.445.0/orionis/services/introspection}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/abstract/contracts → orionis-0.445.0/orionis/services/introspection/abstract}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/callables → orionis-0.445.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/callables/contracts → orionis-0.445.0/orionis/services/introspection/callables}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/concretes → orionis-0.445.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/concretes/contracts → orionis-0.445.0/orionis/services/introspection/concretes}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/dependencies → orionis-0.445.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/dependencies/contracts → orionis-0.445.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/dependencies/entities → orionis-0.445.0/orionis/services/introspection/dependencies/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/instances → orionis-0.445.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/entities/callable_dependencies.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/entities/known_dependencies.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/instances/contracts → orionis-0.445.0/orionis/services/introspection/instances}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/modules → orionis-0.445.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/modules/contracts → orionis-0.445.0/orionis/services/introspection/modules}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/introspection/objects → orionis-0.445.0/orionis/services/introspection/modules/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/log → orionis-0.445.0/orionis/services/introspection/objects}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.443.0/orionis/services/log/contracts → orionis-0.445.0/orionis/services/log}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/log/handlers → orionis-0.445.0/orionis/services/log/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.443.0/orionis/services/paths → orionis-0.445.0/orionis/services/log/handlers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.443.0/orionis/services/paths/contracts → orionis-0.445.0/orionis/services/system}/__init__.py +0 -0
- {orionis-0.443.0/orionis/services/system → orionis-0.445.0/orionis/services/system/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.443.0/orionis/services/system/contracts → orionis-0.445.0/orionis/services/system/runtime}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.443.0/orionis/services/system/runtime → orionis-0.445.0/orionis/support}/__init__.py +0 -0
- {orionis-0.443.0/orionis/support → orionis-0.445.0/orionis/support/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.443.0/orionis/support/entities → orionis-0.445.0/orionis/support/facades}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.443.0/orionis/support/facades → orionis-0.445.0/orionis/support/formatter}/__init__.py +0 -0
- {orionis-0.443.0/orionis/support/formatter → orionis-0.445.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
- {orionis-0.443.0/orionis/support/formatter/exceptions → orionis-0.445.0/orionis/support/formatter/exceptions/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.443.0/orionis/support/formatter/exceptions/contracts → orionis-0.445.0/orionis/support/patterns}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.443.0/orionis/support/patterns → orionis-0.445.0/orionis/support/standard}/__init__.py +0 -0
- {orionis-0.443.0/orionis/support/standard → orionis-0.445.0/orionis/support/standard/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.443.0/orionis/support/standard/contracts → orionis-0.445.0/orionis/test}/__init__.py +0 -0
- {orionis-0.443.0/orionis/test → orionis-0.445.0/orionis/test/cases}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.443.0/orionis/test/cases → orionis-0.445.0/orionis/test/contracts}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.443.0/orionis/test/contracts → orionis-0.445.0/orionis/test/core}/__init__.py +0 -0
- {orionis-0.443.0/orionis/test/core → orionis-0.445.0/orionis/test/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.443.0/orionis/test/entities → orionis-0.445.0/orionis/test/output}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.443.0/orionis/test/output → orionis-0.445.0/orionis/test/records}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.443.0/orionis/test/records → orionis-0.445.0/orionis/test/view}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis/test/view/render.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/setup.cfg +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/setup.py +0 -0
- {orionis-0.443.0/orionis/test/view → orionis-0.445.0/tests}/__init__.py +0 -0
- {orionis-0.443.0/tests → orionis-0.445.0/tests/container}/__init__.py +0 -0
- {orionis-0.443.0/tests/container → orionis-0.445.0/tests/container/context}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.443.0/tests/container/context → orionis-0.445.0/tests/container/core}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.443.0/tests/container/core → orionis-0.445.0/tests/container/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.443.0/tests/container/entities → orionis-0.445.0/tests/container/enums}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.443.0/tests/container/enums → orionis-0.445.0/tests/container/facades}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.443.0/tests/container/facades → orionis-0.445.0/tests/container/mocks}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.443.0/tests/container/mocks → orionis-0.445.0/tests/container/providers}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.443.0/tests/container/providers → orionis-0.445.0/tests/container/resolver}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/resolver/test_resolver.py +0 -0
- {orionis-0.443.0/tests/container/resolver → orionis-0.445.0/tests/container/validators}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.443.0/tests/container/validators → orionis-0.445.0/tests/example}/__init__.py +0 -0
- {orionis-0.443.0/tests/example → orionis-0.445.0/tests/foundation}/__init__.py +0 -0
- {orionis-0.443.0/tests/foundation → orionis-0.445.0/tests/foundation/config}/__init__.py +0 -0
- {orionis-0.443.0/tests/foundation/config → orionis-0.445.0/tests/foundation/config/app}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.443.0/tests/foundation/config/app → orionis-0.445.0/tests/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.443.0/tests/foundation/config/auth → orionis-0.445.0/tests/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.443.0/tests/foundation/config/cache → orionis-0.445.0/tests/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.443.0/tests/foundation/config/cors → orionis-0.445.0/tests/foundation/config/database}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.443.0/tests/foundation/config/database → orionis-0.445.0/tests/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.443.0/tests/foundation/config/filesystems → orionis-0.445.0/tests/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.443.0/tests/foundation/config/logging → orionis-0.445.0/tests/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.443.0/tests/foundation/config/mail → orionis-0.445.0/tests/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.443.0/tests/foundation/config/queue → orionis-0.445.0/tests/foundation/config/root}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.443.0/tests/foundation/config/root → orionis-0.445.0/tests/foundation/config/session}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.443.0/tests/foundation/config/session → orionis-0.445.0/tests/foundation/config/startup}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.443.0/tests/foundation/config/startup → orionis-0.445.0/tests/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.443.0/tests/foundation/config/testing → orionis-0.445.0/tests/metadata}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.443.0/tests/metadata → orionis-0.445.0/tests/services}/__init__.py +0 -0
- {orionis-0.443.0/tests/services → orionis-0.445.0/tests/services/asynchrony}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.443.0/tests/services/asynchrony → orionis-0.445.0/tests/services/environment}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.443.0/tests/services/environment → orionis-0.445.0/tests/services/introspection}/__init__.py +0 -0
- {orionis-0.443.0/tests/services/introspection → orionis-0.445.0/tests/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.443.0/tests/services/introspection/dependencies → orionis-0.445.0/tests/services/introspection/dependencies/mocks}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.443.0/tests/services/introspection/dependencies/mocks → orionis-0.445.0/tests/services/introspection/reflection}/__init__.py +0 -0
- {orionis-0.443.0/tests/services/introspection/reflection → orionis-0.445.0/tests/services/introspection/reflection/mock}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.443.0/tests/services/introspection/reflection/mock → orionis-0.445.0/tests/services/log}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.443.0/tests/services/log → orionis-0.445.0/tests/services/system}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.443.0/tests/services/path → orionis-0.445.0/tests/support}/__init__.py +0 -0
- {orionis-0.443.0/tests/services/system → orionis-0.445.0/tests/support/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.443.0/tests/support → orionis-0.445.0/tests/support/patterns}/__init__.py +0 -0
- {orionis-0.443.0/tests/support/entities → orionis-0.445.0/tests/support/patterns/singleton}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.443.0/tests/support/patterns → orionis-0.445.0/tests/support/standard}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.443.0/tests/support/patterns/singleton → orionis-0.445.0/tests/support/wrapper}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.443.0/tests/support/standard → orionis-0.445.0/tests/testing}/__init__.py +0 -0
- {orionis-0.443.0/tests/support/wrapper → orionis-0.445.0/tests/testing/cases}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.443.0/tests/testing → orionis-0.445.0/tests/testing/entities}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.443.0/tests/testing/cases → orionis-0.445.0/tests/testing/enums}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.443.0/tests/testing/entities → orionis-0.445.0/tests/testing/output}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.443.0/tests/testing/enums → orionis-0.445.0/tests/testing/records}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/test_testing_unit.py +0 -0
- {orionis-0.443.0/tests/testing/output → orionis-0.445.0/tests/testing/validators}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.443.0/tests/testing/records → orionis-0.445.0/tests/testing/view}/__init__.py +0 -0
- {orionis-0.443.0 → orionis-0.445.0}/tests/testing/view/test_render.py +0 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from dataclasses import dataclass, field
|
|
3
|
+
from typing import Any, Optional, List, Type, Union, Dict
|
|
4
|
+
from orionis.console.args.enums.actions import ArgumentAction
|
|
5
|
+
from orionis.console.exceptions.cli_orionis_value_error import CLIOrionisValueError
|
|
6
|
+
|
|
7
|
+
@dataclass(kw_only=True, frozen=True, slots=True)
|
|
8
|
+
class CLIArgument:
|
|
9
|
+
"""
|
|
10
|
+
Represents a command-line argument for argparse.
|
|
11
|
+
|
|
12
|
+
This class encapsulates all the properties and validation logic needed to create
|
|
13
|
+
a command-line argument that can be added to an argparse ArgumentParser. It provides
|
|
14
|
+
automatic validation, type checking, and smart defaults for common argument patterns.
|
|
15
|
+
|
|
16
|
+
Attributes
|
|
17
|
+
----------
|
|
18
|
+
flags : List[str]
|
|
19
|
+
List of flags for the argument (e.g., ['--export', '-e']). Must contain at least one flag.
|
|
20
|
+
type : Type
|
|
21
|
+
Data type of the argument. Can be any Python type or custom type.
|
|
22
|
+
help : str
|
|
23
|
+
Description of the argument. If not provided, will be auto-generated from the primary flag.
|
|
24
|
+
default : Any, optional
|
|
25
|
+
Default value for the argument.
|
|
26
|
+
choices : List[Any], optional
|
|
27
|
+
List of valid values for the argument. All choices must match the specified type.
|
|
28
|
+
required : bool, default False
|
|
29
|
+
Whether the argument is required. Only applies to optional arguments.
|
|
30
|
+
metavar : str, optional
|
|
31
|
+
Metavar for displaying in help messages. Auto-generated from primary flag if not provided.
|
|
32
|
+
dest : str, optional
|
|
33
|
+
Destination name for the argument in the namespace. Auto-generated from primary flag if not provided.
|
|
34
|
+
action : Union[str, ArgumentAction], default ArgumentAction.STORE
|
|
35
|
+
Action to perform with the argument when it's encountered.
|
|
36
|
+
nargs : Union[int, str], optional
|
|
37
|
+
Number of arguments expected (e.g., 1, 2, '+', '*').
|
|
38
|
+
const : Any, optional
|
|
39
|
+
Constant value for store_const or append_const actions.
|
|
40
|
+
|
|
41
|
+
Raises
|
|
42
|
+
------
|
|
43
|
+
CLIOrionisValueError
|
|
44
|
+
If any validation fails during initialization.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
# Required fields
|
|
48
|
+
flags: List[str] = None
|
|
49
|
+
type: Type = None
|
|
50
|
+
help: str = None
|
|
51
|
+
|
|
52
|
+
default: Any = field(
|
|
53
|
+
default_factory = None,
|
|
54
|
+
metadata = {
|
|
55
|
+
"description": "Default value for the argument.",
|
|
56
|
+
"default": None
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
choices: Optional[List[Any]] = field(
|
|
61
|
+
default_factory = None,
|
|
62
|
+
metadata = {
|
|
63
|
+
"description": "List of valid choices for the argument.",
|
|
64
|
+
"default": None
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
required: bool = field(
|
|
69
|
+
default_factory = False,
|
|
70
|
+
metadata = {
|
|
71
|
+
"description": "Indicates if the argument is required.",
|
|
72
|
+
"default": False
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
metavar: Optional[str] = field(
|
|
77
|
+
default_factory = None,
|
|
78
|
+
metadata = {
|
|
79
|
+
"description": "Metavar for displaying in help messages.",
|
|
80
|
+
"default": None
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
dest: Optional[str] = field(
|
|
85
|
+
default_factory = None,
|
|
86
|
+
metadata = {
|
|
87
|
+
"description": "Destination name for the argument in the namespace.",
|
|
88
|
+
"default": None
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
action: Union[str, ArgumentAction] = field(
|
|
93
|
+
default_factory = ArgumentAction.STORE,
|
|
94
|
+
metadata = {
|
|
95
|
+
"description": "Action to perform with the argument.",
|
|
96
|
+
"default": ArgumentAction.STORE.value
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
nargs: Optional[Union[int, str]] = field(
|
|
101
|
+
default_factory = None,
|
|
102
|
+
metadata = {
|
|
103
|
+
"description": "Number of arguments expected (e.g., 1, 2, '+', '*').",
|
|
104
|
+
"default": None
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
const: Any = field(
|
|
109
|
+
default_factory = None,
|
|
110
|
+
metadata = {
|
|
111
|
+
"description": "Constant value for store_const or append_const actions.",
|
|
112
|
+
"default": None
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def __post_init__(self):
|
|
117
|
+
"""
|
|
118
|
+
Validate and normalize all argument attributes after initialization.
|
|
119
|
+
|
|
120
|
+
This method performs comprehensive validation of all argument attributes
|
|
121
|
+
and applies smart defaults where appropriate. It ensures the argument
|
|
122
|
+
configuration is valid for use with argparse.
|
|
123
|
+
|
|
124
|
+
Raises
|
|
125
|
+
------
|
|
126
|
+
CLIOrionisValueError
|
|
127
|
+
If any validation fails or invalid values are provided.
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
# Validate flags - must be provided and non-empty
|
|
131
|
+
if not self.flags:
|
|
132
|
+
raise CLIOrionisValueError(
|
|
133
|
+
"Flags list cannot be empty. Please provide at least one flag (e.g., ['--export', '-e'])"
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
# Convert single string flag to list for consistency
|
|
137
|
+
if isinstance(self.flags, str):
|
|
138
|
+
object.__setattr__(self, 'flags', [self.flags])
|
|
139
|
+
|
|
140
|
+
# Ensure flags is a list
|
|
141
|
+
if not isinstance(self.flags, list):
|
|
142
|
+
raise CLIOrionisValueError("Flags must be a string or a list of strings")
|
|
143
|
+
|
|
144
|
+
# Validate each flag format and ensure they're strings
|
|
145
|
+
for flag in self.flags:
|
|
146
|
+
if not isinstance(flag, str):
|
|
147
|
+
raise CLIOrionisValueError("All flags must be strings")
|
|
148
|
+
|
|
149
|
+
# Check for duplicate flags
|
|
150
|
+
if len(set(self.flags)) != len(self.flags):
|
|
151
|
+
raise CLIOrionisValueError("Duplicate flags are not allowed in the flags list")
|
|
152
|
+
|
|
153
|
+
# Determine primary flag (longest one, or first if only one)
|
|
154
|
+
primary_flag = max(self.flags, key=len) if len(self.flags) > 1 else self.flags[0]
|
|
155
|
+
|
|
156
|
+
# Validate type is actually a type
|
|
157
|
+
if not isinstance(self.type, type):
|
|
158
|
+
raise CLIOrionisValueError("Type must be a valid Python type or custom type class")
|
|
159
|
+
|
|
160
|
+
# Auto-generate help if not provided
|
|
161
|
+
if self.help is None:
|
|
162
|
+
object.__setattr__(self, 'help', f"Argument for {primary_flag}")
|
|
163
|
+
|
|
164
|
+
# Ensure help is a string
|
|
165
|
+
if not isinstance(self.help, str):
|
|
166
|
+
raise CLIOrionisValueError("Help text must be a string")
|
|
167
|
+
|
|
168
|
+
# Validate choices if provided
|
|
169
|
+
if self.choices is not None:
|
|
170
|
+
# Ensure choices is a list
|
|
171
|
+
if not isinstance(self.choices, list):
|
|
172
|
+
raise CLIOrionisValueError("Choices must be provided as a list")
|
|
173
|
+
|
|
174
|
+
# Ensure all choices match the specified type
|
|
175
|
+
if self.type and not all(isinstance(choice, self.type) for choice in self.choices):
|
|
176
|
+
raise CLIOrionisValueError(
|
|
177
|
+
f"All choices must be of type {self.type.__name__}"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# Validate required is boolean
|
|
181
|
+
if not isinstance(self.required, bool):
|
|
182
|
+
raise CLIOrionisValueError("Required field must be a boolean value (True or False)")
|
|
183
|
+
|
|
184
|
+
# Auto-generate metavar if not provided
|
|
185
|
+
if self.metavar is None:
|
|
186
|
+
metavar = primary_flag.lstrip('-').upper().replace('-', '_')
|
|
187
|
+
object.__setattr__(self, 'metavar', metavar)
|
|
188
|
+
|
|
189
|
+
# Ensure metavar is a string
|
|
190
|
+
if not isinstance(self.metavar, str):
|
|
191
|
+
raise CLIOrionisValueError("Metavar must be a string")
|
|
192
|
+
|
|
193
|
+
# Auto-generate dest if not provided
|
|
194
|
+
if self.dest is None:
|
|
195
|
+
dest = primary_flag.lstrip('-').replace('-', '_')
|
|
196
|
+
object.__setattr__(self, 'dest', dest)
|
|
197
|
+
|
|
198
|
+
# Ensure dest is a string
|
|
199
|
+
if not isinstance(self.dest, str):
|
|
200
|
+
raise CLIOrionisValueError("Destination (dest) must be a string")
|
|
201
|
+
|
|
202
|
+
# Ensure dest is a valid Python identifier
|
|
203
|
+
if not self.dest.isidentifier():
|
|
204
|
+
raise CLIOrionisValueError(f"Destination '{self.dest}' is not a valid Python identifier")
|
|
205
|
+
|
|
206
|
+
# Normalize action value
|
|
207
|
+
if self.action is None:
|
|
208
|
+
object.__setattr__(self, 'action', ArgumentAction.STORE.value)
|
|
209
|
+
elif isinstance(self.action, str):
|
|
210
|
+
try:
|
|
211
|
+
action_enum = ArgumentAction(self.action)
|
|
212
|
+
object.__setattr__(self, 'action', action_enum.value)
|
|
213
|
+
except ValueError:
|
|
214
|
+
raise CLIOrionisValueError(f"Invalid action '{self.action}'. Please use a valid ArgumentAction value")
|
|
215
|
+
elif isinstance(self.action, ArgumentAction):
|
|
216
|
+
object.__setattr__(self, 'action', self.action.value)
|
|
217
|
+
else:
|
|
218
|
+
raise CLIOrionisValueError("Action must be a string or an ArgumentAction enum value")
|
|
219
|
+
|
|
220
|
+
# Special handling for boolean types
|
|
221
|
+
if self.type is bool:
|
|
222
|
+
|
|
223
|
+
# Auto-configure action based on default value
|
|
224
|
+
action = ArgumentAction.STORE_TRUE.value if not self.default else ArgumentAction.STORE_FALSE.value
|
|
225
|
+
object.__setattr__(self, 'action', action)
|
|
226
|
+
|
|
227
|
+
# argparse ignores type with store_true/false actions
|
|
228
|
+
object.__setattr__(self, 'type', None)
|
|
229
|
+
|
|
230
|
+
# Special handling for list types
|
|
231
|
+
if self.type is list and self.nargs is None:
|
|
232
|
+
|
|
233
|
+
# Auto-configure for accepting multiple values
|
|
234
|
+
object.__setattr__(self, 'nargs', '+')
|
|
235
|
+
object.__setattr__(self, 'type', str)
|
|
236
|
+
|
|
237
|
+
def addToParser(self, parser: argparse.ArgumentParser) -> None:
|
|
238
|
+
"""
|
|
239
|
+
Add this argument to an argparse ArgumentParser instance.
|
|
240
|
+
|
|
241
|
+
This method integrates the CLIArgument configuration with an argparse
|
|
242
|
+
ArgumentParser by building the appropriate keyword arguments and adding
|
|
243
|
+
the argument with all its flags and options. The method handles all
|
|
244
|
+
necessary conversions and validations to ensure compatibility with
|
|
245
|
+
argparse's expected format.
|
|
246
|
+
|
|
247
|
+
Parameters
|
|
248
|
+
----------
|
|
249
|
+
parser : argparse.ArgumentParser
|
|
250
|
+
The ArgumentParser instance to which this argument will be added.
|
|
251
|
+
The parser must be a valid argparse.ArgumentParser object.
|
|
252
|
+
|
|
253
|
+
Returns
|
|
254
|
+
-------
|
|
255
|
+
None
|
|
256
|
+
This method does not return any value. It modifies the provided
|
|
257
|
+
parser by adding the argument configuration to it.
|
|
258
|
+
|
|
259
|
+
Raises
|
|
260
|
+
------
|
|
261
|
+
CLIOrionisValueError
|
|
262
|
+
If there's an error adding the argument to the parser, such as
|
|
263
|
+
conflicting argument names, invalid configurations, or argparse
|
|
264
|
+
internal errors during argument registration.
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
# Build the keyword arguments dictionary for argparse compatibility
|
|
268
|
+
# This filters out None values and handles special argument types
|
|
269
|
+
kwargs = self._buildParserKwargs()
|
|
270
|
+
|
|
271
|
+
# Attempt to add the argument to the parser with all flags and options
|
|
272
|
+
try:
|
|
273
|
+
# Use unpacking to pass all flags as positional arguments
|
|
274
|
+
# and all configuration options as keyword arguments
|
|
275
|
+
parser.add_argument(*self.flags, **kwargs)
|
|
276
|
+
|
|
277
|
+
# Catch any exception that occurs during argument addition
|
|
278
|
+
# and wrap it in our custom exception for consistent error handling
|
|
279
|
+
except Exception as e:
|
|
280
|
+
raise CLIOrionisValueError(f"Error adding argument {self.flags}: {e}")
|
|
281
|
+
|
|
282
|
+
def _buildParserKwargs(self) -> Dict[str, Any]:
|
|
283
|
+
"""
|
|
284
|
+
Build the keyword arguments dictionary for argparse compatibility.
|
|
285
|
+
|
|
286
|
+
This private method constructs a dictionary of keyword arguments that will be
|
|
287
|
+
passed to argparse's add_argument method. It handles the conversion from
|
|
288
|
+
CLIArgument attributes to argparse-compatible parameters, filtering out None
|
|
289
|
+
values and applying special handling for different argument types (optional
|
|
290
|
+
vs positional arguments).
|
|
291
|
+
|
|
292
|
+
The method ensures that the resulting kwargs dictionary contains only valid
|
|
293
|
+
argparse parameters with appropriate values, preventing errors during argument
|
|
294
|
+
registration with the ArgumentParser.
|
|
295
|
+
|
|
296
|
+
Returns
|
|
297
|
+
-------
|
|
298
|
+
Dict[str, Any]
|
|
299
|
+
A dictionary containing keyword arguments ready to be unpacked and passed
|
|
300
|
+
to argparse.ArgumentParser.add_argument(). The dictionary includes only
|
|
301
|
+
non-None values and excludes parameters that are invalid for the specific
|
|
302
|
+
argument type (e.g., 'required' parameter for positional arguments).
|
|
303
|
+
|
|
304
|
+
Notes
|
|
305
|
+
-----
|
|
306
|
+
This method distinguishes between optional arguments (those starting with '-')
|
|
307
|
+
and positional arguments, applying different validation rules for each type.
|
|
308
|
+
Positional arguments cannot use the 'required' parameter, so it's automatically
|
|
309
|
+
removed from the kwargs if present.
|
|
310
|
+
"""
|
|
311
|
+
|
|
312
|
+
# Determine argument type by checking if any flag starts with a dash
|
|
313
|
+
# Optional arguments have flags like '--export' or '-e'
|
|
314
|
+
# Positional arguments have flags without dashes like 'filename'
|
|
315
|
+
is_optional = any(flag.startswith('-') for flag in self.flags)
|
|
316
|
+
is_positional = not is_optional
|
|
317
|
+
|
|
318
|
+
# Build the base kwargs dictionary with all possible argparse parameters
|
|
319
|
+
# Each key corresponds to a parameter accepted by argparse.add_argument()
|
|
320
|
+
kwargs = {
|
|
321
|
+
"help": self.help, # Help text displayed in usage messages
|
|
322
|
+
"default": self.default, # Default value when argument not provided
|
|
323
|
+
"required": self.required and is_optional, # Whether argument is mandatory
|
|
324
|
+
"metavar": self.metavar, # Name displayed in help messages
|
|
325
|
+
"dest": self.dest, # Attribute name in the parsed namespace
|
|
326
|
+
"choices": self.choices, # List of valid values for the argument
|
|
327
|
+
"action": self.action, # Action to take when argument is encountered
|
|
328
|
+
"nargs": self.nargs, # Number of command-line arguments expected
|
|
329
|
+
"type": self.type, # Type to convert the argument to
|
|
330
|
+
"const": self.const # Constant value for certain actions
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
# Filter out None values to prevent passing invalid parameters to argparse
|
|
334
|
+
# argparse will raise errors if None values are explicitly passed for certain parameters
|
|
335
|
+
kwargs = {k: v for k, v in kwargs.items() if v is not None}
|
|
336
|
+
|
|
337
|
+
# Remove 'required' parameter for positional arguments since it's not supported
|
|
338
|
+
# Positional arguments are inherently required by argparse's design
|
|
339
|
+
if is_positional and 'required' in kwargs:
|
|
340
|
+
del kwargs['required']
|
|
341
|
+
|
|
342
|
+
# Return the cleaned and validated kwargs dictionary
|
|
343
|
+
return kwargs
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
class ArgumentAction(Enum):
|
|
4
|
+
"""
|
|
5
|
+
Enumeration for valid argparse action types.
|
|
6
|
+
|
|
7
|
+
This enum provides a comprehensive list of all standard action types
|
|
8
|
+
that can be used with Python's argparse module when defining command
|
|
9
|
+
line arguments. Each enum member corresponds to a specific behavior
|
|
10
|
+
for how argument values should be processed and stored.
|
|
11
|
+
|
|
12
|
+
Returns
|
|
13
|
+
-------
|
|
14
|
+
str
|
|
15
|
+
The string value representing the argparse action type.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
# Store the argument value directly
|
|
19
|
+
STORE = "store"
|
|
20
|
+
|
|
21
|
+
# Store a constant value when the argument is specified
|
|
22
|
+
STORE_CONST = "store_const"
|
|
23
|
+
|
|
24
|
+
# Store True when the argument is specified
|
|
25
|
+
STORE_TRUE = "store_true"
|
|
26
|
+
|
|
27
|
+
# Store False when the argument is specified
|
|
28
|
+
STORE_FALSE = "store_false"
|
|
29
|
+
|
|
30
|
+
# Append each argument value to a list
|
|
31
|
+
APPEND = "append"
|
|
32
|
+
|
|
33
|
+
# Append a constant value to a list when the argument is specified
|
|
34
|
+
APPEND_CONST = "append_const"
|
|
35
|
+
|
|
36
|
+
# Count the number of times the argument is specified
|
|
37
|
+
COUNT = "count"
|
|
38
|
+
|
|
39
|
+
# Display help message and exit
|
|
40
|
+
HELP = "help"
|
|
41
|
+
|
|
42
|
+
# Display version information and exit
|
|
43
|
+
VERSION = "version"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from orionis.console.base.command import BaseCommand
|
|
2
|
+
from orionis.console.exceptions import CLIOrionisRuntimeError
|
|
3
|
+
from orionis.metadata.framework import VERSION
|
|
4
|
+
|
|
5
|
+
class VersionCommand(BaseCommand):
|
|
6
|
+
"""
|
|
7
|
+
Command class to display the current version of the Orionis framework.
|
|
8
|
+
|
|
9
|
+
This command prints the version number of the framework in use.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
signature: str = "version"
|
|
13
|
+
|
|
14
|
+
description: str = "Prints the version of the framework in use."
|
|
15
|
+
|
|
16
|
+
def handle(self) -> None:
|
|
17
|
+
"""
|
|
18
|
+
Executes the version command to display the current Orionis framework version.
|
|
19
|
+
|
|
20
|
+
This method retrieves the version number from the framework metadata and prints it
|
|
21
|
+
in a formatted, bold, and successful style to the console. If an unexpected error occurs
|
|
22
|
+
during execution, it raises a CLIOrionisRuntimeError with the original exception message.
|
|
23
|
+
|
|
24
|
+
Parameters
|
|
25
|
+
----------
|
|
26
|
+
None
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
None
|
|
31
|
+
This method does not return any value. It outputs the version information to the console.
|
|
32
|
+
|
|
33
|
+
Raises
|
|
34
|
+
------
|
|
35
|
+
CLIOrionisRuntimeError
|
|
36
|
+
If an unexpected error occurs during execution, a CLIOrionisRuntimeError is raised
|
|
37
|
+
with the original exception message.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
# Print the Orionis framework version in a bold, success style
|
|
41
|
+
try:
|
|
42
|
+
self.textSuccessBold(f"Orionis Framework v{VERSION}")
|
|
43
|
+
|
|
44
|
+
# Raise a custom runtime error if any exception occurs
|
|
45
|
+
except Exception as e:
|
|
46
|
+
raise CLIOrionisRuntimeError(f"An unexpected error occurred: {e}") from e
|
|
@@ -174,7 +174,6 @@ class Application(Container, IApplication):
|
|
|
174
174
|
# Import core framework providers
|
|
175
175
|
from orionis.foundation.providers.console_provider import ConsoleProvider
|
|
176
176
|
from orionis.foundation.providers.dumper_provider import DumperProvider
|
|
177
|
-
from orionis.foundation.providers.path_resolver_provider import PathResolverProvider
|
|
178
177
|
from orionis.foundation.providers.progress_bar_provider import ProgressBarProvider
|
|
179
178
|
from orionis.foundation.providers.workers_provider import WorkersProvider
|
|
180
179
|
from orionis.foundation.providers.testing_provider import TestingProvider
|
|
@@ -183,7 +182,6 @@ class Application(Container, IApplication):
|
|
|
183
182
|
core_providers = [
|
|
184
183
|
ConsoleProvider,
|
|
185
184
|
DumperProvider,
|
|
186
|
-
PathResolverProvider,
|
|
187
185
|
ProgressBarProvider,
|
|
188
186
|
WorkersProvider,
|
|
189
187
|
LoggerProvider,
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from orionis.container.providers.service_provider import ServiceProvider
|
|
2
|
+
from orionis.test.contracts.unit_test import IUnitTest
|
|
3
|
+
from orionis.test.core.unit_test import UnitTest
|
|
4
|
+
from orionis.foundation.config.testing.entities.testing import Testing
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
class TestingProvider(ServiceProvider):
|
|
8
|
+
"""
|
|
9
|
+
Provides and registers the unit testing environment service in the application container.
|
|
10
|
+
|
|
11
|
+
This provider integrates a native unit testing framework for Orionis,
|
|
12
|
+
enabling advanced testing features and registering the service as a singleton
|
|
13
|
+
within the application's dependency injection container.
|
|
14
|
+
|
|
15
|
+
Attributes
|
|
16
|
+
----------
|
|
17
|
+
app : Application
|
|
18
|
+
The application container instance where services are registered.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
def register(self) -> None:
|
|
22
|
+
"""
|
|
23
|
+
Register the unit testing service in the application container.
|
|
24
|
+
|
|
25
|
+
Registers the IUnitTest interface to the UnitTest implementation as a singleton,
|
|
26
|
+
with the alias "core.orionis.testing".
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
None
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
# Create a Testing configuration instance from the application config
|
|
34
|
+
config = Testing(**self.app.config('testing'))
|
|
35
|
+
|
|
36
|
+
# Create a UnitTest instance
|
|
37
|
+
unit_test = UnitTest(
|
|
38
|
+
app=self.app,
|
|
39
|
+
storage=self.app.path('storage_testing')
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# Configure the UnitTest instance with settings from the Testing configuration
|
|
43
|
+
unit_test.configure(
|
|
44
|
+
verbosity=config.verbosity,
|
|
45
|
+
execution_mode=config.execution_mode,
|
|
46
|
+
max_workers=config.max_workers,
|
|
47
|
+
fail_fast=config.fail_fast,
|
|
48
|
+
print_result=config.print_result,
|
|
49
|
+
throw_exception=config.throw_exception,
|
|
50
|
+
persistent=config.persistent,
|
|
51
|
+
persistent_driver=config.persistent_driver,
|
|
52
|
+
web_report=config.web_report
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# Discover tests based on the configuration
|
|
56
|
+
unit_test.discoverTests(
|
|
57
|
+
base_path=config.base_path,
|
|
58
|
+
folder_path=config.folder_path,
|
|
59
|
+
pattern=config.pattern,
|
|
60
|
+
test_name_pattern=config.test_name_pattern,
|
|
61
|
+
tags=config.tags
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Register the UnitTest instance in the application container
|
|
65
|
+
self.app.instance(IUnitTest, unit_test, alias="core.orionis.testing")
|
|
66
|
+
|
|
67
|
+
def boot(self) -> None:
|
|
68
|
+
"""
|
|
69
|
+
Perform post-registration initialization if required.
|
|
70
|
+
|
|
71
|
+
This method is intended for any setup needed after service registration.
|
|
72
|
+
Currently, no additional initialization is performed.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
None
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
# Ensure directory for testing storage exists
|
|
80
|
+
storage_path = self.app.path('storage_testing')
|
|
81
|
+
if not os.path.exists(storage_path):
|
|
82
|
+
os.makedirs(storage_path, exist_ok=True)
|