orionis 0.535.0__tar.gz → 0.537.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.535.0/orionis.egg-info → orionis-0.537.0}/PKG-INFO +1 -1
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/event.py +20 -12
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/enums/event.py +7 -1
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/tasks/event.py +51 -1
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/tasks/schedule.py +13 -24
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/container.py +144 -5
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/contracts/container.py +52 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/base/handler.py +9 -9
- orionis-0.537.0/orionis/failure/catch.py +82 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/entities/throwable.py +1 -1
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/application.py +2 -2
- {orionis-0.535.0 → orionis-0.537.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +10 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/reflection.py +7 -1
- {orionis-0.535.0 → orionis-0.537.0/orionis.egg-info}/PKG-INFO +1 -1
- orionis-0.535.0/orionis/failure/catch.py +0 -164
- {orionis-0.535.0 → orionis-0.537.0}/LICENCE +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/MANIFEST.in +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/README.md +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/app.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/args/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/args/enums/actions.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/base/command.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/base/scheduler.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/base/scheduler_event_listener.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/make_listener.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/scheduler_list.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/scheduler_work.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/test.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/command.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/schedule_event_listener.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/contracts/scheduler.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/core/reactor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dumper/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/all_jobs_removed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/event_job.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/executor_added.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/executor_removed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_added.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_error.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_event_data.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_executed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_max_instances.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_missed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_modified.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_pause.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_removed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_resume.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_store_added.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_store_removed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/job_submitted.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/request.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_error.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_event_data.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_paused.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_resumed.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/entities/scheduler_started.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/enums/command.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/enums/listener.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/kernel.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/console.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/contracts/executor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/request/cli_request.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/tasks/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/console/tasks/listener.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/base/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/contracts/catch.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/contracts/handler.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/failure/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/catch_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/directory_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/metadata/package.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/file/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/file/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/file/contracts/directory.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/file/directory.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dataclass/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dataclass/attributes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/application.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/performance/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/performance/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/core/unit_test.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/kernel.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis/test/view/render.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis.egg-info/SOURCES.txt +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/setup.cfg +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/setup.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/context/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/test_advanced_async.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/test_async_optimizations.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/facades/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/mock_advanced_async.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/providers/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/example/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/example/test_example.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/log/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/patterns/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/standard/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/wrapper/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/cases/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/entities/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/enums/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/output/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/records/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/test_testing_unit.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/validators/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/view/__init__.py +0 -0
- {orionis-0.535.0 → orionis-0.537.0}/tests/testing/view/test_render.py +0 -0
|
@@ -5,24 +5,32 @@ from orionis.console.enums.event import Event as EventEntity
|
|
|
5
5
|
|
|
6
6
|
class IEvent(ABC):
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
) ->
|
|
8
|
+
def misfireGraceTime(
|
|
9
|
+
self,
|
|
10
|
+
seconds: int = 60
|
|
11
|
+
) -> 'IEvent':
|
|
12
12
|
"""
|
|
13
|
-
|
|
13
|
+
Set the misfire grace time for the event.
|
|
14
14
|
|
|
15
|
-
This method
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
This method allows you to specify a grace period (in seconds) during which
|
|
16
|
+
a missed execution of the event can still be executed. If the event is not
|
|
17
|
+
executed within this time frame after its scheduled time, it will be skipped.
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
seconds : int
|
|
22
|
+
The number of seconds to allow for a misfire grace period. Must be a positive integer.
|
|
18
23
|
|
|
19
24
|
Returns
|
|
20
25
|
-------
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
Event
|
|
27
|
+
Returns the current instance of the Event to allow method chaining.
|
|
28
|
+
|
|
29
|
+
Raises
|
|
30
|
+
------
|
|
31
|
+
CLIOrionisValueError
|
|
32
|
+
If the provided seconds is not a positive integer.
|
|
24
33
|
"""
|
|
25
|
-
pass
|
|
26
34
|
|
|
27
35
|
@abstractmethod
|
|
28
36
|
def purpose(
|
|
@@ -60,4 +60,10 @@ class Event:
|
|
|
60
60
|
details: Optional[str] = None
|
|
61
61
|
|
|
62
62
|
# Optional listener that implements IScheduleEventListener
|
|
63
|
-
listener: Optional[IScheduleEventListener] = None
|
|
63
|
+
listener: Optional[IScheduleEventListener] = None
|
|
64
|
+
|
|
65
|
+
# Maximum number of concurrent instances allowed for the event
|
|
66
|
+
max_instances: int = 1
|
|
67
|
+
|
|
68
|
+
# Grace time in seconds for misfired events
|
|
69
|
+
misfire_grace_time : Optional[int] = None
|
|
@@ -77,6 +77,9 @@ class Event(IEvent):
|
|
|
77
77
|
# Initialize the maximum instances attribute as None
|
|
78
78
|
self.__max_instances: Optional[int] = None
|
|
79
79
|
|
|
80
|
+
# Initialize the misfire grace time attribute as None
|
|
81
|
+
self.__misfire_grace_time: Optional[int] = None
|
|
82
|
+
|
|
80
83
|
def toEntity(
|
|
81
84
|
self
|
|
82
85
|
) -> EventEntity:
|
|
@@ -128,6 +131,14 @@ class Event(IEvent):
|
|
|
128
131
|
if self.__listener is not None and not issubclass(self.__listener, IScheduleEventListener):
|
|
129
132
|
raise CLIOrionisValueError("Listener must implement IScheduleEventListener interface or be None.")
|
|
130
133
|
|
|
134
|
+
# Validate that max_instances is a positive integer if it is set
|
|
135
|
+
if self.__max_instances is not None and (not isinstance(self.__max_instances, int) or self.__max_instances <= 0):
|
|
136
|
+
raise CLIOrionisValueError("Max instances must be a positive integer or None.")
|
|
137
|
+
|
|
138
|
+
# Validate that misfire_grace_time is a positive integer if it is set
|
|
139
|
+
if self.__misfire_grace_time is not None and (not isinstance(self.__misfire_grace_time, int) or self.__misfire_grace_time <= 0):
|
|
140
|
+
raise CLIOrionisValueError("Misfire grace time must be a positive integer or None.")
|
|
141
|
+
|
|
131
142
|
# Construct and return an EventEntity with the current event's attributes
|
|
132
143
|
return EventEntity(
|
|
133
144
|
signature=self.__signature,
|
|
@@ -138,9 +149,48 @@ class Event(IEvent):
|
|
|
138
149
|
end_date=self.__end_date,
|
|
139
150
|
trigger=self.__trigger,
|
|
140
151
|
details=self.__details,
|
|
141
|
-
listener=self.__listener
|
|
152
|
+
listener=self.__listener,
|
|
153
|
+
max_instances=self.__max_instances,
|
|
154
|
+
misfire_grace_time=self.__misfire_grace_time
|
|
142
155
|
)
|
|
143
156
|
|
|
157
|
+
def misfireGraceTime(
|
|
158
|
+
self,
|
|
159
|
+
seconds: int = 60
|
|
160
|
+
) -> 'Event':
|
|
161
|
+
"""
|
|
162
|
+
Set the misfire grace time for the event.
|
|
163
|
+
|
|
164
|
+
This method allows you to specify a grace period (in seconds) during which
|
|
165
|
+
a missed execution of the event can still be executed. If the event is not
|
|
166
|
+
executed within this time frame after its scheduled time, it will be skipped.
|
|
167
|
+
|
|
168
|
+
Parameters
|
|
169
|
+
----------
|
|
170
|
+
seconds : int
|
|
171
|
+
The number of seconds to allow for a misfire grace period. Must be a positive integer.
|
|
172
|
+
|
|
173
|
+
Returns
|
|
174
|
+
-------
|
|
175
|
+
Event
|
|
176
|
+
Returns the current instance of the Event to allow method chaining.
|
|
177
|
+
|
|
178
|
+
Raises
|
|
179
|
+
------
|
|
180
|
+
CLIOrionisValueError
|
|
181
|
+
If the provided seconds is not a positive integer.
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
# Validate that the seconds parameter is a positive integer
|
|
185
|
+
if not isinstance(seconds, int) or seconds <= 0:
|
|
186
|
+
raise CLIOrionisValueError("Misfire grace time must be a positive integer.")
|
|
187
|
+
|
|
188
|
+
# Set the internal misfire grace time attribute
|
|
189
|
+
self.__misfire_grace_time = seconds
|
|
190
|
+
|
|
191
|
+
# Return self to support method chaining
|
|
192
|
+
return self
|
|
193
|
+
|
|
144
194
|
def purpose(
|
|
145
195
|
self,
|
|
146
196
|
purpose: str
|
|
@@ -482,8 +482,8 @@ class Schedule(ISchedule):
|
|
|
482
482
|
# Invoke the listener, handling both coroutine and regular functions
|
|
483
483
|
try:
|
|
484
484
|
|
|
485
|
-
#
|
|
486
|
-
|
|
485
|
+
# Execute coroutine listeners using container's invoke method
|
|
486
|
+
self.__app.invoke(listener, event_data, self)
|
|
487
487
|
|
|
488
488
|
except BaseException as e:
|
|
489
489
|
|
|
@@ -550,26 +550,13 @@ class Schedule(ISchedule):
|
|
|
550
550
|
|
|
551
551
|
# Initialize the listener if it's a class
|
|
552
552
|
if isinstance(listener, type):
|
|
553
|
-
listener = listener
|
|
553
|
+
listener = self.__app.make(listener)
|
|
554
554
|
|
|
555
555
|
# Check if the listener has a method corresponding to the event type
|
|
556
556
|
if hasattr(listener, scheduler_event) and callable(getattr(listener, scheduler_event)):
|
|
557
557
|
|
|
558
|
-
# Retrieve the method from the listener
|
|
559
|
-
listener_method = getattr(listener, scheduler_event)
|
|
560
|
-
|
|
561
558
|
# Invoke the listener method, handling both coroutine and regular functions
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
# Use Coroutine to handle both sync and async listener methods
|
|
565
|
-
Coroutine(listener_method).invoke(event_data, self)
|
|
566
|
-
|
|
567
|
-
except Exception as e:
|
|
568
|
-
|
|
569
|
-
# Construct and log error message
|
|
570
|
-
error_msg = f"An error occurred while invoking the listener_method for event '{scheduler_event}': {str(e)}"
|
|
571
|
-
self.__logger.error(error_msg)
|
|
572
|
-
raise CLIOrionisRuntimeError(error_msg) from e
|
|
559
|
+
self.__app.call(listener, scheduler_event, event_data, self)
|
|
573
560
|
|
|
574
561
|
else:
|
|
575
562
|
|
|
@@ -707,7 +694,7 @@ class Schedule(ISchedule):
|
|
|
707
694
|
and listener invocation for the job error event.
|
|
708
695
|
"""
|
|
709
696
|
# Log an error message indicating that the job raised an exception
|
|
710
|
-
self.__logger.error(f"Task {event.job_id} raised an exception: {event.exception}")
|
|
697
|
+
self.__logger.error(f"Task '{event.job_id}' raised an exception: {event.exception}")
|
|
711
698
|
|
|
712
699
|
# If a listener is registered for this job ID, invoke the listener with the event details
|
|
713
700
|
job_event_data = self.__getTaskFromSchedulerById(event.job_id)
|
|
@@ -758,7 +745,7 @@ class Schedule(ISchedule):
|
|
|
758
745
|
"""
|
|
759
746
|
|
|
760
747
|
# Log an informational message indicating that the job has been submitted
|
|
761
|
-
self.__logger.info(f"Task {event.job_id} submitted to executor.")
|
|
748
|
+
self.__logger.info(f"Task '{event.job_id}' submitted to executor.")
|
|
762
749
|
|
|
763
750
|
# Create entity for job submitted event
|
|
764
751
|
data_event = self.__getTaskFromSchedulerById(event.job_id, event.code)
|
|
@@ -793,7 +780,7 @@ class Schedule(ISchedule):
|
|
|
793
780
|
"""
|
|
794
781
|
|
|
795
782
|
# Log an informational message indicating that the job has been executed
|
|
796
|
-
self.__logger.info(f"Task {event.job_id} executed.")
|
|
783
|
+
self.__logger.info(f"Task '{event.job_id}' executed.")
|
|
797
784
|
|
|
798
785
|
# Create entity for job executed event
|
|
799
786
|
data_event = self.__getTaskFromSchedulerById(event.job_id, event.code)
|
|
@@ -828,7 +815,7 @@ class Schedule(ISchedule):
|
|
|
828
815
|
"""
|
|
829
816
|
|
|
830
817
|
# Log a warning indicating that the job was missed
|
|
831
|
-
self.__logger.warning(f"Task {event.job_id} was missed. It was scheduled to run at {event.scheduled_run_time}.")
|
|
818
|
+
self.__logger.warning(f"Task '{event.job_id}' was missed. It was scheduled to run at {event.scheduled_run_time}.")
|
|
832
819
|
|
|
833
820
|
# Create entity for job missed event
|
|
834
821
|
data_event = self.__getTaskFromSchedulerById(event.job_id, event.code)
|
|
@@ -863,7 +850,7 @@ class Schedule(ISchedule):
|
|
|
863
850
|
"""
|
|
864
851
|
|
|
865
852
|
# Log an error message indicating that the job exceeded maximum instances
|
|
866
|
-
self.__logger.error(f"Task {event.job_id} exceeded maximum instances")
|
|
853
|
+
self.__logger.error(f"Task '{event.job_id}' exceeded maximum instances")
|
|
867
854
|
|
|
868
855
|
# Create entity for job max instances event
|
|
869
856
|
data_event = self.__getTaskFromSchedulerById(event.job_id, event.code)
|
|
@@ -897,7 +884,7 @@ class Schedule(ISchedule):
|
|
|
897
884
|
"""
|
|
898
885
|
|
|
899
886
|
# Log the removal of the job
|
|
900
|
-
self.__logger.info(f"Task {event.job_id} has been removed.")
|
|
887
|
+
self.__logger.info(f"Task '{event.job_id}' has been removed.")
|
|
901
888
|
|
|
902
889
|
# Create entity for job removed event
|
|
903
890
|
data_event = self.__getTaskFromSchedulerById(event.job_id, event.code)
|
|
@@ -944,7 +931,9 @@ class Schedule(ISchedule):
|
|
|
944
931
|
trigger=entity.trigger,
|
|
945
932
|
id=signature,
|
|
946
933
|
name=signature,
|
|
947
|
-
replace_existing=True
|
|
934
|
+
replace_existing=True,
|
|
935
|
+
max_instances=entity.max_instances,
|
|
936
|
+
misfire_grace_time=entity.misfire_grace_time
|
|
948
937
|
)
|
|
949
938
|
|
|
950
939
|
# If a listener is associated with the event, register it
|
|
@@ -17,6 +17,8 @@ from orionis.services.introspection.callables.reflection import ReflectionCallab
|
|
|
17
17
|
from orionis.services.introspection.concretes.reflection import ReflectionConcrete
|
|
18
18
|
from orionis.services.introspection.dependencies.entities.argument import Argument
|
|
19
19
|
from orionis.services.introspection.dependencies.entities.resolve_argument import ResolveArguments
|
|
20
|
+
from orionis.services.introspection.dependencies.reflection import ReflectDependencies
|
|
21
|
+
from orionis.services.introspection.instances.reflection import ReflectionInstance
|
|
20
22
|
|
|
21
23
|
class Container(IContainer):
|
|
22
24
|
|
|
@@ -206,9 +208,72 @@ class Container(IContainer):
|
|
|
206
208
|
|
|
207
209
|
try:
|
|
208
210
|
|
|
209
|
-
#
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
# Count the total number of provided arguments
|
|
212
|
+
total_provided_args = len(args) + len(kwargs)
|
|
213
|
+
|
|
214
|
+
# Inspect the callable to determine its signature and parameters
|
|
215
|
+
dependencies = ReflectDependencies(fn).getCallableDependencies()
|
|
216
|
+
total_dependencies = len(dependencies.resolved) + len(dependencies.unresolved)
|
|
217
|
+
|
|
218
|
+
# If the callable does not require any dependencies, invoke directly
|
|
219
|
+
if total_dependencies == 0:
|
|
220
|
+
result = fn(*args, **kwargs)
|
|
221
|
+
return self.__handleSyncAsyncResult(result)
|
|
222
|
+
|
|
223
|
+
# If enough arguments are provided, invoke directly
|
|
224
|
+
if total_provided_args >= total_dependencies:
|
|
225
|
+
result = fn(*args, **kwargs)
|
|
226
|
+
return self.__handleSyncAsyncResult(result)
|
|
227
|
+
|
|
228
|
+
# If not enough arguments are provided, attempt to resolve missing dependencies
|
|
229
|
+
if total_provided_args < total_dependencies:
|
|
230
|
+
|
|
231
|
+
# New lists to hold the final arguments to pass to the callable
|
|
232
|
+
n_args = []
|
|
233
|
+
n_kwargs = {}
|
|
234
|
+
|
|
235
|
+
# Iterate through the function's required arguments in order
|
|
236
|
+
args_index = 0
|
|
237
|
+
|
|
238
|
+
# Iterate over all dependencies in the order they were defined
|
|
239
|
+
for name, dep in dependencies.ordered.items():
|
|
240
|
+
|
|
241
|
+
# Check if the argument was provided positionally and hasn't been used yet
|
|
242
|
+
if args_index < len(args) and name not in kwargs:
|
|
243
|
+
|
|
244
|
+
# Add the positional argument to the new list
|
|
245
|
+
n_args.append(args[args_index])
|
|
246
|
+
|
|
247
|
+
# Move to the next positional argument
|
|
248
|
+
args_index += 1
|
|
249
|
+
|
|
250
|
+
# Check if the argument was provided as a keyword argument
|
|
251
|
+
elif name in kwargs:
|
|
252
|
+
|
|
253
|
+
# Add the keyword argument to the new dictionary
|
|
254
|
+
n_kwargs[name] = kwargs[name]
|
|
255
|
+
|
|
256
|
+
# Remove the argument from the original kwargs to avoid duplication
|
|
257
|
+
del kwargs[name]
|
|
258
|
+
|
|
259
|
+
# If not provided, attempt to resolve it from the container
|
|
260
|
+
else:
|
|
261
|
+
|
|
262
|
+
n_kwargs[name] = self.__resolveSingleDependency(
|
|
263
|
+
getattr(fn, '__name__', str(fn)),
|
|
264
|
+
name,
|
|
265
|
+
dep
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
# Add any remaining positional arguments that weren't mapped to specific parameters
|
|
269
|
+
n_args.extend(args[args_index:])
|
|
270
|
+
|
|
271
|
+
# Add any remaining keyword arguments that weren't processed
|
|
272
|
+
n_kwargs.update(kwargs)
|
|
273
|
+
|
|
274
|
+
# Invoke the function with the resolved arguments
|
|
275
|
+
result = fn(*n_args, **n_kwargs)
|
|
276
|
+
return self.__handleSyncAsyncResult(result)
|
|
212
277
|
|
|
213
278
|
except TypeError as e:
|
|
214
279
|
|
|
@@ -219,8 +284,9 @@ class Container(IContainer):
|
|
|
219
284
|
|
|
220
285
|
# Raise a more informative exception with the function name and signature
|
|
221
286
|
raise OrionisContainerException(
|
|
222
|
-
f"Failed to invoke function [{function_name}] with the provided arguments: {e}
|
|
223
|
-
f"
|
|
287
|
+
f"Failed to invoke function [{function_name}] with the provided arguments: {e}. "
|
|
288
|
+
f"Note that this may include a reference to the same 'self' object.\n"
|
|
289
|
+
f"Expected function signature: {function_name}{signature}"
|
|
224
290
|
) from e
|
|
225
291
|
|
|
226
292
|
def transient(
|
|
@@ -2360,6 +2426,79 @@ class Container(IContainer):
|
|
|
2360
2426
|
f"Method '{method_name}' not found or not callable on instance '{type(instance).__name__}'."
|
|
2361
2427
|
)
|
|
2362
2428
|
|
|
2429
|
+
def invoke(
|
|
2430
|
+
self,
|
|
2431
|
+
fn: Callable,
|
|
2432
|
+
*args,
|
|
2433
|
+
**kwargs
|
|
2434
|
+
) -> Any:
|
|
2435
|
+
"""
|
|
2436
|
+
Invokes a callable with automatic dependency injection and sync/async handling.
|
|
2437
|
+
|
|
2438
|
+
Parameters
|
|
2439
|
+
----------
|
|
2440
|
+
fn : Callable
|
|
2441
|
+
The callable to invoke.
|
|
2442
|
+
*args : tuple
|
|
2443
|
+
Positional arguments to pass to the callable.
|
|
2444
|
+
**kwargs : dict
|
|
2445
|
+
Keyword arguments to pass to the callable.
|
|
2446
|
+
|
|
2447
|
+
Returns
|
|
2448
|
+
-------
|
|
2449
|
+
Any
|
|
2450
|
+
The result of the callable invocation.
|
|
2451
|
+
"""
|
|
2452
|
+
|
|
2453
|
+
# Validate that fn is indeed callable
|
|
2454
|
+
if not callable(fn):
|
|
2455
|
+
raise OrionisContainerException(
|
|
2456
|
+
f"Provided fn '{getattr(fn, '__name__', str(fn))}' is not callable."
|
|
2457
|
+
)
|
|
2458
|
+
|
|
2459
|
+
# Execute the callable with appropriate handling
|
|
2460
|
+
return self.__executeMethod(fn, *args, **kwargs)
|
|
2461
|
+
|
|
2462
|
+
async def invokeAsync(
|
|
2463
|
+
self,
|
|
2464
|
+
fn: Callable,
|
|
2465
|
+
*args,
|
|
2466
|
+
**kwargs
|
|
2467
|
+
) -> Any:
|
|
2468
|
+
"""
|
|
2469
|
+
Async version of invoke for when you're in an async context and need to await the result.
|
|
2470
|
+
|
|
2471
|
+
Parameters
|
|
2472
|
+
----------
|
|
2473
|
+
fn : Callable
|
|
2474
|
+
The callable to invoke.
|
|
2475
|
+
*args : tuple
|
|
2476
|
+
Positional arguments to pass to the callable.
|
|
2477
|
+
**kwargs : dict
|
|
2478
|
+
Keyword arguments to pass to the callable.
|
|
2479
|
+
|
|
2480
|
+
Returns
|
|
2481
|
+
-------
|
|
2482
|
+
Any
|
|
2483
|
+
The result of the callable invocation, properly awaited if async.
|
|
2484
|
+
"""
|
|
2485
|
+
|
|
2486
|
+
# Validate that fn is indeed callable
|
|
2487
|
+
if not callable(fn):
|
|
2488
|
+
raise OrionisContainerException(
|
|
2489
|
+
f"Provided fn '{getattr(fn, '__name__', str(fn))}' is not callable."
|
|
2490
|
+
)
|
|
2491
|
+
|
|
2492
|
+
# Execute the callable with appropriate handling
|
|
2493
|
+
result = self.__executeMethod(fn, *args, **kwargs)
|
|
2494
|
+
|
|
2495
|
+
# If the result is a coroutine, await it
|
|
2496
|
+
if asyncio.iscoroutine(result):
|
|
2497
|
+
return await result
|
|
2498
|
+
|
|
2499
|
+
# Otherwise, return the result directly
|
|
2500
|
+
return result
|
|
2501
|
+
|
|
2363
2502
|
def __executeMethod(
|
|
2364
2503
|
self,
|
|
2365
2504
|
method: Callable,
|
|
@@ -449,3 +449,55 @@ class IContainer(ABC):
|
|
|
449
449
|
The result of the method call, properly awaited if async.
|
|
450
450
|
"""
|
|
451
451
|
pass
|
|
452
|
+
|
|
453
|
+
@abstractmethod
|
|
454
|
+
def invoke(
|
|
455
|
+
self,
|
|
456
|
+
fn: Callable,
|
|
457
|
+
*args,
|
|
458
|
+
**kwargs
|
|
459
|
+
) -> Any:
|
|
460
|
+
"""
|
|
461
|
+
Invokes a callable with automatic dependency injection and sync/async handling.
|
|
462
|
+
|
|
463
|
+
Parameters
|
|
464
|
+
----------
|
|
465
|
+
fn : Callable
|
|
466
|
+
The callable to invoke.
|
|
467
|
+
*args : tuple
|
|
468
|
+
Positional arguments to pass to the callable.
|
|
469
|
+
**kwargs : dict
|
|
470
|
+
Keyword arguments to pass to the callable.
|
|
471
|
+
|
|
472
|
+
Returns
|
|
473
|
+
-------
|
|
474
|
+
Any
|
|
475
|
+
The result of the callable invocation.
|
|
476
|
+
"""
|
|
477
|
+
pass
|
|
478
|
+
|
|
479
|
+
@abstractmethod
|
|
480
|
+
async def invokeAsync(
|
|
481
|
+
self,
|
|
482
|
+
fn: Callable,
|
|
483
|
+
*args,
|
|
484
|
+
**kwargs
|
|
485
|
+
) -> Any:
|
|
486
|
+
"""
|
|
487
|
+
Async version of invoke for when you're in an async context and need to await the result.
|
|
488
|
+
|
|
489
|
+
Parameters
|
|
490
|
+
----------
|
|
491
|
+
fn : Callable
|
|
492
|
+
The callable to invoke.
|
|
493
|
+
*args : tuple
|
|
494
|
+
Positional arguments to pass to the callable.
|
|
495
|
+
**kwargs : dict
|
|
496
|
+
Keyword arguments to pass to the callable.
|
|
497
|
+
|
|
498
|
+
Returns
|
|
499
|
+
-------
|
|
500
|
+
Any
|
|
501
|
+
The result of the callable invocation, properly awaited if async.
|
|
502
|
+
"""
|
|
503
|
+
pass
|
|
@@ -13,7 +13,7 @@ class BaseExceptionHandler(IBaseExceptionHandler):
|
|
|
13
13
|
# Example: OrionisContainerException
|
|
14
14
|
]
|
|
15
15
|
|
|
16
|
-
async def destructureException(self,
|
|
16
|
+
async def destructureException(self, exception: BaseException) -> Throwable:
|
|
17
17
|
"""
|
|
18
18
|
Converts an exception into a structured `Throwable` object containing detailed information.
|
|
19
19
|
|
|
@@ -35,13 +35,13 @@ class BaseExceptionHandler(IBaseExceptionHandler):
|
|
|
35
35
|
|
|
36
36
|
# Create and return a Throwable object with detailed exception information
|
|
37
37
|
return Throwable(
|
|
38
|
-
classtype=type(
|
|
39
|
-
message=str(
|
|
40
|
-
args=
|
|
41
|
-
traceback=getattr(
|
|
38
|
+
classtype=type(exception), # The class/type of the exception
|
|
39
|
+
message=str(exception), # The exception message as a string
|
|
40
|
+
args=exception.args, # The arguments passed to the exception
|
|
41
|
+
traceback=getattr(exception, '__traceback__', None) # The traceback object, if available
|
|
42
42
|
)
|
|
43
43
|
|
|
44
|
-
async def shouldIgnoreException(self,
|
|
44
|
+
async def shouldIgnoreException(self, exception: BaseException) -> bool:
|
|
45
45
|
"""
|
|
46
46
|
Determines if the exception should be ignored (not handled) by the handler.
|
|
47
47
|
|
|
@@ -57,11 +57,11 @@ class BaseExceptionHandler(IBaseExceptionHandler):
|
|
|
57
57
|
"""
|
|
58
58
|
|
|
59
59
|
# Ensure the provided object is an exception
|
|
60
|
-
if not isinstance(
|
|
61
|
-
raise TypeError(f"Expected BaseException, got {type(
|
|
60
|
+
if not isinstance(exception, BaseException):
|
|
61
|
+
raise TypeError(f"Expected BaseException, got {type(exception).__name__}")
|
|
62
62
|
|
|
63
63
|
# Convert the exception into a structured Throwable object
|
|
64
|
-
throwable = await self.destructureException(
|
|
64
|
+
throwable = await self.destructureException(exception)
|
|
65
65
|
|
|
66
66
|
# Check if the exception type is in the list of exceptions to ignore
|
|
67
67
|
return hasattr(self, 'dont_catch') and throwable.classtype in self.dont_catch
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from orionis.console.kernel import KernelCLI
|
|
3
|
+
from orionis.console.tasks.schedule import Schedule
|
|
4
|
+
from orionis.failure.contracts.catch import ICatch
|
|
5
|
+
from orionis.failure.contracts.handler import IBaseExceptionHandler
|
|
6
|
+
from orionis.foundation.contracts.application import IApplication
|
|
7
|
+
|
|
8
|
+
class Catch(ICatch):
|
|
9
|
+
|
|
10
|
+
def __init__(self, app: IApplication) -> None:
|
|
11
|
+
"""
|
|
12
|
+
Initializes the Catch handler with application services for console output and logging.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
app : IApplication
|
|
17
|
+
The application instance used to resolve required services.
|
|
18
|
+
|
|
19
|
+
Attributes
|
|
20
|
+
----------
|
|
21
|
+
console : IConsole
|
|
22
|
+
Console output service obtained from the application for displaying messages and exceptions.
|
|
23
|
+
logger : ILogger
|
|
24
|
+
Logger service obtained from the application for logging errors and exceptions.
|
|
25
|
+
|
|
26
|
+
Returns
|
|
27
|
+
-------
|
|
28
|
+
None
|
|
29
|
+
This constructor does not return any value.
|
|
30
|
+
|
|
31
|
+
Notes
|
|
32
|
+
-----
|
|
33
|
+
The constructor retrieves the console and logger services from the application container
|
|
34
|
+
using their respective service keys. These services are used throughout the class for
|
|
35
|
+
error reporting and output.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
# Store the application instance
|
|
39
|
+
self.__app: IApplication = app
|
|
40
|
+
|
|
41
|
+
# Retrieve the console output service from the application container
|
|
42
|
+
self.__exception_handler: IBaseExceptionHandler = app.getExceptionHandler()
|
|
43
|
+
|
|
44
|
+
def exception(self, kernel: Any, request: Any, e: BaseException) -> None:
|
|
45
|
+
"""
|
|
46
|
+
Handles and reports exceptions that occur during CLI execution.
|
|
47
|
+
|
|
48
|
+
This method reports the provided exception using the application's exception handler and logger.
|
|
49
|
+
If a kernel instance is provided, it also renders the exception details to the CLI for user visibility.
|
|
50
|
+
|
|
51
|
+
Parameters
|
|
52
|
+
----------
|
|
53
|
+
kernel : Any
|
|
54
|
+
The kernel instance associated with the CLI, or None if not available.
|
|
55
|
+
request : Any
|
|
56
|
+
The request or arguments associated with the CLI command.
|
|
57
|
+
e : BaseException
|
|
58
|
+
The exception instance to be handled.
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
None
|
|
63
|
+
This method does not return any value. It performs side effects such as logging and output.
|
|
64
|
+
|
|
65
|
+
Notes
|
|
66
|
+
-----
|
|
67
|
+
The exception is always reported using the exception handler and logger.
|
|
68
|
+
If a valid kernel is provided, the exception details are rendered to the CLI.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
# If there is no exception handler, return early
|
|
72
|
+
if self.__app.call(self.__exception_handler, 'shouldIgnoreException', exception=e):
|
|
73
|
+
return
|
|
74
|
+
|
|
75
|
+
# Report the exception using the exception handler and logger
|
|
76
|
+
self.__app.call(self.__exception_handler, 'report', exception=e)
|
|
77
|
+
|
|
78
|
+
# Check if the kernel is of type `KernelCLI` or `Any`
|
|
79
|
+
if isinstance(kernel, KernelCLI) or isinstance(kernel, Schedule):
|
|
80
|
+
|
|
81
|
+
# Render the exception details to the CLI using the exception handler
|
|
82
|
+
self.__app.call(self.__exception_handler, 'renderCLI', request=request, exception=e)
|
|
@@ -469,10 +469,10 @@ class Application(Container, IApplication):
|
|
|
469
469
|
if self.__exception_handler is None:
|
|
470
470
|
|
|
471
471
|
# Return the default exception handler instance
|
|
472
|
-
return BaseExceptionHandler
|
|
472
|
+
return self.make(BaseExceptionHandler)
|
|
473
473
|
|
|
474
474
|
# Instantiate and return the registered exception handler
|
|
475
|
-
return self.__exception_handler
|
|
475
|
+
return self.make(self.__exception_handler)
|
|
476
476
|
|
|
477
477
|
def setScheduler(
|
|
478
478
|
self,
|
|
@@ -43,6 +43,9 @@ class ResolveArguments(BaseEntity):
|
|
|
43
43
|
# Unresolved dependencies as a dictionary of names to Argument instances
|
|
44
44
|
unresolved: Dict[str, Argument]
|
|
45
45
|
|
|
46
|
+
# All dependencies in the order they were defined
|
|
47
|
+
ordered: Dict[str, Argument]
|
|
48
|
+
|
|
46
49
|
def __post_init__(self):
|
|
47
50
|
"""
|
|
48
51
|
Validates the types and contents of the resolved and unresolved attributes.
|
|
@@ -79,4 +82,11 @@ class ResolveArguments(BaseEntity):
|
|
|
79
82
|
if not isinstance(self.unresolved, dict):
|
|
80
83
|
raise ReflectionTypeError(
|
|
81
84
|
f"'unresolved' must be a dict, got {type(self.unresolved).__name__}"
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Validate that the 'ordered' attribute is a dictionary type
|
|
88
|
+
# This ensures that all dependencies maintain the same structure as resolved ones
|
|
89
|
+
if not isinstance(self.ordered, dict):
|
|
90
|
+
raise ReflectionTypeError(
|
|
91
|
+
f"'ordered' must be a dict, got {type(self.ordered).__name__}"
|
|
82
92
|
)
|