orionis 0.292.0__tar.gz → 0.294.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.292.0/orionis.egg-info → orionis-0.294.0}/PKG-INFO +1 -1
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/testing/entities/testing.py +20 -6
- {orionis-0.292.0 → orionis-0.294.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/test_unit.py +168 -25
- orionis-0.294.0/orionis/test/view/render.py +128 -0
- {orionis-0.292.0 → orionis-0.294.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.292.0 → orionis-0.294.0}/orionis.egg-info/SOURCES.txt +1 -1
- {orionis-0.292.0 → orionis-0.294.0}/tests/example/test_example.py +1 -1
- orionis-0.292.0/orionis/test/view/index.html +0 -533
- {orionis-0.292.0 → orionis-0.294.0}/LICENCE +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/MANIFEST.in +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/README.md +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_application.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/container.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/container_integrity.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/lifetimes.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_container/resolve.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/application.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/config/config.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/base/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/base/command.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/command_filter.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/kernel.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/output/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/output/console.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/output/executor.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/parser.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/console/task_manager.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/container/container.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/container/container_integrity.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/files/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/log/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/providers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/providers/service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/config/config_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/files/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/log/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/services/log/log_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/support/exception_parse.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_contracts/support/reflection.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/app_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/commands/commands_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/config/config_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/environment/environment_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/files/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/files/path_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/log/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_facades/log/log_facade.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/console/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/providers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/config/config_service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/files/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/files/paths_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/log/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/log/log_service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_providers/service_provider.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/commands/scheduler_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/config/config_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/log/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/_services/log/log_service.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/application.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/base/command.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/command_filter.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/commands/cache_clear.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/commands/schedule_work.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/dumper/dump_die.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/kernel.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/output/console.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/output/progress_bar.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/output/styles.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/console/parser.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/contracts/config.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/exceptions/integrity.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/metadata/package.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/patterns/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/patterns/singleton/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/patterns/singleton/meta_class.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/contracts/types.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/dot_env.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/environment/types.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/abstracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/abstracts/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/abstracts/entities/abstract_class_attributes.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/abstracts/reflect_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/contracts/reflect_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/exceptions/types.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/helpers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/helpers/functions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/parsers/serializer.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/contracts/resolver.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/paths/resolver.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/contracts/std.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/exceptions/std_value_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/standard/std.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/runtime_imports.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/wrapper/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/wrapper/dicts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/services/wrapper/dicts/dot_dict.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/container_integrity.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/contracts/reflection.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/contracts/reflexion_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/helpers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/helpers/functions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/contracts/reflection_instance.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/entities/class_attributes.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/entities/class_method.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/entities/class_parsed.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/entities/class_property.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/instances/reflection_instance.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflect_decorators.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflection.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflexion_concrete.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflexion_concrete_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflexion_instance_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflexion_module.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/support/introspection/reflexion_module_with_classname.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/cases/test_async.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/cases/test_case.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/cases/test_sync.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/entities/test_result.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/enums/test_mode.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/enums/test_status.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/test_config_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/exceptions/test_value_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/logs/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/logs/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/logs/contracts/history.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/logs/history.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/output/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/output/contracts/dumper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/contracts/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/contracts/test_suite.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/contracts/test_unit.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/suites/test_suite.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis/unittesting.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/setup.cfg +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/setup.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/example/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/exceptions/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/exceptions/test_foundation_config_exceptions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/patterns/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/patterns/singleton/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/parsers/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/parsers/mocks/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/path/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/path/test_services_resolver.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/standard/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/standard/test_services_std.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/wrapper/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/services/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/fake_reflect_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/fake_reflect_instance.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/test_reflect_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/test_reflect_instance.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/test_reflection_concrete.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/testing/__init__.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/testing/test_testing_result.py +0 -0
- {orionis-0.292.0 → orionis-0.294.0}/tests/testing/test_testing_unit.py +0 -0
@@ -145,6 +145,15 @@ class Testing:
|
|
145
145
|
}
|
146
146
|
)
|
147
147
|
|
148
|
+
web_report: bool = field(
|
149
|
+
default=False,
|
150
|
+
metadata={
|
151
|
+
"description": "Whether to generate a web report for the test results. Default is False.",
|
152
|
+
"required": True,
|
153
|
+
"default": False
|
154
|
+
}
|
155
|
+
)
|
156
|
+
|
148
157
|
def __post_init__(self):
|
149
158
|
"""
|
150
159
|
Post-initialization validation for the testing configuration entity.
|
@@ -245,14 +254,19 @@ class Testing:
|
|
245
254
|
f"Invalid type for 'persistent': {type(self.persistent).__name__}. It must be a boolean (True or False)."
|
246
255
|
)
|
247
256
|
|
248
|
-
if
|
249
|
-
|
250
|
-
|
251
|
-
|
257
|
+
if self.persistent:
|
258
|
+
if not isinstance(self.persistent_driver, str):
|
259
|
+
raise OrionisIntegrityException(
|
260
|
+
f"Invalid type for 'persistent_driver': {type(self.persistent_driver).__name__}. It must be a string."
|
261
|
+
)
|
262
|
+
if self.persistent_driver not in ['sqlite', 'json']:
|
263
|
+
raise OrionisIntegrityException(
|
264
|
+
f"Invalid value for 'persistent_driver': {self.persistent_driver}. It must be one of: ['sqlite', 'json']."
|
265
|
+
)
|
252
266
|
|
253
|
-
if self.
|
267
|
+
if not isinstance(self.web_report, bool):
|
254
268
|
raise OrionisIntegrityException(
|
255
|
-
f"Invalid
|
269
|
+
f"Invalid type for 'web_report': {type(self.web_report).__name__}. It must be a boolean (True or False)."
|
256
270
|
)
|
257
271
|
|
258
272
|
def toDict(self) -> dict:
|
@@ -16,15 +16,17 @@ from rich.live import Live
|
|
16
16
|
from rich.panel import Panel
|
17
17
|
from rich.syntax import Syntax
|
18
18
|
from rich.table import Table
|
19
|
+
from rich.text import Text
|
19
20
|
from orionis.console.output.console import Console
|
20
21
|
from orionis.test.entities.test_result import TestResult
|
21
22
|
from orionis.test.enums.test_mode import ExecutionMode
|
22
23
|
from orionis.test.enums.test_status import TestStatus
|
23
|
-
from orionis.test.exceptions.test_persistence_error import OrionisTestPersistenceError
|
24
24
|
from orionis.test.exceptions.test_failure_exception import OrionisTestFailureException
|
25
|
+
from orionis.test.exceptions.test_persistence_error import OrionisTestPersistenceError
|
25
26
|
from orionis.test.exceptions.test_value_error import OrionisTestValueError
|
26
27
|
from orionis.test.logs.history import TestHistory
|
27
28
|
from orionis.test.suites.contracts.test_unit import IUnitTest
|
29
|
+
from orionis.test.view.render import TestingResultRender
|
28
30
|
|
29
31
|
class UnitTest(IUnitTest):
|
30
32
|
"""
|
@@ -129,7 +131,9 @@ class UnitTest(IUnitTest):
|
|
129
131
|
self.throw_exception: bool = False
|
130
132
|
self.persistent: bool = False
|
131
133
|
self.persistent_driver: str = 'sqlite'
|
134
|
+
self.web_report: bool = False
|
132
135
|
self.base_path: str = "tests"
|
136
|
+
self.withliveconsole: bool = True
|
133
137
|
|
134
138
|
def configure(
|
135
139
|
self,
|
@@ -140,7 +144,8 @@ class UnitTest(IUnitTest):
|
|
140
144
|
print_result: bool = None,
|
141
145
|
throw_exception: bool = False,
|
142
146
|
persistent: bool = False,
|
143
|
-
persistent_driver: str = 'sqlite'
|
147
|
+
persistent_driver: str = 'sqlite',
|
148
|
+
web_report: bool = False
|
144
149
|
) -> 'UnitTest':
|
145
150
|
"""
|
146
151
|
Configures the UnitTest instance with the specified parameters.
|
@@ -195,6 +200,9 @@ class UnitTest(IUnitTest):
|
|
195
200
|
if persistent_driver is not None:
|
196
201
|
self.persistent_driver = persistent_driver
|
197
202
|
|
203
|
+
if web_report is not None:
|
204
|
+
self.web_report = web_report
|
205
|
+
|
198
206
|
return self
|
199
207
|
|
200
208
|
def discoverTestsInFolder(
|
@@ -385,17 +393,27 @@ class UnitTest(IUnitTest):
|
|
385
393
|
OrionisTestFailureException
|
386
394
|
If `throw_exception` is True and there are test failures or errors.
|
387
395
|
"""
|
396
|
+
|
397
|
+
# Check if required print_result and throw_exception
|
388
398
|
if print_result is not None:
|
389
399
|
self.print_result = print_result
|
390
400
|
if throw_exception is not None:
|
391
401
|
self.throw_exception = throw_exception
|
392
402
|
|
403
|
+
# Dynamically determine if live console should be enabled based on test code usage
|
404
|
+
self._withLiveConsole()
|
405
|
+
|
406
|
+
# Start the timer and print the start message
|
393
407
|
self.start_time = time.time()
|
394
408
|
self._startMessage()
|
395
409
|
|
396
|
-
#
|
410
|
+
# Prepare the running message based on whether live console is enabled
|
411
|
+
message = "[bold yellow]⏳ Running tests...[/bold yellow]\n"
|
412
|
+
message += "[dim]This may take a few seconds. Please wait...[/dim]" if self.withliveconsole else "[dim]Please wait, results will appear below...[/dim]"
|
413
|
+
|
414
|
+
# Panel for running message
|
397
415
|
running_panel = Panel(
|
398
|
-
|
416
|
+
message,
|
399
417
|
border_style="yellow",
|
400
418
|
title="In Progress",
|
401
419
|
title_align="left",
|
@@ -403,18 +421,18 @@ class UnitTest(IUnitTest):
|
|
403
421
|
padding=(1, 2)
|
404
422
|
)
|
405
423
|
|
406
|
-
#
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
424
|
+
# Elegant "running" message using Rich Panel
|
425
|
+
if self.withliveconsole:
|
426
|
+
with Live(running_panel, console=self.rich_console, refresh_per_second=4, transient=True):
|
427
|
+
result, output_buffer, error_buffer = self._runSuite()
|
428
|
+
else:
|
429
|
+
self.rich_console.print(running_panel)
|
430
|
+
result, output_buffer, error_buffer = self._runSuite()
|
412
431
|
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
result = self._runTestsSequentially(output_buffer, error_buffer)
|
432
|
+
# Capture and display the output and error buffers only if not empty
|
433
|
+
output_content = output_buffer.getvalue()
|
434
|
+
if output_content.strip():
|
435
|
+
print(output_buffer.getvalue())
|
418
436
|
|
419
437
|
# Process results
|
420
438
|
execution_time = time.time() - self.start_time
|
@@ -431,6 +449,80 @@ class UnitTest(IUnitTest):
|
|
431
449
|
# Return the summary of the test results
|
432
450
|
return summary
|
433
451
|
|
452
|
+
def _withLiveConsole(self) -> None:
|
453
|
+
"""
|
454
|
+
Determines if the live console should be used based on the presence of debug or dump calls in the test code.
|
455
|
+
|
456
|
+
Returns
|
457
|
+
-------
|
458
|
+
bool
|
459
|
+
True if the live console should be used, False otherwise.
|
460
|
+
"""
|
461
|
+
if self.withliveconsole:
|
462
|
+
|
463
|
+
try:
|
464
|
+
|
465
|
+
# Flatten the test suite to get all test cases
|
466
|
+
for test_case in self._flattenTestSuite(self.suite):
|
467
|
+
|
468
|
+
# Get the source code of the test case class
|
469
|
+
source = inspect.getsource(test_case.__class__)
|
470
|
+
|
471
|
+
# Only match if the keyword is not inside a comment
|
472
|
+
for keyword in ('self.dd', 'self.dump'):
|
473
|
+
|
474
|
+
# Find all lines containing the keyword
|
475
|
+
for line in source.splitlines():
|
476
|
+
if keyword in line:
|
477
|
+
|
478
|
+
# Remove leading/trailing whitespace
|
479
|
+
stripped = line.strip()
|
480
|
+
|
481
|
+
# Ignore lines that start with '#' (comments)
|
482
|
+
if not stripped.startswith('#') and not re.match(r'^\s*#', line):
|
483
|
+
self.withliveconsole = False
|
484
|
+
break
|
485
|
+
|
486
|
+
# If we found a keyword, no need to check further
|
487
|
+
if not self.withliveconsole:
|
488
|
+
break
|
489
|
+
|
490
|
+
# If we found a keyword in any test case, no need to check further
|
491
|
+
if not self.withliveconsole:
|
492
|
+
break
|
493
|
+
|
494
|
+
except Exception:
|
495
|
+
pass
|
496
|
+
|
497
|
+
def _runSuite(self):
|
498
|
+
"""
|
499
|
+
Run the test suite according to the selected execution mode (parallel or sequential),
|
500
|
+
capturing standard output and error streams during execution.
|
501
|
+
|
502
|
+
Returns
|
503
|
+
-------
|
504
|
+
tuple
|
505
|
+
result : unittest.TestResult
|
506
|
+
The result object from the test execution.
|
507
|
+
output_buffer : io.StringIO
|
508
|
+
Captured standard output during test execution.
|
509
|
+
error_buffer : io.StringIO
|
510
|
+
Captured standard error during test execution.
|
511
|
+
"""
|
512
|
+
|
513
|
+
# Setup output capture
|
514
|
+
output_buffer = io.StringIO()
|
515
|
+
error_buffer = io.StringIO()
|
516
|
+
|
517
|
+
# Execute tests based on selected mode
|
518
|
+
if self.execution_mode == ExecutionMode.PARALLEL.value:
|
519
|
+
result = self._runTestsInParallel(output_buffer, error_buffer)
|
520
|
+
else:
|
521
|
+
result = self._runTestsSequentially(output_buffer, error_buffer)
|
522
|
+
|
523
|
+
# Return the result along with captured output and error streams
|
524
|
+
return result, output_buffer, error_buffer
|
525
|
+
|
434
526
|
def _runTestsSequentially(self, output_buffer: io.StringIO, error_buffer: io.StringIO) -> unittest.TestResult:
|
435
527
|
"""
|
436
528
|
Executes the test suite sequentially, capturing the output and error streams.
|
@@ -757,6 +849,18 @@ class UnitTest(IUnitTest):
|
|
757
849
|
if self.persistent:
|
758
850
|
self._persistTestResults(report)
|
759
851
|
|
852
|
+
# Handle Web Report Rendering
|
853
|
+
if self.web_report:
|
854
|
+
|
855
|
+
# Generate the web report and get the path
|
856
|
+
path = self._webReport(report)
|
857
|
+
|
858
|
+
# Elegant invitation to view the results, with underlined path
|
859
|
+
invite_text = Text("Test results saved. ", style="green")
|
860
|
+
invite_text.append("View report: ", style="bold green")
|
861
|
+
invite_text.append(str(path), style="underline blue")
|
862
|
+
self.rich_console.print(invite_text)
|
863
|
+
|
760
864
|
# Return the summary
|
761
865
|
return {
|
762
866
|
"total_tests": result.testsRun,
|
@@ -769,6 +873,45 @@ class UnitTest(IUnitTest):
|
|
769
873
|
"test_details": test_details
|
770
874
|
}
|
771
875
|
|
876
|
+
def _webReport(self, summary: Dict[str, Any]) -> None:
|
877
|
+
"""
|
878
|
+
Generates a web report for the test results summary.
|
879
|
+
|
880
|
+
Parameters
|
881
|
+
----------
|
882
|
+
summary : dict
|
883
|
+
The summary of test results to generate a web report for.
|
884
|
+
|
885
|
+
Returns
|
886
|
+
-------
|
887
|
+
str
|
888
|
+
The path to the generated web report.
|
889
|
+
|
890
|
+
Notes
|
891
|
+
-----
|
892
|
+
- Determines the storage path based on the current working directory and base_path.
|
893
|
+
- Uses TestingResultRender to generate the report.
|
894
|
+
- If persistence is enabled and the driver is 'sqlite', the report is marked as persistent.
|
895
|
+
- Returns the path to the generated report for further use.
|
896
|
+
"""
|
897
|
+
# Determine the absolute path for storing results
|
898
|
+
project = os.path.basename(os.getcwd())
|
899
|
+
storage_path = os.path.abspath(os.path.join(os.getcwd(), self.base_path))
|
900
|
+
|
901
|
+
# Only use storage_path if project is recognized
|
902
|
+
if project not in ['framework', 'orionis']:
|
903
|
+
storage_path = None
|
904
|
+
|
905
|
+
# Create the TestingResultRender instance with the storage path and summary
|
906
|
+
render = TestingResultRender(
|
907
|
+
storage_path=storage_path,
|
908
|
+
result=summary,
|
909
|
+
persist=self.persistent and self.persistent_driver == 'sqlite'
|
910
|
+
)
|
911
|
+
|
912
|
+
# Render the report and return the path
|
913
|
+
return render.render()
|
914
|
+
|
772
915
|
def _persistTestResults(self, summary: Dict[str, Any]) -> None:
|
773
916
|
"""
|
774
917
|
Persist the test results summary using the configured persistent driver.
|
@@ -793,13 +936,13 @@ class UnitTest(IUnitTest):
|
|
793
936
|
"""
|
794
937
|
|
795
938
|
try:
|
796
|
-
|
939
|
+
# Determine the absolute path for storing results
|
940
|
+
project = os.getcwd().split(os.sep)[-1]
|
941
|
+
storage_path = None
|
942
|
+
if project in ['framework', 'orionis']:
|
943
|
+
storage_path = os.path.abspath(os.path.join(os.getcwd(), self.base_path))
|
797
944
|
|
798
|
-
|
799
|
-
project = os.getcwd().split(os.sep)[-1]
|
800
|
-
storage_path = None
|
801
|
-
if project in ['framework', 'orionis']:
|
802
|
-
storage_path = os.path.abspath(os.path.join(os.getcwd(), self.base_path))
|
945
|
+
if self.persistent_driver == 'sqlite':
|
803
946
|
|
804
947
|
# Initialize the TestHistory class for database operations
|
805
948
|
history = TestHistory(
|
@@ -813,14 +956,14 @@ class UnitTest(IUnitTest):
|
|
813
956
|
|
814
957
|
elif self.persistent_driver == 'json':
|
815
958
|
|
959
|
+
# Ensure the base path exists and write the summary to a JSON file
|
960
|
+
os.makedirs(storage_path, exist_ok=True)
|
961
|
+
|
816
962
|
# Get the current timestamp for the log file name
|
817
963
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
818
964
|
|
819
|
-
# Ensure the base path exists and write the summary to a JSON file
|
820
|
-
os.makedirs(self.base_path, exist_ok=True)
|
821
|
-
|
822
965
|
# Create the log file path with the timestamp
|
823
|
-
log_path = os.path.join(
|
966
|
+
log_path = os.path.abspath(os.path.join(storage_path, f'test_{timestamp}.json'))
|
824
967
|
|
825
968
|
# Write the summary to the JSON file
|
826
969
|
with open(log_path, 'w', encoding='utf-8') as log:
|
@@ -0,0 +1,128 @@
|
|
1
|
+
import json
|
2
|
+
import os
|
3
|
+
from pathlib import Path
|
4
|
+
from orionis.services.environment.env import Env
|
5
|
+
from orionis.test.logs.history import TestHistory
|
6
|
+
|
7
|
+
class TestingResultRender:
|
8
|
+
|
9
|
+
def __init__(
|
10
|
+
self,
|
11
|
+
result,
|
12
|
+
storage_path:str = None,
|
13
|
+
persist=False
|
14
|
+
):
|
15
|
+
"""
|
16
|
+
Initialize the TestingResultRender object.
|
17
|
+
|
18
|
+
Parameters
|
19
|
+
----------
|
20
|
+
result : Any
|
21
|
+
The test result data to be processed or stored.
|
22
|
+
storage_path : str, optional
|
23
|
+
Custom path to store the test report. If not provided, uses the environment variable
|
24
|
+
'TEST_REPORT_PATH' or defaults to a local storage path.
|
25
|
+
persist : bool, optional
|
26
|
+
Whether to persist the report. Defaults to False.
|
27
|
+
|
28
|
+
Notes
|
29
|
+
-----
|
30
|
+
- Determines the file path for the test report based on the provided storage_path, environment variable,
|
31
|
+
or a default location.
|
32
|
+
- Ensures the parent directory for the report exists.
|
33
|
+
- Stores the resolved report path in the environment variable 'TEST_REPORT_PATH'.
|
34
|
+
"""
|
35
|
+
|
36
|
+
# Initialize instance variables
|
37
|
+
self.__filename = 'test-results.html'
|
38
|
+
self.__result = result
|
39
|
+
self.__persist = persist
|
40
|
+
|
41
|
+
# Determine file path
|
42
|
+
db_path = None
|
43
|
+
if storage_path:
|
44
|
+
db_path = Path(storage_path).expanduser().resolve()
|
45
|
+
if db_path.is_dir():
|
46
|
+
db_path = db_path / self.__filename
|
47
|
+
else:
|
48
|
+
env_path = Env.get("TEST_REPORT_PATH", None)
|
49
|
+
if env_path:
|
50
|
+
db_path = Path(env_path).expanduser().resolve()
|
51
|
+
if db_path.is_dir():
|
52
|
+
db_path = db_path / self.__filename
|
53
|
+
else:
|
54
|
+
db_path = Path.cwd() / 'storage/framework/testing' / self.__filename
|
55
|
+
|
56
|
+
# Ensure parent directory exists
|
57
|
+
db_path.parent.mkdir(parents=True, exist_ok=True)
|
58
|
+
|
59
|
+
# Store path in environment
|
60
|
+
Env.set("TEST_REPORT_PATH", str(db_path), 'path')
|
61
|
+
self.__report_path = db_path
|
62
|
+
|
63
|
+
def render(self):
|
64
|
+
"""
|
65
|
+
Otherwise, uses the current test result stored in memory. The method replaces placeholders in a
|
66
|
+
template file with the test results and the persistence mode, then writes the rendered content
|
67
|
+
to a report file.
|
68
|
+
|
69
|
+
Parameters
|
70
|
+
----------
|
71
|
+
None
|
72
|
+
|
73
|
+
Returns
|
74
|
+
-------
|
75
|
+
str
|
76
|
+
The full path to the generated report file.
|
77
|
+
|
78
|
+
Notes
|
79
|
+
-----
|
80
|
+
- If persistence is enabled, the last 10 reports are fetched from the SQLite database.
|
81
|
+
- If persistence is not enabled, only the current test result in memory is used.
|
82
|
+
- The method reads a template file, replaces placeholders with the test results and persistence mode,
|
83
|
+
and writes the final content to the report file.
|
84
|
+
"""
|
85
|
+
|
86
|
+
# Determine the source of test results based on persistence mode
|
87
|
+
if self.__persist:
|
88
|
+
# If persistence is enabled, fetch the last 10 reports from SQLite
|
89
|
+
logs = TestHistory()
|
90
|
+
reports = logs.get(last=10)
|
91
|
+
# Parse each report's JSON data into a list
|
92
|
+
results_list = [json.loads(report[1]) for report in reports]
|
93
|
+
else:
|
94
|
+
# If not persistent, use only the current in-memory result
|
95
|
+
results_list = [self.__result]
|
96
|
+
|
97
|
+
# Set placeholder values for the template
|
98
|
+
persistence_mode = 'SQLite' if self.__persist else 'Static'
|
99
|
+
test_results_json = json.dumps(results_list, ensure_ascii=False, indent=None)
|
100
|
+
|
101
|
+
# Locate the HTML template file
|
102
|
+
template_path = Path(__file__).parent / 'report.stub'
|
103
|
+
|
104
|
+
# Read the template content
|
105
|
+
with open(template_path, 'r', encoding='utf-8') as template_file:
|
106
|
+
template_content = template_file.read()
|
107
|
+
|
108
|
+
# Replace placeholders with actual values
|
109
|
+
rendered_content = template_content.replace(
|
110
|
+
'{{orionis-testing-result}}',
|
111
|
+
test_results_json
|
112
|
+
).replace(
|
113
|
+
'{{orionis-testing-persistent}}',
|
114
|
+
persistence_mode
|
115
|
+
)
|
116
|
+
|
117
|
+
# Write the rendered HTML report to the specified path
|
118
|
+
with open(self.__report_path, 'w', encoding='utf-8') as report_file:
|
119
|
+
report_file.write(rendered_content)
|
120
|
+
|
121
|
+
# Open the generated report in the default web browser if running on Windows or macOS.
|
122
|
+
# This provides immediate feedback to the user after report generation.
|
123
|
+
if os.name == 'nt' or os.name == 'posix' and sys.platform == 'darwin':
|
124
|
+
import webbrowser
|
125
|
+
webbrowser.open(self.__report_path.as_uri())
|
126
|
+
|
127
|
+
# Return the absolute path to the generated report
|
128
|
+
return str(self.__report_path)
|
@@ -360,7 +360,7 @@ orionis/test/suites/contracts/__init__.py
|
|
360
360
|
orionis/test/suites/contracts/test_suite.py
|
361
361
|
orionis/test/suites/contracts/test_unit.py
|
362
362
|
orionis/test/view/__init__.py
|
363
|
-
orionis/test/view/
|
363
|
+
orionis/test/view/render.py
|
364
364
|
tests/__init__.py
|
365
365
|
tests/example/__init__.py
|
366
366
|
tests/example/test_example.py
|