orionis 0.290.0__tar.gz → 0.292.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.290.0/orionis.egg-info → orionis-0.292.0}/PKG-INFO +1 -1
- {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/framework.py +1 -1
- orionis-0.292.0/orionis/test/view/index.html +533 -0
- {orionis-0.290.0 → orionis-0.292.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.290.0 → orionis-0.292.0}/tests/example/test_example.py +1 -1
- {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/test_metadata_package.py +61 -3
- orionis-0.290.0/orionis/test/view/index.html +0 -127
- {orionis-0.290.0 → orionis-0.292.0}/LICENCE +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/MANIFEST.in +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/README.md +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_application.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/container.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/container_integrity.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/lifetimes.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_container/resolve.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/application.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/config/config.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/base/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/base/command.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/command_filter.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/kernel.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/console.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/executor.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/output/progress_bar.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/parser.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/console/task_manager.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/container/container.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/container/container_integrity.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/commands_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/commands/scheduler_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/config/config_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/environment/environment_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/files/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/files/path_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/log/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/log/log_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/tests/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/facades/tests/tests_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/bootstraper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/console/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/providers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/providers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/providers/service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/reactor_commands_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/commands/schedule_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/config/config_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/environment/environment_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/files/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/files/path_resolver_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/log/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/services/log/log_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/support/exception_parse.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_contracts/support/reflection.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/app_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/commands_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/commands/scheduler_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/config/config_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/environment/environment_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/files/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/files/path_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/log/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_facades/log/log_facade.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/console/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/console/command_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/environment/environment_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/exception_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/exceptions/exception_providers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/foundation/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/foundation/config/config_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/providers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_foundation/providers/service_providers_bootstrapper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/reactor_commands_service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/commands/scheduler_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/config/config_service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/environment/environment__service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/files/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/files/paths_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/log/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/log/log_service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_providers/service_provider.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/reactor_commands_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/commands/scheduler_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/config/config_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/log/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/_services/log/log_service.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/application.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/base/command.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/command_filter.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/cache_clear.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/schedule_work.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/dumper/dump_die.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli-orionis-value-error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/kernel.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/console.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/progress_bar.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/output/styles.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/console/parser.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/contracts/config.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/exceptions/integrity.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/foundation/config/testing/enums/test_mode.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/metadata/package.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/singleton/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/patterns/singleton/meta_class.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/asynchrony/exceptions/coroutine_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/contracts/types.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/dot_env.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/environment_value_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/exceptions/environment_value_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/environment/types.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/entities/abstract_class_attributes.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/abstracts/reflect_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/contracts/reflect_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/class_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/method_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/entities/resolved_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/dependencies/reflect_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/exceptions/types.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/helpers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/helpers/functions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/contracts/exception_parser.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/exceptions/exception_parser.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/parsers/serializer.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/contracts/resolver.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/not_found_exceptions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/exceptions/path_value_exceptions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/paths/resolver.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/contracts/std.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/exceptions/std_value_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/standard/std.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/runtime_imports.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/dicts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/services/wrapper/dicts/dot_dict.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/container_integrity.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/reflection.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/contracts/reflexion_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/helpers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/helpers/functions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/contracts/reflection_instance.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_attributes.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_method.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_parsed.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/entities/class_property.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/instances/reflection_instance.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflect_decorators.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflection.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_concrete.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_concrete_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_instance_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_module.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/support/introspection/reflexion_module_with_classname.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_async.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_case.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/cases/test_sync.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/entities/test_result.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/test_mode.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/enums/test_status.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_config_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_failure_exception.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_persistence_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_runtime_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/exceptions/test_value_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/contracts/history.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/logs/history.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/contracts/dumper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/test_suite.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/contracts/test_unit.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/test_suite.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/suites/test_unit.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis/unittesting.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/SOURCES.txt +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/setup.cfg +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/setup.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/example/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/exceptions/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/exceptions/test_foundation_config_exceptions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/singleton/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/inspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/mocks/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/mocks/mock_custom_error.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/parsers/test_services_parser_exceptions.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/path/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/path/test_services_resolver.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/standard/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/standard/test_services_std.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/wrapper/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/services/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflect_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflect_instance.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_concrete.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_concrete_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/fakes/fake_reflection_instance_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflect_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflect_instance.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_concrete.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_concrete_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/support/inspection/test_reflection_instance_with_abstract.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/testing/__init__.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/testing/test_testing_result.py +0 -0
- {orionis-0.290.0 → orionis-0.292.0}/tests/testing/test_testing_unit.py +0 -0
@@ -0,0 +1,533 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8" />
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
|
+
<title>Orionis Test Dashboard</title>
|
8
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
9
|
+
<link rel="icon" href="https://orionis-framework.com/svg/logo.svg" />
|
10
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
|
11
|
+
<link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />
|
12
|
+
<link href="https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
13
|
+
</head>
|
14
|
+
|
15
|
+
<style>
|
16
|
+
/* Use a monospaced font for the table */
|
17
|
+
#test-table,
|
18
|
+
#test-table .gridjs-td,
|
19
|
+
#test-table .gridjs-th {
|
20
|
+
font-family: 'Fira Mono', 'Consolas', 'Menlo', 'Monaco', 'Liberation Mono', monospace !important;
|
21
|
+
}
|
22
|
+
|
23
|
+
#test-table .gridjs-td,
|
24
|
+
#test-table .gridjs-th {
|
25
|
+
max-width: 220px;
|
26
|
+
white-space: normal;
|
27
|
+
overflow-wrap: anywhere;
|
28
|
+
text-overflow: initial;
|
29
|
+
vertical-align: middle;
|
30
|
+
font-size: 0.85rem; /* más pequeño */
|
31
|
+
line-height: 1.28;
|
32
|
+
}
|
33
|
+
|
34
|
+
#test-table .gridjs-th {
|
35
|
+
font-size: 0.82rem !important; /* aún más pequeño para los títulos */
|
36
|
+
font-weight: 600;
|
37
|
+
letter-spacing: 0.01em;
|
38
|
+
}
|
39
|
+
|
40
|
+
#test-table .gridjs-td.status-cell {
|
41
|
+
max-width: 90px;
|
42
|
+
text-align: center;
|
43
|
+
font-weight: 600;
|
44
|
+
letter-spacing: 0.02em;
|
45
|
+
white-space: nowrap;
|
46
|
+
font-size: 0.75em;
|
47
|
+
padding-top: 0.2em;
|
48
|
+
padding-bottom: 0.2em;
|
49
|
+
}
|
50
|
+
|
51
|
+
#test-table .gridjs-td.doc-cell {
|
52
|
+
max-width: 60px;
|
53
|
+
text-align: center;
|
54
|
+
white-space: nowrap;
|
55
|
+
}
|
56
|
+
|
57
|
+
#test-table {
|
58
|
+
overflow-x: auto;
|
59
|
+
}
|
60
|
+
|
61
|
+
.badge-status {
|
62
|
+
display: inline-flex;
|
63
|
+
align-items: center;
|
64
|
+
gap: 0.3em;
|
65
|
+
padding: 0.13em 0.6em;
|
66
|
+
border-radius: 9999px;
|
67
|
+
font-size: 0.78em;
|
68
|
+
font-weight: 600;
|
69
|
+
letter-spacing: 0.01em;
|
70
|
+
}
|
71
|
+
|
72
|
+
.badge-passed {
|
73
|
+
background: #d1fae5;
|
74
|
+
color: #059669;
|
75
|
+
}
|
76
|
+
|
77
|
+
.badge-failed {
|
78
|
+
background: #fee2e2;
|
79
|
+
color: #dc2626;
|
80
|
+
}
|
81
|
+
|
82
|
+
.badge-errors {
|
83
|
+
background: #fef9c3;
|
84
|
+
color: #ca8a04;
|
85
|
+
}
|
86
|
+
|
87
|
+
.badge-skipped {
|
88
|
+
background: #e0e7ff;
|
89
|
+
color: #3730a3;
|
90
|
+
}
|
91
|
+
|
92
|
+
.doc-btn {
|
93
|
+
background: #eef2ff;
|
94
|
+
color: #3730a3;
|
95
|
+
border: none;
|
96
|
+
border-radius: 0.5em;
|
97
|
+
padding: 0.2em 0.8em;
|
98
|
+
font-size: 0.92em;
|
99
|
+
font-weight: 500;
|
100
|
+
cursor: pointer;
|
101
|
+
transition: background 0.15s;
|
102
|
+
font-family: inherit;
|
103
|
+
}
|
104
|
+
|
105
|
+
.doc-btn:hover {
|
106
|
+
background: #c7d2fe;
|
107
|
+
}
|
108
|
+
|
109
|
+
/* Modal styles */
|
110
|
+
.orionis-modal {
|
111
|
+
position: fixed;
|
112
|
+
left: 0;
|
113
|
+
top: 0;
|
114
|
+
width: 100vw;
|
115
|
+
height: 100vh;
|
116
|
+
background: rgba(30, 41, 59, 0.45);
|
117
|
+
display: flex !important;
|
118
|
+
align-items: center;
|
119
|
+
justify-content: center;
|
120
|
+
z-index: 10000;
|
121
|
+
}
|
122
|
+
|
123
|
+
.orionis-modal-content {
|
124
|
+
background: white;
|
125
|
+
max-width: 70vw;
|
126
|
+
width: 70vw;
|
127
|
+
padding: 2em 1.5em 1.2em 1.5em;
|
128
|
+
border-radius: 1.2em;
|
129
|
+
box-shadow: 0 8px 32px 0 rgba(31, 41, 55, 0.18);
|
130
|
+
position: relative;
|
131
|
+
}
|
132
|
+
|
133
|
+
.orionis-modal-close {
|
134
|
+
position: absolute;
|
135
|
+
top: 0.7em;
|
136
|
+
right: 1em;
|
137
|
+
font-size: 1.3em;
|
138
|
+
color: #64748b;
|
139
|
+
background: none;
|
140
|
+
border: none;
|
141
|
+
cursor: pointer;
|
142
|
+
}
|
143
|
+
|
144
|
+
.orionis-modal-title {
|
145
|
+
font-size: 0.98em; /* reducido de 1.08em */
|
146
|
+
font-weight: 600;
|
147
|
+
margin-bottom: 0.7em;
|
148
|
+
color: #3730a3;
|
149
|
+
display: flex;
|
150
|
+
align-items: center;
|
151
|
+
gap: 0.5em;
|
152
|
+
font-family: inherit;
|
153
|
+
}
|
154
|
+
|
155
|
+
.orionis-modal-pre {
|
156
|
+
white-space: pre-wrap;
|
157
|
+
font-size: 0.92em;
|
158
|
+
color: #334155;
|
159
|
+
background: #f1f5f9;
|
160
|
+
padding: 1em;
|
161
|
+
border-radius: 0.7em;
|
162
|
+
max-height: 320px;
|
163
|
+
overflow: auto;
|
164
|
+
font-family: 'Fira Mono', 'Consolas', 'Menlo', 'Monaco', 'Liberation Mono', monospace;
|
165
|
+
}
|
166
|
+
</style>
|
167
|
+
|
168
|
+
<body class="bg-gray-100 text-gray-800 font-sans">
|
169
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 py-8">
|
170
|
+
|
171
|
+
<!-- Header -->
|
172
|
+
<header class="bg-gradient-to-r from-blue-900 to-cyan-400 text-white rounded-2xl shadow-xl p-6 mb-10">
|
173
|
+
<div class="flex flex-col md:flex-row justify-between items-center gap-4">
|
174
|
+
<div class="flex items-center gap-4">
|
175
|
+
<img src="https://orionis-framework.com/svg/logo.svg" alt="Orionis Logo"
|
176
|
+
class="h-10 brightness-0 invert" />
|
177
|
+
<h1 class="text-2xl font-light tracking-wider">Orionis Testing Results Dashboard</h1>
|
178
|
+
</div>
|
179
|
+
<div id="timestamp" class="text-sm text-white/90"></div>
|
180
|
+
</header>
|
181
|
+
|
182
|
+
<!-- Execution Summary Card -->
|
183
|
+
<div class="w-full mb-10">
|
184
|
+
<div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-indigo-500 flex flex-col sm:flex-row items-center justify-between gap-4">
|
185
|
+
<div>
|
186
|
+
<div class="text-xs font-semibold text-gray-500 uppercase">Resumen de Ejecución</div>
|
187
|
+
<div class="text-lg font-bold text-gray-800 mt-2" id="execution-summary-title">Select an execution</div>
|
188
|
+
<div class="text-sm text-gray-600 mt-1" id="execution-summary-desc">Select an execution to view the summary.</div>
|
189
|
+
</div>
|
190
|
+
<div class="flex items-center gap-4">
|
191
|
+
<div class="flex items-center gap-1 text-gray-700">
|
192
|
+
<span id="execution-time">Duration: --:--:--</span>
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
</div>
|
196
|
+
</div>
|
197
|
+
|
198
|
+
<!-- Summary Cards -->
|
199
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6 mb-10">
|
200
|
+
|
201
|
+
<div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-green-500">
|
202
|
+
<div class="text-xs font-semibold text-gray-500 uppercase">Passed</div>
|
203
|
+
<div class="text-4xl font-bold text-gray-800 mt-2" id="passed">0</div>
|
204
|
+
<div class="mt-4 bg-gray-200 rounded-full h-2">
|
205
|
+
<div class="bg-green-500 h-2 rounded-full" id="passed-progress" style="width: 0%"></div>
|
206
|
+
</div>
|
207
|
+
</div>
|
208
|
+
|
209
|
+
<div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-red-500">
|
210
|
+
<div class="text-xs font-semibold text-gray-500 uppercase">Failed</div>
|
211
|
+
<div class="text-4xl font-bold text-gray-800 mt-2" id="failed">0</div>
|
212
|
+
</div>
|
213
|
+
|
214
|
+
<div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-yellow-500">
|
215
|
+
<div class="text-xs font-semibold text-gray-500 uppercase">Errors</div>
|
216
|
+
<div class="text-4xl font-bold text-gray-800 mt-2" id="errors">0</div>
|
217
|
+
</div>
|
218
|
+
|
219
|
+
<div class="bg-white rounded-2xl shadow-lg p-6 border-t-4 border-blue-500">
|
220
|
+
<div class="text-xs font-semibold text-gray-500 uppercase">Skipped</div>
|
221
|
+
<div class="text-4xl font-bold text-gray-800 mt-2" id="skipped">0</div>
|
222
|
+
</div>
|
223
|
+
|
224
|
+
</div>
|
225
|
+
|
226
|
+
<!-- Download Buttons & Select -->
|
227
|
+
<div class="flex flex-wrap justify-between items-center mb-10 gap-4">
|
228
|
+
<!-- Buttons to the left -->
|
229
|
+
<div class="flex flex-wrap gap-4">
|
230
|
+
<button disabled id="download-json" class="flex items-center gap-2 bg-blue-300 text-white px-4 py-2 rounded shadow cursor-not-allowed opacity-60">
|
231
|
+
<i class="bi bi-file-earmark-code-fill text-lg"></i>
|
232
|
+
<span>Download JSON</span>
|
233
|
+
</button>
|
234
|
+
</div>
|
235
|
+
<!-- Elegant Select to the right -->
|
236
|
+
<div>
|
237
|
+
<select class="appearance-none bg-white border border-gray-300 text-gray-700 py-2 px-4 pr-10 rounded-lg shadow focus:outline-none focus:ring-2 focus:ring-blue-400 focus:border-blue-400 transition text-base font-medium" id="test-select">
|
238
|
+
</select>
|
239
|
+
</div>
|
240
|
+
</div>
|
241
|
+
|
242
|
+
<!-- Table Summary View with Grid.js -->
|
243
|
+
<div class="bg-white rounded-xl shadow-md p-5 border border-indigo-100">
|
244
|
+
<div class="flex items-center gap-2 mb-3">
|
245
|
+
<i class="bi bi-table text-lg text-indigo-500"></i>
|
246
|
+
<h2 class="text-lg font-semibold text-indigo-900">Execution Details</h2>
|
247
|
+
</div>
|
248
|
+
<div class="text-gray-500 mb-4 text-sm">
|
249
|
+
See all test cases for the selected execution.<br>Click
|
250
|
+
<span class="inline-flex items-center gap-1 px-1.5 py-0.5 bg-blue-50 text-blue-700 rounded text-xs font-mono">
|
251
|
+
<i class="bi bi-journal-text"></i> View
|
252
|
+
</span>
|
253
|
+
to show the docstring.
|
254
|
+
</div>
|
255
|
+
<div id="test-table"></div>
|
256
|
+
</div>
|
257
|
+
|
258
|
+
<!-- Footer -->
|
259
|
+
<footer class="mt-12 text-center text-gray-500 text-sm py-6">
|
260
|
+
Developed with the power of
|
261
|
+
<a href="https://orionis-framework.com/" target="_blank" rel="noopener"
|
262
|
+
class="font-semibold text-blue-700 hover:underline">
|
263
|
+
Orionis Framework
|
264
|
+
</a>
|
265
|
+
<i class="bi bi-stars text-yellow-400 align-middle ml-1"></i>
|
266
|
+
</footer>
|
267
|
+
|
268
|
+
<script src="https://unpkg.com/gridjs/dist/gridjs.umd.js"></script>
|
269
|
+
<script>
|
270
|
+
|
271
|
+
const data = $data;
|
272
|
+
|
273
|
+
// Live Clock (Header Timestamp)
|
274
|
+
function updateClock() {
|
275
|
+
const now = new Date();
|
276
|
+
const formatted = now.toLocaleString('en-US', {
|
277
|
+
year: 'numeric',
|
278
|
+
month: '2-digit',
|
279
|
+
day: '2-digit',
|
280
|
+
hour: '2-digit',
|
281
|
+
minute: '2-digit',
|
282
|
+
second: '2-digit',
|
283
|
+
hour12: false
|
284
|
+
});
|
285
|
+
document.getElementById("timestamp").textContent = `Current time: ${formatted}`;
|
286
|
+
}
|
287
|
+
updateClock();
|
288
|
+
setInterval(updateClock, 1000);
|
289
|
+
|
290
|
+
// Populate Dropdown in English
|
291
|
+
let html = '<option selected disabled>Select an execution</option>';
|
292
|
+
data.forEach((item, i) => {
|
293
|
+
const date = new Date(item.timestamp);
|
294
|
+
const formattedDate = `${date.getFullYear()}-${(date.getMonth() + 1)
|
295
|
+
.toString()
|
296
|
+
.padStart(2, '0')}-${date.getDate()
|
297
|
+
.toString()
|
298
|
+
.padStart(2, '0')} ${date.getHours()
|
299
|
+
.toString()
|
300
|
+
.padStart(2, '0')}:${date.getMinutes()
|
301
|
+
.toString()
|
302
|
+
.padStart(2, '0')}:${date.getSeconds()
|
303
|
+
.toString()
|
304
|
+
.padStart(2, '0')}`;
|
305
|
+
html += `<option value="${i}">Execution ${i + 1} - ${formattedDate}</option>`;
|
306
|
+
});
|
307
|
+
document.getElementById("test-select").innerHTML = html;
|
308
|
+
|
309
|
+
// Event Listener for the dropdown
|
310
|
+
document.getElementById("test-select").addEventListener("change", function () {
|
311
|
+
const selectedIndex = this.value;
|
312
|
+
const selectedData = data[selectedIndex];
|
313
|
+
|
314
|
+
// Animate Counters
|
315
|
+
function animateValue(id, start, end, duration) {
|
316
|
+
const obj = document.getElementById(id);
|
317
|
+
let startTimestamp = null;
|
318
|
+
const step = (timestamp) => {
|
319
|
+
if (!startTimestamp) startTimestamp = timestamp;
|
320
|
+
const progress = Math.min((timestamp - startTimestamp) / duration, 1);
|
321
|
+
obj.textContent = Math.floor(progress * (end - start) + start);
|
322
|
+
if (progress < 1) {
|
323
|
+
window.requestAnimationFrame(step);
|
324
|
+
} else {
|
325
|
+
obj.textContent = end;
|
326
|
+
}
|
327
|
+
};
|
328
|
+
window.requestAnimationFrame(step);
|
329
|
+
}
|
330
|
+
animateValue("passed", Number(document.getElementById("passed").textContent), selectedData.passed, 500);
|
331
|
+
animateValue("failed", Number(document.getElementById("failed").textContent), selectedData.failed, 500);
|
332
|
+
animateValue("errors", Number(document.getElementById("errors").textContent), selectedData.errors, 500);
|
333
|
+
animateValue("skipped", Number(document.getElementById("skipped").textContent), selectedData.skipped, 500);
|
334
|
+
|
335
|
+
// Animate Progress Bar
|
336
|
+
const passedBar = document.getElementById("passed-progress");
|
337
|
+
passedBar.style.transition = "width 0.6s cubic-bezier(0.4,0,0.2,1)";
|
338
|
+
const passedPercentage = (selectedData.passed / selectedData.total_tests) * 100;
|
339
|
+
passedBar.style.width = `${passedPercentage}%`;
|
340
|
+
|
341
|
+
// Update Execution Summary
|
342
|
+
const date = new Date(selectedData.timestamp);
|
343
|
+
const formattedDate = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`;
|
344
|
+
document.getElementById("execution-summary-title").innerHTML = `<span class="inline-flex items-center gap-2"><i class="bi bi-activity text-indigo-500"></i> Execution - <span class="font-mono">${formattedDate}</span></span>`;
|
345
|
+
document.getElementById("execution-summary-desc").innerHTML =
|
346
|
+
`<span class="inline-flex gap-2 flex-wrap">
|
347
|
+
<span class="bg-green-100 text-green-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-check-circle-fill"></i> Passed: ${selectedData.passed}</span>
|
348
|
+
<span class="bg-red-100 text-red-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-x-circle-fill"></i> Failed: ${selectedData.failed}</span>
|
349
|
+
<span class="bg-yellow-100 text-yellow-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-exclamation-triangle-fill"></i> Errors: ${selectedData.errors}</span>
|
350
|
+
<span class="bg-blue-100 text-blue-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-skip-forward-fill"></i> Skipped: ${selectedData.skipped}</span>
|
351
|
+
<span class="bg-gray-100 text-gray-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-list-ol"></i> Total: ${selectedData.total_tests}</span>
|
352
|
+
<span class="bg-indigo-100 text-indigo-800 px-2 py-1 rounded text-xs font-semibold"><i class="bi bi-bar-chart-fill"></i> Success: ${selectedData.success_rate.toFixed(2)}%</span>
|
353
|
+
</span>`;
|
354
|
+
|
355
|
+
// Update Duration
|
356
|
+
function formatTime(seconds) {
|
357
|
+
const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
|
358
|
+
const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
|
359
|
+
const s = Math.floor(seconds % 60).toString().padStart(2, '0');
|
360
|
+
return `${h}:${m}:${s}`;
|
361
|
+
}
|
362
|
+
document.getElementById("execution-time").innerHTML = `<i class="bi bi-clock-history text-indigo-500"></i> Duration: <span class="font-mono">${formatTime(selectedData.total_time)}</span>`;
|
363
|
+
|
364
|
+
// Enable Download Button
|
365
|
+
document.getElementById("download-json").disabled = false;
|
366
|
+
document.getElementById("download-json").classList.remove("bg-blue-300", "cursor-not-allowed", "opacity-60");
|
367
|
+
document.getElementById("download-json").classList.add("bg-blue-600", "hover:bg-blue-700", "cursor-pointer", "opacity-100");
|
368
|
+
});
|
369
|
+
|
370
|
+
// Download JSON report with execution date and time in filename
|
371
|
+
document.getElementById("download-json").addEventListener("click", function () {
|
372
|
+
const select = document.getElementById("test-select");
|
373
|
+
const selectedIndex = select.value;
|
374
|
+
if (selectedIndex === "" || selectedIndex === null || isNaN(selectedIndex)) return;
|
375
|
+
const selectedData = data[selectedIndex];
|
376
|
+
const jsonString = JSON.stringify(selectedData, null, 2);
|
377
|
+
const date = new Date(selectedData.timestamp);
|
378
|
+
// Format: YYYYMMDD_HHMMSS
|
379
|
+
const formattedDate = `${date.getFullYear()}${(date.getMonth()+1).toString().padStart(2,'0')}${date.getDate().toString().padStart(2,'0')}_${date.getHours().toString().padStart(2,'0')}${date.getMinutes().toString().padStart(2,'0')}${date.getSeconds().toString().padStart(2,'0')}`;
|
380
|
+
const filename = `test_report_${formattedDate}.json`;
|
381
|
+
const blob = new Blob([jsonString], { type: "application/json" });
|
382
|
+
const url = URL.createObjectURL(blob);
|
383
|
+
const a = document.createElement("a");
|
384
|
+
a.href = url;
|
385
|
+
a.download = filename;
|
386
|
+
document.body.appendChild(a);
|
387
|
+
a.click();
|
388
|
+
document.body.removeChild(a);
|
389
|
+
URL.revokeObjectURL(url);
|
390
|
+
});
|
391
|
+
|
392
|
+
// Show doc string in a modal dialog (event delegation)
|
393
|
+
function showDocString(doc) {
|
394
|
+
// Remove any existing modal
|
395
|
+
const oldModal = document.querySelector('.orionis-modal');
|
396
|
+
if (oldModal) oldModal.remove();
|
397
|
+
|
398
|
+
// Create modal element
|
399
|
+
const modal = document.createElement('div');
|
400
|
+
modal.className = 'orionis-modal';
|
401
|
+
modal.style.display = 'flex'; // Ensure modal is visible
|
402
|
+
|
403
|
+
modal.innerHTML = `
|
404
|
+
<div class="orionis-modal-content">
|
405
|
+
<button class="orionis-modal-close" aria-label="Cerrar" type="button">×</button>
|
406
|
+
<div class="orionis-modal-title">
|
407
|
+
<i class="bi bi-journal-text"></i> Docstring
|
408
|
+
</div>
|
409
|
+
<pre class="orionis-modal-pre">${doc ? String(doc).replace(/</g, "<").replace(/>/g, ">") : 'No docstring.'}</pre>
|
410
|
+
</div>
|
411
|
+
`;
|
412
|
+
// Close modal when clicking outside content
|
413
|
+
modal.addEventListener('mousedown', function (e) {
|
414
|
+
if (e.target === modal) modal.remove();
|
415
|
+
});
|
416
|
+
// Close modal when clicking close button
|
417
|
+
modal.querySelector('.orionis-modal-close').onclick = () => modal.remove();
|
418
|
+
document.body.appendChild(modal);
|
419
|
+
}
|
420
|
+
|
421
|
+
function renderTestTable(testDetails) {
|
422
|
+
if (window.testGrid) {
|
423
|
+
try { window.testGrid.destroy(); } catch (e) { }
|
424
|
+
}
|
425
|
+
const tableDiv = document.getElementById("test-table");
|
426
|
+
tableDiv.innerHTML = "";
|
427
|
+
|
428
|
+
try {
|
429
|
+
window.testGrid = new gridjs.Grid({
|
430
|
+
columns: [
|
431
|
+
{ name: "ID", width: "22%" },
|
432
|
+
{ name: "Class", width: "12%" },
|
433
|
+
{ name: "Method", width: "14%" },
|
434
|
+
{ name: "Status", width: "11%" },
|
435
|
+
{ name: "Time (s)", width: "9%" },
|
436
|
+
{ name: "File", width: "22%" },
|
437
|
+
{ name: "Doc", width: "10%" }
|
438
|
+
],
|
439
|
+
data: testDetails.map((t, idx) => [
|
440
|
+
gridjs.html(`<div title="${t.id}">${t.id}</div>`),
|
441
|
+
gridjs.html(`<div title="${t.class}">${t.class}</div>`),
|
442
|
+
gridjs.html(`<div title="${t.method}">${t.method}</div>`),
|
443
|
+
gridjs.html(`
|
444
|
+
<span class="badge-status ${
|
445
|
+
t.status === 'PASSED' ? 'badge-passed' :
|
446
|
+
t.status === 'FAILED' ? 'badge-failed' :
|
447
|
+
t.status === 'ERRORS' ? 'badge-errors' : 'badge-skipped'
|
448
|
+
} status-cell">
|
449
|
+
${
|
450
|
+
t.status === 'PASSED' ? '<i class="bi bi-check-circle-fill"></i>' :
|
451
|
+
t.status === 'FAILED' ? '<i class="bi bi-x-circle-fill"></i>' :
|
452
|
+
t.status === 'ERRORS' ? '<i class="bi bi-exclamation-triangle-fill"></i>' :
|
453
|
+
'<i class="bi bi-skip-forward-fill"></i>'
|
454
|
+
}
|
455
|
+
${t.status}
|
456
|
+
</span>
|
457
|
+
`),
|
458
|
+
t.execution_time,
|
459
|
+
gridjs.html(`<div title="${t.file_path}">${t.file_path}</div>`),
|
460
|
+
gridjs.html(`<button class="doc-btn doc-cell" data-doc-idx="${idx}" type="button"><i class="bi bi-journal-text"></i> Ver</button>`)
|
461
|
+
]),
|
462
|
+
search: {
|
463
|
+
enabled: true,
|
464
|
+
placeholder: 'Buscar solo por clase...'
|
465
|
+
},
|
466
|
+
pagination: { limit: 8, summary: false },
|
467
|
+
sort: false,
|
468
|
+
resizable: true,
|
469
|
+
style: {
|
470
|
+
th: { 'text-align': 'left', 'background': '#f1f5f9', 'font-size': '1em' }
|
471
|
+
}
|
472
|
+
}).render(tableDiv);
|
473
|
+
|
474
|
+
// Delegated event for doc buttons (always works, even after pagination)
|
475
|
+
tableDiv.addEventListener('click', function (e) {
|
476
|
+
const btn = e.target.closest('.doc-btn');
|
477
|
+
if (!btn) return;
|
478
|
+
const idx = Number(btn.getAttribute('data-doc-idx'));
|
479
|
+
const t = testDetails[idx];
|
480
|
+
if (!t) return;
|
481
|
+
|
482
|
+
let html = '';
|
483
|
+
html += `<div class="orionis-modal-title"><i class="bi bi-journal-text"></i> Docstring</div>`;
|
484
|
+
html += `<pre class="orionis-modal-pre">${t.doc_string ? String(t.doc_string).replace(/</g, "<").replace(/>/g, ">") : 'No docstring.'}</pre>`;
|
485
|
+
if (t.status === 'FAILED' || t.status === 'ERRORS') {
|
486
|
+
html += `<div class="orionis-modal-title mt-4"><i class="bi bi-bug-fill"></i> Traceback</div>`;
|
487
|
+
html += `<pre class="orionis-modal-pre" style="background:#fee2e2;color:#991b1b">${t.traceback ? String(t.traceback).replace(/</g, "<").replace(/>/g, ">") : 'No traceback.'}</pre>`;
|
488
|
+
}
|
489
|
+
|
490
|
+
// Remove any existing modal
|
491
|
+
const oldModal = document.querySelector('.orionis-modal');
|
492
|
+
if (oldModal) oldModal.remove();
|
493
|
+
|
494
|
+
// Create modal element
|
495
|
+
const modal = document.createElement('div');
|
496
|
+
modal.className = 'orionis-modal';
|
497
|
+
modal.style.display = 'flex';
|
498
|
+
|
499
|
+
modal.innerHTML = `
|
500
|
+
<div class="orionis-modal-content">
|
501
|
+
<button class="orionis-modal-close" aria-label="Cerrar" type="button">×</button>
|
502
|
+
${html}
|
503
|
+
</div>
|
504
|
+
`;
|
505
|
+
|
506
|
+
// Close modal when clicking outside content
|
507
|
+
modal.addEventListener('mousedown', function (e) {
|
508
|
+
if (e.target === modal) modal.remove();
|
509
|
+
});
|
510
|
+
|
511
|
+
// Close modal when clicking close button
|
512
|
+
modal.querySelector('.orionis-modal-close').onclick = () => modal.remove();
|
513
|
+
document.body.appendChild(modal);
|
514
|
+
});
|
515
|
+
} catch (err) {
|
516
|
+
tableDiv.innerHTML = `<div class="text-red-600 font-mono text-sm py-4">Ocurrió un error al mostrar la tabla.<br>${err.message}</div>`;
|
517
|
+
}
|
518
|
+
}
|
519
|
+
|
520
|
+
document.getElementById("test-select").addEventListener("change", function () {
|
521
|
+
const selectedIndex = this.value;
|
522
|
+
if (!data[selectedIndex]) return;
|
523
|
+
renderTestTable(data[selectedIndex].test_details);
|
524
|
+
});
|
525
|
+
|
526
|
+
document.addEventListener("DOMContentLoaded", function () {
|
527
|
+
renderTestTable([]);
|
528
|
+
});
|
529
|
+
|
530
|
+
</script>
|
531
|
+
</body>
|
532
|
+
|
533
|
+
</html>
|
@@ -1,35 +1,93 @@
|
|
1
|
-
from orionis.unittesting import TestCase
|
2
|
-
from orionis.metadata.package import PypiPackageApi
|
3
|
-
from unittest.mock import MagicMock, patch
|
1
|
+
from orionis.unittesting import TestCase, patch
|
4
2
|
|
5
3
|
class TestPypiPackageApi(TestCase):
|
6
4
|
|
7
5
|
@patch("orionis.metadata.package.PypiPackageApi")
|
8
6
|
async def testGetName(self, MockPypiPackageApi):
|
7
|
+
"""
|
8
|
+
Test for the getName method.
|
9
|
+
|
10
|
+
Parameters
|
11
|
+
----------
|
12
|
+
MockPypiPackageApi : MagicMock
|
13
|
+
Mocked PypiPackageApi class.
|
14
|
+
|
15
|
+
Returns
|
16
|
+
-------
|
17
|
+
None
|
18
|
+
"""
|
9
19
|
api = MockPypiPackageApi.return_value
|
10
20
|
api.getName.return_value = "orionis"
|
11
21
|
self.assertEqual(api.getName(), "orionis")
|
12
22
|
|
13
23
|
@patch("orionis.metadata.package.PypiPackageApi")
|
14
24
|
async def testGetAuthor(self, MockPypiPackageApi):
|
25
|
+
"""
|
26
|
+
Test for the getAuthor method.
|
27
|
+
|
28
|
+
Parameters
|
29
|
+
----------
|
30
|
+
MockPypiPackageApi : MagicMock
|
31
|
+
Mocked PypiPackageApi class.
|
32
|
+
|
33
|
+
Returns
|
34
|
+
-------
|
35
|
+
None
|
36
|
+
"""
|
15
37
|
api = MockPypiPackageApi.return_value
|
16
38
|
api.getAuthor.return_value = "Raul Mauricio Uñate Castro"
|
17
39
|
self.assertEqual(api.getAuthor(), "Raul Mauricio Uñate Castro")
|
18
40
|
|
19
41
|
@patch("orionis.metadata.package.PypiPackageApi")
|
20
42
|
async def testGetAuthorEmail(self, MockPypiPackageApi):
|
43
|
+
"""
|
44
|
+
Test for the getAuthorEmail method.
|
45
|
+
|
46
|
+
Parameters
|
47
|
+
----------
|
48
|
+
MockPypiPackageApi : MagicMock
|
49
|
+
Mocked PypiPackageApi class.
|
50
|
+
|
51
|
+
Returns
|
52
|
+
-------
|
53
|
+
None
|
54
|
+
"""
|
21
55
|
api = MockPypiPackageApi.return_value
|
22
56
|
api.getAuthorEmail.return_value = "raulmauriciounate@gmail.com"
|
23
57
|
self.assertEqual(api.getAuthorEmail(), "raulmauriciounate@gmail.com")
|
24
58
|
|
25
59
|
@patch("orionis.metadata.package.PypiPackageApi")
|
26
60
|
async def testGetDescription(self, MockPypiPackageApi):
|
61
|
+
"""
|
62
|
+
Test for the getDescription method.
|
63
|
+
|
64
|
+
Parameters
|
65
|
+
----------
|
66
|
+
MockPypiPackageApi : MagicMock
|
67
|
+
Mocked PypiPackageApi class.
|
68
|
+
|
69
|
+
Returns
|
70
|
+
-------
|
71
|
+
None
|
72
|
+
"""
|
27
73
|
api = MockPypiPackageApi.return_value
|
28
74
|
api.getDescription.return_value = "Orionis Framework – Elegant, Fast, and Powerful."
|
29
75
|
self.assertEqual(api.getDescription(), "Orionis Framework – Elegant, Fast, and Powerful.")
|
30
76
|
|
31
77
|
@patch("orionis.metadata.package.PypiPackageApi")
|
32
78
|
async def testGetPythonVersion(self, MockPypiPackageApi):
|
79
|
+
"""
|
80
|
+
Test for the getPythonVersion method.
|
81
|
+
|
82
|
+
Parameters
|
83
|
+
----------
|
84
|
+
MockPypiPackageApi : MagicMock
|
85
|
+
Mocked PypiPackageApi class.
|
86
|
+
|
87
|
+
Returns
|
88
|
+
-------
|
89
|
+
None
|
90
|
+
"""
|
33
91
|
api = MockPypiPackageApi.return_value
|
34
92
|
api.getPythonVersion.return_value = ">=3.12"
|
35
93
|
self.assertEqual(api.getPythonVersion(), ">=3.12")
|