orionis 0.478.0__tar.gz → 0.480.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.478.0/orionis.egg-info → orionis-0.480.0}/PKG-INFO +1 -1
- orionis-0.480.0/orionis/console/commands/scheduler_work.py +88 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/test.py +16 -9
- orionis-0.480.0/orionis/console/contracts/event.py +178 -0
- orionis-0.480.0/orionis/console/contracts/schedule.py +127 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/core/reactor.py +5 -3
- orionis-0.480.0/orionis/console/enums/event.py +55 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/kernel.py +1 -1
- orionis-0.480.0/orionis/console/tasks/event.py +332 -0
- orionis-0.480.0/orionis/console/tasks/exception_report.py +94 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/tasks/schedule.py +162 -266
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/container.py +33 -22
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/facades/facade.py +3 -2
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/application.py +8 -3
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/roots/paths.py +0 -1
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/contracts/application.py +2 -2
- orionis-0.480.0/orionis/foundation/providers/scheduler_provider.py +51 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/metadata/framework.py +1 -1
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/core/unit_test.py +2 -3
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/kernel.py +1 -1
- {orionis-0.478.0 → orionis-0.480.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.478.0 → orionis-0.480.0}/orionis.egg-info/SOURCES.txt +6 -1
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/test_testing_unit.py +8 -7
- orionis-0.478.0/orionis/console/contracts/schedule.py +0 -4
- orionis-0.478.0/orionis/console/enums/task.py +0 -42
- {orionis-0.478.0 → orionis-0.480.0}/LICENCE +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/MANIFEST.in +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/README.md +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/app.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/args/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/args/enums/actions.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/base/command.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/base/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/base/contracts/command.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dumper/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/enums/command.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/console.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/contracts/executor.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/console/tasks/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/metadata/package.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/performance/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/performance/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis/test/view/render.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/setup.cfg +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/setup.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/context/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/test_advanced_async.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/test_async_optimizations.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/facades/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/mock_advanced_async.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/providers/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/example/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/example/test_example.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/app/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/auth/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cache/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cors/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/mail/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/queue/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/root/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/session/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/startup/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/testing/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/metadata/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/asynchrony/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/environment/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/mock/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/log/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/system/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/patterns/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/standard/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/wrapper/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/cases/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/entities/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/enums/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/output/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/records/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/validators/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/view/__init__.py +0 -0
- {orionis-0.478.0 → orionis-0.480.0}/tests/testing/view/test_render.py +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import importlib.util
|
|
2
|
+
import os
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from orionis.console.base.command import BaseCommand
|
|
5
|
+
from orionis.console.contracts.schedule import ISchedule
|
|
6
|
+
from orionis.console.exceptions import CLIOrionisRuntimeError
|
|
7
|
+
from orionis.foundation.contracts.application import IApplication
|
|
8
|
+
from rich.console import Console
|
|
9
|
+
from rich.panel import Panel
|
|
10
|
+
from rich.text import Text
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
|
|
13
|
+
class ScheduleWorkCommand(BaseCommand):
|
|
14
|
+
"""
|
|
15
|
+
Command class to display usage information for the Orionis CLI.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
# Indicates whether timestamps will be shown in the command output
|
|
19
|
+
timestamps: bool = False
|
|
20
|
+
|
|
21
|
+
# Command signature and description
|
|
22
|
+
signature: str = "schedule:work"
|
|
23
|
+
|
|
24
|
+
# Command description
|
|
25
|
+
description: str = "Executes the scheduled tasks defined in the application."
|
|
26
|
+
|
|
27
|
+
async def handle(self, orionis: IApplication, console: Console) -> bool:
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
|
|
31
|
+
# Obtener la ruta absoluta del scheduler desde la configuración de la aplicación
|
|
32
|
+
scheduler_path = orionis.path('console_scheduler')
|
|
33
|
+
|
|
34
|
+
# Obtener la base path desde la variable de entorno o desde la configuración local
|
|
35
|
+
base_path = Path(os.getcwd()).resolve()
|
|
36
|
+
scheduler_path = Path(scheduler_path).resolve()
|
|
37
|
+
rel_path = scheduler_path.relative_to(base_path)
|
|
38
|
+
|
|
39
|
+
# Reemplazar los separadores por puntos y quitar la extensión .py
|
|
40
|
+
module_name = ".".join(rel_path.with_suffix('').parts)
|
|
41
|
+
|
|
42
|
+
# Importar el módulo del scheduler
|
|
43
|
+
scheduler_module = importlib.import_module(module_name)
|
|
44
|
+
|
|
45
|
+
# Obtener la clase Scheduler del módulo importado
|
|
46
|
+
Scheduler = getattr(scheduler_module, "Scheduler", None)
|
|
47
|
+
|
|
48
|
+
# Check if the Scheduler class was found
|
|
49
|
+
if Scheduler is None:
|
|
50
|
+
raise CLIOrionisRuntimeError(f"Scheduler class not found in module {module_name}")
|
|
51
|
+
|
|
52
|
+
# Obtener el método tasks de la clase Scheduler
|
|
53
|
+
task_method = getattr(Scheduler, "tasks", None)
|
|
54
|
+
|
|
55
|
+
# Check if the method exists
|
|
56
|
+
if task_method is None:
|
|
57
|
+
raise CLIOrionisRuntimeError(f"Method 'tasks' not found in Scheduler class in module {module_name}")
|
|
58
|
+
|
|
59
|
+
# Crear una instancia de ISchedule
|
|
60
|
+
schedule_serice: ISchedule = orionis.make(ISchedule)
|
|
61
|
+
|
|
62
|
+
# Inicializar el metodo
|
|
63
|
+
task_method(schedule_serice)
|
|
64
|
+
|
|
65
|
+
# Display a professional start message for the scheduler worker
|
|
66
|
+
console.line()
|
|
67
|
+
start_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
|
68
|
+
panel_content = Text.assemble(
|
|
69
|
+
(" Orionis Scheduler Worker ", "bold white on green"),
|
|
70
|
+
("\n\n", ""),
|
|
71
|
+
("The scheduled tasks worker has started successfully.\n", "white"),
|
|
72
|
+
(f"Started at: {start_time}\n", "dim"),
|
|
73
|
+
("To stop the worker, press ", "white"),
|
|
74
|
+
("Ctrl+C", "bold yellow"),
|
|
75
|
+
(".", "white")
|
|
76
|
+
)
|
|
77
|
+
console.print(
|
|
78
|
+
Panel(panel_content, border_style="green", padding=(1, 2))
|
|
79
|
+
)
|
|
80
|
+
console.line()
|
|
81
|
+
|
|
82
|
+
# Iniciar el scheduler
|
|
83
|
+
await schedule_serice.start()
|
|
84
|
+
|
|
85
|
+
except Exception as exc:
|
|
86
|
+
|
|
87
|
+
# Catch any unexpected exceptions and raise as a CLIOrionisRuntimeError
|
|
88
|
+
raise CLIOrionisRuntimeError(f"An unexpected error occurred while clearing the cache: {exc}")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from orionis.app import Orionis
|
|
2
2
|
from orionis.console.base.command import BaseCommand
|
|
3
3
|
from orionis.console.exceptions import CLIOrionisRuntimeError
|
|
4
|
+
from orionis.foundation.contracts.application import IApplication
|
|
4
5
|
from orionis.test.contracts.kernel import ITestKernel
|
|
5
6
|
|
|
6
7
|
class TestCommand(BaseCommand):
|
|
@@ -26,28 +27,34 @@ class TestCommand(BaseCommand):
|
|
|
26
27
|
# Command description
|
|
27
28
|
description: str = "Executes all automated tests using the configured test kernel for the Orionis application."
|
|
28
29
|
|
|
29
|
-
def handle(self) -> dict:
|
|
30
|
+
def handle(self, app: IApplication) -> dict:
|
|
30
31
|
"""
|
|
31
|
-
Executes
|
|
32
|
+
Executes all automated tests using the configured test kernel.
|
|
32
33
|
|
|
33
|
-
This method
|
|
34
|
-
and
|
|
35
|
-
execution, it raises a CLIOrionisRuntimeError with
|
|
34
|
+
This method retrieves the test kernel instance from the application container
|
|
35
|
+
and executes the test suite by invoking the kernel's handle method. If any
|
|
36
|
+
exception occurs during execution, it raises a CLIOrionisRuntimeError with
|
|
37
|
+
the error details.
|
|
38
|
+
|
|
39
|
+
Parameters
|
|
40
|
+
----------
|
|
41
|
+
app : IApplication
|
|
42
|
+
The Orionis application instance providing access to the service container.
|
|
36
43
|
|
|
37
44
|
Returns
|
|
38
45
|
-------
|
|
39
46
|
dict
|
|
40
|
-
|
|
47
|
+
A dictionary containing the results of the test execution, such as test
|
|
48
|
+
statuses, counts, or other relevant information.
|
|
41
49
|
|
|
42
50
|
Raises
|
|
43
51
|
------
|
|
44
52
|
CLIOrionisRuntimeError
|
|
45
53
|
If an unexpected error occurs during the execution of the test command.
|
|
46
54
|
"""
|
|
47
|
-
try:
|
|
48
55
|
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
# Attempt to execute the test suite using the test kernel
|
|
57
|
+
try:
|
|
51
58
|
|
|
52
59
|
# Retrieve the test kernel instance from the application container
|
|
53
60
|
kernel: ITestKernel = app.make(ITestKernel)
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from orionis.console.enums.event import Event as EventEntity
|
|
4
|
+
|
|
5
|
+
class IEvent(ABC):
|
|
6
|
+
|
|
7
|
+
@abstractmethod
|
|
8
|
+
def toEntity(
|
|
9
|
+
self
|
|
10
|
+
) -> EventEntity:
|
|
11
|
+
"""
|
|
12
|
+
Retrieve the event details as an EventEntity instance.
|
|
13
|
+
|
|
14
|
+
This method gathers all relevant attributes of the current Event object,
|
|
15
|
+
such as its signature, arguments, purpose, random delay, start and end dates,
|
|
16
|
+
and trigger, and returns them encapsulated in an EventEntity object.
|
|
17
|
+
|
|
18
|
+
Returns
|
|
19
|
+
-------
|
|
20
|
+
EventEntity
|
|
21
|
+
An EventEntity instance containing the event's signature, arguments,
|
|
22
|
+
purpose, random delay, start date, end date, and trigger.
|
|
23
|
+
"""
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
@abstractmethod
|
|
27
|
+
def purpose(
|
|
28
|
+
self,
|
|
29
|
+
purpose: str
|
|
30
|
+
) -> 'IEvent':
|
|
31
|
+
"""
|
|
32
|
+
Set the purpose or description for the scheduled command.
|
|
33
|
+
|
|
34
|
+
This method assigns a human-readable purpose or description to the command
|
|
35
|
+
that is being scheduled. The purpose must be a non-empty string. This can
|
|
36
|
+
be useful for documentation, logging, or displaying information about the
|
|
37
|
+
scheduled job.
|
|
38
|
+
|
|
39
|
+
Parameters
|
|
40
|
+
----------
|
|
41
|
+
purpose : str
|
|
42
|
+
The purpose or description to associate with the scheduled command.
|
|
43
|
+
Must be a non-empty string.
|
|
44
|
+
|
|
45
|
+
Returns
|
|
46
|
+
-------
|
|
47
|
+
Scheduler
|
|
48
|
+
Returns the current instance of the Scheduler to allow method chaining.
|
|
49
|
+
|
|
50
|
+
Raises
|
|
51
|
+
------
|
|
52
|
+
CLIOrionisValueError
|
|
53
|
+
If the provided purpose is not a non-empty string.
|
|
54
|
+
"""
|
|
55
|
+
pass
|
|
56
|
+
|
|
57
|
+
@abstractmethod
|
|
58
|
+
def startDate(
|
|
59
|
+
self,
|
|
60
|
+
start_date: datetime
|
|
61
|
+
) -> 'IEvent':
|
|
62
|
+
"""
|
|
63
|
+
Set the start date for the event execution.
|
|
64
|
+
|
|
65
|
+
This method allows you to specify a start date for when the event should
|
|
66
|
+
begin execution. The start date must be a datetime instance.
|
|
67
|
+
|
|
68
|
+
Parameters
|
|
69
|
+
----------
|
|
70
|
+
start_date : datetime
|
|
71
|
+
The start date for the event execution.
|
|
72
|
+
|
|
73
|
+
Returns
|
|
74
|
+
-------
|
|
75
|
+
Event
|
|
76
|
+
Returns the current instance of the Event to allow method chaining.
|
|
77
|
+
"""
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
@abstractmethod
|
|
81
|
+
def endDate(
|
|
82
|
+
self,
|
|
83
|
+
end_date: datetime
|
|
84
|
+
) -> 'IEvent':
|
|
85
|
+
"""
|
|
86
|
+
Set the end date for the event execution.
|
|
87
|
+
|
|
88
|
+
This method allows you to specify an end date for when the event should
|
|
89
|
+
stop executing. The end date must be a datetime instance.
|
|
90
|
+
|
|
91
|
+
Parameters
|
|
92
|
+
----------
|
|
93
|
+
end_date : datetime
|
|
94
|
+
The end date for the event execution.
|
|
95
|
+
|
|
96
|
+
Returns
|
|
97
|
+
-------
|
|
98
|
+
Event
|
|
99
|
+
Returns the current instance of the Event to allow method chaining.
|
|
100
|
+
"""
|
|
101
|
+
pass
|
|
102
|
+
|
|
103
|
+
@abstractmethod
|
|
104
|
+
def randomDelay(
|
|
105
|
+
self,
|
|
106
|
+
max_seconds: int = 10
|
|
107
|
+
) -> 'IEvent':
|
|
108
|
+
"""
|
|
109
|
+
Set a random delay for the event execution.
|
|
110
|
+
|
|
111
|
+
This method allows you to specify a random delay up to a maximum
|
|
112
|
+
number of seconds before the event is executed. This can be useful for
|
|
113
|
+
distributing load or avoiding collisions in scheduled tasks.
|
|
114
|
+
|
|
115
|
+
Parameters
|
|
116
|
+
----------
|
|
117
|
+
max_seconds : int
|
|
118
|
+
The maximum number of seconds to wait before executing the event.
|
|
119
|
+
|
|
120
|
+
Returns
|
|
121
|
+
-------
|
|
122
|
+
Event
|
|
123
|
+
Returns the current instance of the Event to allow method chaining.
|
|
124
|
+
"""
|
|
125
|
+
pass
|
|
126
|
+
|
|
127
|
+
@abstractmethod
|
|
128
|
+
def onceAt(
|
|
129
|
+
self,
|
|
130
|
+
date: datetime
|
|
131
|
+
) -> bool:
|
|
132
|
+
"""
|
|
133
|
+
Schedule the event to run once at a specific date and time.
|
|
134
|
+
|
|
135
|
+
This method allows you to schedule the event to execute once at a specified
|
|
136
|
+
date and time. The date must be a datetime instance.
|
|
137
|
+
|
|
138
|
+
Parameters
|
|
139
|
+
----------
|
|
140
|
+
date : datetime
|
|
141
|
+
The specific date and time when the event should run.
|
|
142
|
+
|
|
143
|
+
Returns
|
|
144
|
+
-------
|
|
145
|
+
bool
|
|
146
|
+
Returns True if the scheduling was successful.
|
|
147
|
+
"""
|
|
148
|
+
pass
|
|
149
|
+
|
|
150
|
+
@abstractmethod
|
|
151
|
+
def everySeconds(
|
|
152
|
+
self,
|
|
153
|
+
seconds: int
|
|
154
|
+
) -> bool:
|
|
155
|
+
"""
|
|
156
|
+
Schedule the event to run at fixed intervals measured in seconds.
|
|
157
|
+
|
|
158
|
+
This method configures the event to execute repeatedly at a specified interval
|
|
159
|
+
(in seconds). Optionally, the event can be restricted to a time window using
|
|
160
|
+
previously set start and end dates. A random delay (jitter) can also be applied
|
|
161
|
+
if configured.
|
|
162
|
+
|
|
163
|
+
Parameters
|
|
164
|
+
----------
|
|
165
|
+
seconds : int
|
|
166
|
+
The interval, in seconds, at which the event should be executed. Must be a positive integer.
|
|
167
|
+
|
|
168
|
+
Returns
|
|
169
|
+
-------
|
|
170
|
+
bool
|
|
171
|
+
Returns True if the interval scheduling was successfully configured.
|
|
172
|
+
|
|
173
|
+
Raises
|
|
174
|
+
------
|
|
175
|
+
CLIOrionisValueError
|
|
176
|
+
If `seconds` is not a positive integer.
|
|
177
|
+
"""
|
|
178
|
+
pass
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import List, Optional
|
|
3
|
+
from orionis.console.tasks.event import Event
|
|
4
|
+
|
|
5
|
+
class ISchedule(ABC):
|
|
6
|
+
|
|
7
|
+
@abstractmethod
|
|
8
|
+
def command(
|
|
9
|
+
self,
|
|
10
|
+
signature: str,
|
|
11
|
+
args: Optional[List[str]] = None
|
|
12
|
+
) -> 'Event':
|
|
13
|
+
"""
|
|
14
|
+
Prepare an Event instance for a given command signature and its arguments.
|
|
15
|
+
|
|
16
|
+
This method validates the provided command signature and arguments, ensuring
|
|
17
|
+
that the command exists among the registered commands and that the arguments
|
|
18
|
+
are in the correct format. If validation passes, it creates and returns an
|
|
19
|
+
Event object representing the scheduled command, including its signature,
|
|
20
|
+
arguments, and description.
|
|
21
|
+
|
|
22
|
+
Parameters
|
|
23
|
+
----------
|
|
24
|
+
signature : str
|
|
25
|
+
The unique signature identifying the command to be scheduled. Must be a non-empty string.
|
|
26
|
+
args : Optional[List[str]], optional
|
|
27
|
+
A list of string arguments to be passed to the command. Defaults to None.
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
Event
|
|
32
|
+
An Event instance containing the command signature, arguments, and its description.
|
|
33
|
+
|
|
34
|
+
Raises
|
|
35
|
+
------
|
|
36
|
+
ValueError
|
|
37
|
+
If the command signature is not a non-empty string, if the arguments are not a list
|
|
38
|
+
of strings or None, or if the command does not exist among the registered commands.
|
|
39
|
+
"""
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
@abstractmethod
|
|
43
|
+
async def start(self) -> None:
|
|
44
|
+
"""
|
|
45
|
+
Start the AsyncIO scheduler instance and keep it running.
|
|
46
|
+
|
|
47
|
+
This method initiates the AsyncIOScheduler which integrates with asyncio event loops
|
|
48
|
+
for asynchronous job execution. It ensures the scheduler starts properly within
|
|
49
|
+
an asyncio context and maintains the event loop active to process scheduled jobs.
|
|
50
|
+
|
|
51
|
+
Returns
|
|
52
|
+
-------
|
|
53
|
+
None
|
|
54
|
+
This method does not return any value. It starts the AsyncIO scheduler and keeps it running.
|
|
55
|
+
"""
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
async def shutdown(self, wait=True) -> None:
|
|
60
|
+
"""
|
|
61
|
+
Shut down the AsyncIO scheduler instance asynchronously.
|
|
62
|
+
|
|
63
|
+
This method gracefully stops the AsyncIOScheduler that handles asynchronous job execution.
|
|
64
|
+
Using async ensures proper cleanup in asyncio environments.
|
|
65
|
+
|
|
66
|
+
Parameters
|
|
67
|
+
----------
|
|
68
|
+
wait : bool, optional
|
|
69
|
+
If True, the method will wait until all currently executing jobs are completed before shutting down the scheduler.
|
|
70
|
+
If False, the scheduler will be shut down immediately without waiting for running jobs to finish. Default is True.
|
|
71
|
+
|
|
72
|
+
Returns
|
|
73
|
+
-------
|
|
74
|
+
None
|
|
75
|
+
This method does not return any value. It shuts down the AsyncIO scheduler.
|
|
76
|
+
"""
|
|
77
|
+
pass
|
|
78
|
+
|
|
79
|
+
@abstractmethod
|
|
80
|
+
async def remove(self, signature: str) -> bool:
|
|
81
|
+
"""
|
|
82
|
+
Remove a scheduled job from the AsyncIO scheduler asynchronously.
|
|
83
|
+
|
|
84
|
+
This method removes a job with the specified signature from both the internal
|
|
85
|
+
jobs dictionary and the AsyncIOScheduler instance. Using async ensures proper
|
|
86
|
+
cleanup in asyncio environments.
|
|
87
|
+
|
|
88
|
+
Parameters
|
|
89
|
+
----------
|
|
90
|
+
signature : str
|
|
91
|
+
The signature of the command/job to remove from the scheduler.
|
|
92
|
+
|
|
93
|
+
Returns
|
|
94
|
+
-------
|
|
95
|
+
bool
|
|
96
|
+
Returns True if the job was successfully removed, False if the job was not found.
|
|
97
|
+
|
|
98
|
+
Raises
|
|
99
|
+
------
|
|
100
|
+
ValueError
|
|
101
|
+
If the signature is not a non-empty string.
|
|
102
|
+
"""
|
|
103
|
+
pass
|
|
104
|
+
|
|
105
|
+
@abstractmethod
|
|
106
|
+
def events(self) -> list:
|
|
107
|
+
"""
|
|
108
|
+
Retrieve all scheduled jobs currently managed by the Scheduler.
|
|
109
|
+
|
|
110
|
+
This method loads and returns a list of dictionaries, each representing a scheduled job
|
|
111
|
+
managed by this Scheduler instance. Each dictionary contains details such as the command
|
|
112
|
+
signature, arguments, purpose, random delay, start and end dates, and additional job details.
|
|
113
|
+
|
|
114
|
+
Returns
|
|
115
|
+
-------
|
|
116
|
+
list of dict
|
|
117
|
+
A list where each element is a dictionary containing information about a scheduled job.
|
|
118
|
+
Each dictionary includes the following keys:
|
|
119
|
+
- 'signature': str, the command signature.
|
|
120
|
+
- 'args': list, the arguments passed to the command.
|
|
121
|
+
- 'purpose': str, the description or purpose of the job.
|
|
122
|
+
- 'random_delay': any, the random delay associated with the job (if any).
|
|
123
|
+
- 'start_date': str or None, the formatted start date and time of the job, or None if not set.
|
|
124
|
+
- 'end_date': str or None, the formatted end date and time of the job, or None if not set.
|
|
125
|
+
- 'details': any, additional details about the job.
|
|
126
|
+
"""
|
|
127
|
+
pass
|
|
@@ -21,7 +21,7 @@ class Reactor(IReactor):
|
|
|
21
21
|
|
|
22
22
|
def __init__(
|
|
23
23
|
self,
|
|
24
|
-
app:
|
|
24
|
+
app: IApplication
|
|
25
25
|
):
|
|
26
26
|
"""
|
|
27
27
|
Initializes a new Reactor instance for command discovery and management.
|
|
@@ -56,7 +56,7 @@ class Reactor(IReactor):
|
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
58
|
# Initialize the application instance, using provided app or creating new Orionis instance
|
|
59
|
-
self.__app = app
|
|
59
|
+
self.__app = app
|
|
60
60
|
|
|
61
61
|
# Set the project root directory to current working directory for module path resolution
|
|
62
62
|
self.__root: str = str(Path.cwd())
|
|
@@ -111,6 +111,7 @@ class Reactor(IReactor):
|
|
|
111
111
|
from orionis.console.commands.publisher import PublisherCommand
|
|
112
112
|
from orionis.console.commands.workflow import WorkFlowGithubCommand
|
|
113
113
|
from orionis.console.commands.cache import CacheClearCommand
|
|
114
|
+
from orionis.console.commands.scheduler_work import ScheduleWorkCommand
|
|
114
115
|
|
|
115
116
|
# List of core command classes to load (extend this list as more core commands are added)
|
|
116
117
|
core_commands = [
|
|
@@ -119,7 +120,8 @@ class Reactor(IReactor):
|
|
|
119
120
|
TestCommand,
|
|
120
121
|
PublisherCommand,
|
|
121
122
|
WorkFlowGithubCommand,
|
|
122
|
-
CacheClearCommand
|
|
123
|
+
CacheClearCommand,
|
|
124
|
+
ScheduleWorkCommand
|
|
123
125
|
]
|
|
124
126
|
|
|
125
127
|
# Iterate through the core command classes and register them
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from dataclasses import dataclass, field
|
|
2
|
+
from typing import List, Optional, Union
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from apscheduler.triggers.cron import CronTrigger
|
|
5
|
+
from apscheduler.triggers.date import DateTrigger
|
|
6
|
+
from apscheduler.triggers.interval import IntervalTrigger
|
|
7
|
+
from orionis.support.entities.base import BaseEntity
|
|
8
|
+
|
|
9
|
+
@dataclass(kw_only=True)
|
|
10
|
+
class Event(BaseEntity):
|
|
11
|
+
"""
|
|
12
|
+
Represents an event with scheduling and execution details.
|
|
13
|
+
|
|
14
|
+
Attributes
|
|
15
|
+
----------
|
|
16
|
+
signature : str
|
|
17
|
+
The unique identifier or signature of the event.
|
|
18
|
+
args : Optional[List[str]]
|
|
19
|
+
A list of arguments associated with the event.
|
|
20
|
+
purpose : Optional[str]
|
|
21
|
+
A description of the event's purpose.
|
|
22
|
+
random_delay : Optional[int]
|
|
23
|
+
An optional random delay (in seconds) before the event is triggered.
|
|
24
|
+
start_date : Optional[datetime]
|
|
25
|
+
The start date and time for the event.
|
|
26
|
+
end_date : Optional[datetime]
|
|
27
|
+
The end date and time for the event.
|
|
28
|
+
trigger : Optional[Union[CronTrigger, DateTrigger, IntervalTrigger]]
|
|
29
|
+
The trigger mechanism for the event.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Unique identifier for the event
|
|
34
|
+
signature: str
|
|
35
|
+
|
|
36
|
+
# List of arguments for the event, defaults to empty list if not provided
|
|
37
|
+
args: Optional[List[str]] = field(default_factory=list)
|
|
38
|
+
|
|
39
|
+
# Description of the event's purpose
|
|
40
|
+
purpose: Optional[str] = None
|
|
41
|
+
|
|
42
|
+
# Optional random delay (in seconds) before the event is triggered
|
|
43
|
+
random_delay: Optional[int] = None
|
|
44
|
+
|
|
45
|
+
# Start date and time for the event
|
|
46
|
+
start_date: Optional[datetime] = None
|
|
47
|
+
|
|
48
|
+
# End date and time for the event
|
|
49
|
+
end_date: Optional[datetime] = None
|
|
50
|
+
|
|
51
|
+
# Trigger mechanism for the event (cron, date, or interval)
|
|
52
|
+
trigger: Optional[Union[CronTrigger, DateTrigger, IntervalTrigger]] = None
|
|
53
|
+
|
|
54
|
+
# Optional details about the event
|
|
55
|
+
details: Optional[str] = None
|
|
@@ -38,7 +38,7 @@ class KernelCLI(IKernelCLI):
|
|
|
38
38
|
|
|
39
39
|
# Retrieve and initialize the reactor instance from the application container.
|
|
40
40
|
# The reactor is responsible for dispatching CLI commands.
|
|
41
|
-
self.__reactor: IReactor = app.make('x-orionis.console.core.reactor'
|
|
41
|
+
self.__reactor: IReactor = app.make('x-orionis.console.core.reactor')
|
|
42
42
|
|
|
43
43
|
# Retrieve and initialize the console instance for command output and error handling.
|
|
44
44
|
self.__console: IConsole = app.make('x-orionis.console.output.console')
|