orionis 0.483.0__tar.gz → 0.485.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.483.0/orionis.egg-info → orionis-0.485.0}/PKG-INFO +1 -1
- orionis-0.485.0/orionis/console/base/scheduler.py +56 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/scheduler_list.py +30 -51
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/scheduler_work.py +13 -38
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/test.py +0 -1
- orionis-0.485.0/orionis/console/contracts/event_listener.py +27 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/core/reactor.py +3 -4
- orionis-0.485.0/orionis/console/entities/listeners.py +241 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/tasks/event.py +7 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/tasks/schedule.py +23 -2
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/application.py +157 -100
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/roots/paths.py +40 -45
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/contracts/application.py +60 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/metadata/framework.py +1 -1
- orionis-0.485.0/orionis/services/file/directory.py +312 -0
- orionis-0.485.0/orionis/services/file/storage.py +7 -0
- {orionis-0.483.0 → orionis-0.485.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.483.0 → orionis-0.485.0}/orionis.egg-info/SOURCES.txt +8 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/root/test_foundation_config_root_paths.py +1 -1
- orionis-0.485.0/tests/testing/records/__init__.py +0 -0
- orionis-0.485.0/tests/testing/validators/__init__.py +0 -0
- orionis-0.485.0/tests/testing/view/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/LICENCE +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/MANIFEST.in +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/README.md +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/app.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/args/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/args/enums/actions.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/base/command.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/base/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/base/contracts/command.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/contracts/event.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dumper/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dumper/contracts/dump.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dynamic/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dynamic/contracts/progress_bar.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.483.0/orionis/console/enums → orionis-0.485.0/orionis/console/entities}/__init__.py +0 -0
- {orionis-0.483.0/orionis/console/output → orionis-0.485.0/orionis/console/enums}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/enums/command.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/enums/event.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/kernel.py +0 -0
- {orionis-0.483.0/orionis/console/output/contracts → orionis-0.485.0/orionis/console/output}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/console.py +0 -0
- {orionis-0.483.0/orionis/console/tasks → orionis-0.485.0/orionis/console/output/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/contracts/console.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/contracts/executor.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/enums/styles.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.483.0/orionis/container → orionis-0.485.0/orionis/console/tasks}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/console/tasks/exception_report.py +0 -0
- /orionis-0.483.0/orionis/container/context/__init__.py → /orionis-0.485.0/orionis/console/tasks/listener.py +0 -0
- {orionis-0.483.0/orionis/container/contracts → orionis-0.485.0/orionis/container}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/container.py +0 -0
- {orionis-0.483.0/orionis/container/entities → orionis-0.485.0/orionis/container/context}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.483.0/orionis/container/facades → orionis-0.485.0/orionis/container/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.483.0/orionis/container/providers → orionis-0.485.0/orionis/container/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.483.0/orionis/foundation → orionis-0.485.0/orionis/container/facades}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.483.0/orionis/foundation/config → orionis-0.485.0/orionis/container/providers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/app → orionis-0.485.0/orionis/foundation}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/app/entities → orionis-0.485.0/orionis/foundation/config}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/auth → orionis-0.485.0/orionis/foundation/config/app}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/auth → orionis-0.485.0/orionis/foundation/config/app}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/app/entities/app.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/app/enums/ciphers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/cache → orionis-0.485.0/orionis/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/cache → orionis-0.485.0/orionis/foundation/config/auth}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/cors → orionis-0.485.0/orionis/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/cors → orionis-0.485.0/orionis/foundation/config/cache}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/database → orionis-0.485.0/orionis/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/database → orionis-0.485.0/orionis/foundation/config/cors}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/filesystems → orionis-0.485.0/orionis/foundation/config/database}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/filesystems/entitites → orionis-0.485.0/orionis/foundation/config/database/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/logging → orionis-0.485.0/orionis/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/logging/entities → orionis-0.485.0/orionis/foundation/config/filesystems/entitites}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/mail → orionis-0.485.0/orionis/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/mail → orionis-0.485.0/orionis/foundation/config/logging}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/queue → orionis-0.485.0/orionis/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/queue → orionis-0.485.0/orionis/foundation/config/mail}/entities/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/roots → orionis-0.485.0/orionis/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/session → orionis-0.485.0/orionis/foundation/config/queue/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/session/entities → orionis-0.485.0/orionis/foundation/config/roots}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/session/helpers → orionis-0.485.0/orionis/foundation/config/session}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/testing → orionis-0.485.0/orionis/foundation/config/session/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/session/entities/session.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.483.0/orionis/foundation/config/testing/entities → orionis-0.485.0/orionis/foundation/config/session/helpers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.483.0/orionis/foundation/contracts → orionis-0.485.0/orionis/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.483.0/orionis/foundation/providers → orionis-0.485.0/orionis/foundation/config/testing/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.483.0/orionis/metadata → orionis-0.485.0/orionis/foundation/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.483.0/orionis/services → orionis-0.485.0/orionis/foundation/providers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.483.0/orionis/services/asynchrony → orionis-0.485.0/orionis/metadata}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/metadata/package.py +0 -0
- {orionis-0.483.0/orionis/services/asynchrony/contracts → orionis-0.485.0/orionis/services}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/environment → orionis-0.485.0/orionis/services/asynchrony}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/environment → orionis-0.485.0/orionis/services/asynchrony}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.483.0/orionis/services/environment/core → orionis-0.485.0/orionis/services/environment}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/environment/dynamic → orionis-0.485.0/orionis/services/environment/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.483.0/orionis/services/environment/helpers → orionis-0.485.0/orionis/services/environment/core}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.483.0/orionis/services/environment/key → orionis-0.485.0/orionis/services/environment/dynamic}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/dynamic/caster.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.483.0/orionis/services/inspirational → orionis-0.485.0/orionis/services/environment/helpers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.483.0/orionis/services/inspirational/contracts → orionis-0.485.0/orionis/services/environment/key}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/key/key_generator.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.483.0/orionis/services/introspection → orionis-0.485.0/orionis/services/file}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/abstract → orionis-0.485.0/orionis/services/inspirational}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/abstract → orionis-0.485.0/orionis/services/inspirational}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/callables → orionis-0.485.0/orionis/services/introspection}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/callables/contracts → orionis-0.485.0/orionis/services/introspection/abstract}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/concretes → orionis-0.485.0/orionis/services/introspection/abstract/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/concretes/contracts → orionis-0.485.0/orionis/services/introspection/callables}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/dependencies → orionis-0.485.0/orionis/services/introspection/callables/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/dependencies/contracts → orionis-0.485.0/orionis/services/introspection/concretes}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/dependencies/entities → orionis-0.485.0/orionis/services/introspection/concretes/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/instances → orionis-0.485.0/orionis/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/instances → orionis-0.485.0/orionis/services/introspection/dependencies}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/modules → orionis-0.485.0/orionis/services/introspection/dependencies/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/modules/contracts → orionis-0.485.0/orionis/services/introspection/instances}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/introspection/objects → orionis-0.485.0/orionis/services/introspection/instances/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/log → orionis-0.485.0/orionis/services/introspection/modules}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/log → orionis-0.485.0/orionis/services/introspection/modules}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/log/handlers → orionis-0.485.0/orionis/services/introspection/objects}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.483.0/orionis/services/system → orionis-0.485.0/orionis/services/log}/__init__.py +0 -0
- {orionis-0.483.0/orionis/services/system → orionis-0.485.0/orionis/services/log}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.483.0/orionis/services/system/runtime → orionis-0.485.0/orionis/services/log/handlers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.483.0/orionis/support → orionis-0.485.0/orionis/services/system}/__init__.py +0 -0
- {orionis-0.483.0/orionis/support/entities → orionis-0.485.0/orionis/services/system/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.483.0/orionis/support/facades → orionis-0.485.0/orionis/services/system/runtime}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.483.0/orionis/support/formatter → orionis-0.485.0/orionis/support}/__init__.py +0 -0
- {orionis-0.483.0/orionis/support/formatter/exceptions → orionis-0.485.0/orionis/support/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.483.0/orionis/support/formatter/exceptions/contracts → orionis-0.485.0/orionis/support/facades}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/application.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.483.0/orionis/support/patterns → orionis-0.485.0/orionis/support/formatter}/__init__.py +0 -0
- {orionis-0.483.0/orionis/support/performance → orionis-0.485.0/orionis/support/formatter/exceptions}/__init__.py +0 -0
- {orionis-0.483.0/orionis/support/performance → orionis-0.485.0/orionis/support/formatter/exceptions}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.483.0/orionis/support/standard → orionis-0.485.0/orionis/support/patterns}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.483.0/orionis/support/standard/contracts → orionis-0.485.0/orionis/support/performance}/__init__.py +0 -0
- {orionis-0.483.0/orionis/test → orionis-0.485.0/orionis/support/performance/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.483.0/orionis/test/cases → orionis-0.485.0/orionis/support/standard}/__init__.py +0 -0
- {orionis-0.483.0/orionis/test → orionis-0.485.0/orionis/support/standard}/contracts/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.483.0/orionis/test/core → orionis-0.485.0/orionis/test}/__init__.py +0 -0
- {orionis-0.483.0/orionis/test/entities → orionis-0.485.0/orionis/test/cases}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.483.0/orionis/test/output → orionis-0.485.0/orionis/test/contracts}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.483.0/orionis/test/records → orionis-0.485.0/orionis/test/core}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/core/unit_test.py +0 -0
- {orionis-0.483.0/orionis/test/view → orionis-0.485.0/orionis/test/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/kernel.py +0 -0
- {orionis-0.483.0/tests → orionis-0.485.0/orionis/test/output}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.483.0/tests/container → orionis-0.485.0/orionis/test/records}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.483.0/tests/container/context → orionis-0.485.0/orionis/test/view}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis/test/view/render.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis.egg-info/dependency_links.txt +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis.egg-info/top_level.txt +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/orionis.egg-info/zip-safe +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/setup.cfg +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/setup.py +0 -0
- {orionis-0.483.0/tests/container/core → orionis-0.485.0/tests}/__init__.py +0 -0
- {orionis-0.483.0/tests/container/entities → orionis-0.485.0/tests/container}/__init__.py +0 -0
- {orionis-0.483.0/tests/container/enums → orionis-0.485.0/tests/container/context}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/context/test_manager.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/context/test_scope.py +0 -0
- {orionis-0.483.0/tests/container/facades → orionis-0.485.0/tests/container/core}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/core/test_advanced_async.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/core/test_async_optimizations.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/core/test_container.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/core/test_singleton.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/core/test_thread_safety.py +0 -0
- {orionis-0.483.0/tests/container/mocks → orionis-0.485.0/tests/container/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/entities/test_binding.py +0 -0
- {orionis-0.483.0/tests/container/providers → orionis-0.485.0/tests/container/enums}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/enums/test_lifetimes.py +0 -0
- {orionis-0.483.0/tests/container/validators → orionis-0.485.0/tests/container/facades}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/facades/test_facade.py +0 -0
- {orionis-0.483.0/tests/example → orionis-0.485.0/tests/container/mocks}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/mocks/mock_advanced_async.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/mocks/mock_async_optimizations.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/mocks/mock_auto_resolution.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/mocks/mock_complex_classes.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/mocks/mock_simple_classes.py +0 -0
- {orionis-0.483.0/tests/foundation → orionis-0.485.0/tests/container/providers}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/providers/test_providers.py +0 -0
- {orionis-0.483.0/tests/foundation/config → orionis-0.485.0/tests/container/validators}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_implements.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_abstract_class.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_callable.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_concrete_class.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_instance.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_not_subclass.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_subclass.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_is_valid_alias.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/container/validators/test_lifetime.py +0 -0
- {orionis-0.483.0/tests/foundation/config/app → orionis-0.485.0/tests/example}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/example/test_example.py +0 -0
- {orionis-0.483.0/tests/foundation/config/auth → orionis-0.485.0/tests/foundation}/__init__.py +0 -0
- {orionis-0.483.0/tests/foundation/config/cache → orionis-0.485.0/tests/foundation/config}/__init__.py +0 -0
- {orionis-0.483.0/tests/foundation/config/cors → orionis-0.485.0/tests/foundation/config/app}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/app/test_foundation_config_app.py +0 -0
- {orionis-0.483.0/tests/foundation/config/database → orionis-0.485.0/tests/foundation/config/auth}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/auth/test_foundation_config_auth.py +0 -0
- {orionis-0.483.0/tests/foundation/config/filesystems → orionis-0.485.0/tests/foundation/config/cache}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/cache/test_foundation_config_cache.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -0
- {orionis-0.483.0/tests/foundation/config/logging → orionis-0.485.0/tests/foundation/config/cors}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/cors/test_foundation_config_cors.py +0 -0
- {orionis-0.483.0/tests/foundation/config/mail → orionis-0.485.0/tests/foundation/config/database}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -0
- {orionis-0.483.0/tests/foundation/config/queue → orionis-0.485.0/tests/foundation/config/filesystems}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -0
- {orionis-0.483.0/tests/foundation/config/root → orionis-0.485.0/tests/foundation/config/logging}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -0
- {orionis-0.483.0/tests/foundation/config/session → orionis-0.485.0/tests/foundation/config/mail}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/mail/test_foundation_config_mail.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -0
- {orionis-0.483.0/tests/foundation/config/startup → orionis-0.485.0/tests/foundation/config/queue}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/queue/test_foundation_config_queue.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -0
- {orionis-0.483.0/tests/foundation/config/testing → orionis-0.485.0/tests/foundation/config/root}/__init__.py +0 -0
- {orionis-0.483.0/tests/metadata → orionis-0.485.0/tests/foundation/config/session}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/session/test_foundation_config_session.py +0 -0
- {orionis-0.483.0/tests/services → orionis-0.485.0/tests/foundation/config/startup}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/startup/test_foundation_config_startup.py +0 -0
- {orionis-0.483.0/tests/services/asynchrony → orionis-0.485.0/tests/foundation/config/testing}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/foundation/config/testing/test_foundation_config_testing.py +0 -0
- {orionis-0.483.0/tests/services/environment → orionis-0.485.0/tests/metadata}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/metadata/test_metadata_framework.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/metadata/test_metadata_package.py +0 -0
- {orionis-0.483.0/tests/services/introspection → orionis-0.485.0/tests/services}/__init__.py +0 -0
- {orionis-0.483.0/tests/services/introspection/dependencies → orionis-0.485.0/tests/services/asynchrony}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -0
- {orionis-0.483.0/tests/services/introspection/dependencies/mocks → orionis-0.485.0/tests/services/environment}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/environment/test_services_environment.py +0 -0
- {orionis-0.483.0/tests/services/introspection/reflection → orionis-0.485.0/tests/services/introspection}/__init__.py +0 -0
- {orionis-0.483.0/tests/services/introspection/reflection/mock → orionis-0.485.0/tests/services/introspection/dependencies}/__init__.py +0 -0
- {orionis-0.483.0/tests/services/log → orionis-0.485.0/tests/services/introspection/dependencies/mocks}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/dependencies/mocks/mock_user.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -0
- {orionis-0.483.0/tests/services/system → orionis-0.485.0/tests/services/introspection/reflection}/__init__.py +0 -0
- {orionis-0.483.0/tests/support → orionis-0.485.0/tests/services/introspection/reflection/mock}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/test_reflection_abstract.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/test_reflection_callable.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/test_reflection_concrete.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/test_reflection_instance.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/reflection/test_reflection_module.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/introspection/test_reflection.py +0 -0
- {orionis-0.483.0/tests/support/entities → orionis-0.485.0/tests/services/log}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/log/test_log.py +0 -0
- {orionis-0.483.0/tests/support/patterns → orionis-0.485.0/tests/services/system}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/system/test_services_system_imports.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/services/system/test_services_system_workers.py +0 -0
- {orionis-0.483.0/tests/support/patterns/singleton → orionis-0.485.0/tests/support}/__init__.py +0 -0
- {orionis-0.483.0/tests/support/standard → orionis-0.485.0/tests/support/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/support/entities/mock_dataclass.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/support/entities/test_base.py +0 -0
- {orionis-0.483.0/tests/support/wrapper → orionis-0.485.0/tests/support/patterns}/__init__.py +0 -0
- {orionis-0.483.0/tests/testing → orionis-0.485.0/tests/support/patterns/singleton}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/support/patterns/singleton/test_patterns_singleton.py +0 -0
- {orionis-0.483.0/tests/testing/cases → orionis-0.485.0/tests/support/standard}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/support/standard/test_services_std.py +0 -0
- {orionis-0.483.0/tests/testing/entities → orionis-0.485.0/tests/support/wrapper}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/support/wrapper/test_services_wrapper_docdict.py +0 -0
- {orionis-0.483.0/tests/testing/enums → orionis-0.485.0/tests/testing}/__init__.py +0 -0
- {orionis-0.483.0/tests/testing/output → orionis-0.485.0/tests/testing/cases}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/cases/test_testing_asynchronous.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/cases/test_testing_synchronous.py +0 -0
- {orionis-0.483.0/tests/testing/records → orionis-0.485.0/tests/testing/entities}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/entities/test_testing_result.py +0 -0
- {orionis-0.483.0/tests/testing/validators → orionis-0.485.0/tests/testing/enums}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/enums/test_testing_status.py +0 -0
- {orionis-0.483.0/tests/testing/view → orionis-0.485.0/tests/testing/output}/__init__.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/output/test_testing_dumper.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/output/test_testing_printer.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/records/test_testing_records.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/test_testing_unit.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/validators/test_testing_validators.py +0 -0
- {orionis-0.483.0 → orionis-0.485.0}/tests/testing/view/test_render.py +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from orionis.console.contracts.schedule import ISchedule
|
|
3
|
+
|
|
4
|
+
class BaseScheduler:
|
|
5
|
+
|
|
6
|
+
# Pause Global Scheduler at a specific time
|
|
7
|
+
PAUSE_AT: datetime = None
|
|
8
|
+
|
|
9
|
+
# Resume Global Scheduler at a specific time
|
|
10
|
+
RESUME_AT: datetime = None
|
|
11
|
+
|
|
12
|
+
# Finalize Global Scheduler at a specific time
|
|
13
|
+
FINALIZE_AT: datetime = None
|
|
14
|
+
|
|
15
|
+
def tasks(self, schedule: ISchedule):
|
|
16
|
+
"""
|
|
17
|
+
Defines and registers scheduled tasks for the application.
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
schedule : ISchedule
|
|
22
|
+
The schedule object used to define and register scheduled commands.
|
|
23
|
+
|
|
24
|
+
Returns
|
|
25
|
+
-------
|
|
26
|
+
None
|
|
27
|
+
This method does not return any value. It is intended to be overridden
|
|
28
|
+
by subclasses to specify scheduled tasks.
|
|
29
|
+
|
|
30
|
+
Notes
|
|
31
|
+
-----
|
|
32
|
+
This method should be implemented in subclasses to add specific tasks
|
|
33
|
+
to the scheduler using the provided `schedule` object.
|
|
34
|
+
"""
|
|
35
|
+
# This method should be overridden in subclasses to define scheduled tasks.
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
def onStarted(self):
|
|
39
|
+
# Called when the scheduler is started.
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
def onPaused(self):
|
|
43
|
+
# Called when the scheduler is paused.
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
def onResumed(self):
|
|
47
|
+
# Called when the scheduler is resumed.
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
def onFinalized(self):
|
|
51
|
+
# Called when the scheduler is finalized.
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
def onError(self, error: Exception):
|
|
55
|
+
# Called when an error occurs in the scheduler.
|
|
56
|
+
pass
|
|
@@ -11,20 +11,23 @@ from orionis.foundation.contracts.application import IApplication
|
|
|
11
11
|
|
|
12
12
|
class ScheduleListCommand(BaseCommand):
|
|
13
13
|
"""
|
|
14
|
-
Command class to display
|
|
14
|
+
Command class to display a list of scheduled tasks defined in the Orionis application.
|
|
15
15
|
|
|
16
16
|
Methods
|
|
17
17
|
-------
|
|
18
|
-
handle(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
handle(app: IApplication, console: Console) -> bool
|
|
19
|
+
Lists all scheduled jobs configured in the application by retrieving them from the
|
|
20
|
+
ISchedule service and displaying them in a formatted table using the rich library.
|
|
21
|
+
|
|
22
|
+
Attributes
|
|
23
|
+
----------
|
|
24
|
+
timestamps : bool
|
|
25
|
+
Indicates whether timestamps will be shown in the command output.
|
|
26
|
+
signature : str
|
|
27
|
+
Command signature for invocation.
|
|
28
|
+
description : str
|
|
29
|
+
Description of the command.
|
|
22
30
|
|
|
23
|
-
Returns
|
|
24
|
-
-------
|
|
25
|
-
bool
|
|
26
|
-
Returns True if the scheduled jobs are listed successfully or if no jobs are found.
|
|
27
|
-
Raises CLIOrionisRuntimeError if an error occurs during execution.
|
|
28
31
|
"""
|
|
29
32
|
|
|
30
33
|
# Indicates whether timestamps will be shown in the command output
|
|
@@ -36,18 +39,19 @@ class ScheduleListCommand(BaseCommand):
|
|
|
36
39
|
# Command description
|
|
37
40
|
description: str = "Executes the scheduled tasks defined in the application."
|
|
38
41
|
|
|
39
|
-
def handle(self,
|
|
42
|
+
def handle(self, app: IApplication, console: Console) -> bool:
|
|
40
43
|
"""
|
|
41
44
|
Displays a table of scheduled jobs defined in the application.
|
|
42
45
|
|
|
43
|
-
This method dynamically
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
encountered during the process
|
|
46
|
+
This method dynamically retrieves the scheduler instance and the ISchedule service
|
|
47
|
+
from the application, registers scheduled tasks, and fetches the list of scheduled
|
|
48
|
+
jobs. It then prints the jobs in a formatted table using the rich library. If no
|
|
49
|
+
jobs are found, a message is displayed. Any errors encountered during the process
|
|
50
|
+
are reported as CLIOrionisRuntimeError.
|
|
47
51
|
|
|
48
52
|
Parameters
|
|
49
53
|
----------
|
|
50
|
-
|
|
54
|
+
app : IApplication
|
|
51
55
|
The application instance providing configuration and service resolution.
|
|
52
56
|
console : Console
|
|
53
57
|
The rich Console instance used for output.
|
|
@@ -58,45 +62,19 @@ class ScheduleListCommand(BaseCommand):
|
|
|
58
62
|
Returns True if the scheduled jobs are listed successfully or if no jobs are found.
|
|
59
63
|
Raises CLIOrionisRuntimeError if an error occurs during execution.
|
|
60
64
|
"""
|
|
61
|
-
|
|
62
65
|
try:
|
|
63
66
|
|
|
64
|
-
#
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# Get the base path from the current working directory
|
|
68
|
-
base_path = Path(os.getcwd()).resolve()
|
|
69
|
-
scheduler_path = Path(scheduler_path).resolve()
|
|
70
|
-
rel_path = scheduler_path.relative_to(base_path)
|
|
71
|
-
|
|
72
|
-
# Convert the path to a module name (replace separators with dots, remove .py)
|
|
73
|
-
module_name = ".".join(rel_path.with_suffix('').parts)
|
|
74
|
-
|
|
75
|
-
# Dynamically import the scheduler module
|
|
76
|
-
scheduler_module = importlib.import_module(module_name)
|
|
67
|
+
# Retrieve the Scheduler instance from the application
|
|
68
|
+
Scheduler = app.getScheduler()
|
|
77
69
|
|
|
78
|
-
#
|
|
79
|
-
|
|
70
|
+
# Create an instance of the ISchedule service
|
|
71
|
+
schedule_service: ISchedule = app.make(ISchedule)
|
|
80
72
|
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
raise CLIOrionisRuntimeError(f"Scheduler class not found in module {module_name}")
|
|
84
|
-
|
|
85
|
-
# Retrieve the 'tasks' method from the Scheduler class
|
|
86
|
-
task_method = getattr(Scheduler, "tasks", None)
|
|
87
|
-
|
|
88
|
-
# Raise an error if the 'tasks' method is not found
|
|
89
|
-
if task_method is None:
|
|
90
|
-
raise CLIOrionisRuntimeError(f"Method 'tasks' not found in Scheduler class in module {module_name}")
|
|
91
|
-
|
|
92
|
-
# Create an instance of ISchedule using the application container
|
|
93
|
-
schedule_serice: ISchedule = orionis.make(ISchedule)
|
|
94
|
-
|
|
95
|
-
# Initialize the scheduled tasks by calling the 'tasks' method
|
|
96
|
-
task_method(schedule_serice)
|
|
73
|
+
# Register scheduled tasks using the Scheduler's tasks method
|
|
74
|
+
Scheduler.tasks(schedule_service)
|
|
97
75
|
|
|
98
76
|
# Retrieve the list of scheduled jobs/events
|
|
99
|
-
list_tasks =
|
|
77
|
+
list_tasks = schedule_service.events()
|
|
100
78
|
|
|
101
79
|
# Display a message if no scheduled jobs are found
|
|
102
80
|
if not list_tasks:
|
|
@@ -134,6 +112,7 @@ class ScheduleListCommand(BaseCommand):
|
|
|
134
112
|
return True
|
|
135
113
|
|
|
136
114
|
except Exception as exc:
|
|
137
|
-
|
|
138
115
|
# Catch any unexpected exceptions and raise as a CLIOrionisRuntimeError
|
|
139
|
-
raise CLIOrionisRuntimeError(
|
|
116
|
+
raise CLIOrionisRuntimeError(
|
|
117
|
+
f"An unexpected error occurred while listing the scheduled jobs: {exc}"
|
|
118
|
+
)
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
import os
|
|
3
1
|
from datetime import datetime
|
|
4
|
-
from pathlib import Path
|
|
5
2
|
from rich.console import Console
|
|
6
3
|
from rich.panel import Panel
|
|
7
4
|
from rich.text import Text
|
|
@@ -47,18 +44,17 @@ class ScheduleWorkCommand(BaseCommand):
|
|
|
47
44
|
# Command description
|
|
48
45
|
description: str = "Executes the scheduled tasks defined in the application."
|
|
49
46
|
|
|
50
|
-
async def handle(self,
|
|
47
|
+
async def handle(self, app: IApplication, console: Console) -> bool:
|
|
51
48
|
"""
|
|
52
49
|
Executes the scheduled tasks defined in the application's scheduler.
|
|
53
50
|
|
|
54
|
-
This method
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
handles errors by raising CLIOrionisRuntimeError exceptions.
|
|
51
|
+
This method retrieves the Scheduler instance from the application, registers scheduled tasks
|
|
52
|
+
with the ISchedule service, and starts the scheduler worker asynchronously. It provides user
|
|
53
|
+
feedback via the console and handles errors by raising CLIOrionisRuntimeError exceptions.
|
|
58
54
|
|
|
59
55
|
Parameters
|
|
60
56
|
----------
|
|
61
|
-
|
|
57
|
+
app : IApplication
|
|
62
58
|
The application instance providing configuration and service resolution.
|
|
63
59
|
console : Console
|
|
64
60
|
The Rich console instance used for displaying output to the user.
|
|
@@ -66,8 +62,7 @@ class ScheduleWorkCommand(BaseCommand):
|
|
|
66
62
|
Returns
|
|
67
63
|
-------
|
|
68
64
|
bool
|
|
69
|
-
|
|
70
|
-
a CLIOrionisRuntimeError is raised.
|
|
65
|
+
True if the scheduler worker starts successfully.
|
|
71
66
|
|
|
72
67
|
Raises
|
|
73
68
|
------
|
|
@@ -75,37 +70,15 @@ class ScheduleWorkCommand(BaseCommand):
|
|
|
75
70
|
If the scheduler module, class, or tasks method cannot be found, or if any unexpected error occurs.
|
|
76
71
|
"""
|
|
77
72
|
try:
|
|
78
|
-
# Get the absolute path to the scheduler module from the application configuration
|
|
79
|
-
scheduler_path = orionis.path('console_scheduler')
|
|
80
73
|
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
scheduler_path = Path(scheduler_path).resolve()
|
|
84
|
-
|
|
85
|
-
# Compute the relative path from the base path to the scheduler module
|
|
86
|
-
rel_path = scheduler_path.relative_to(base_path)
|
|
87
|
-
|
|
88
|
-
# Convert the relative path to a Python module name (dot notation, no .py extension)
|
|
89
|
-
module_name = ".".join(rel_path.with_suffix('').parts)
|
|
90
|
-
|
|
91
|
-
# Dynamically import the scheduler module
|
|
92
|
-
scheduler_module = importlib.import_module(module_name)
|
|
93
|
-
|
|
94
|
-
# Retrieve the Scheduler class from the imported module
|
|
95
|
-
Scheduler = getattr(scheduler_module, "Scheduler", None)
|
|
96
|
-
if Scheduler is None:
|
|
97
|
-
raise CLIOrionisRuntimeError(f"Scheduler class not found in module {module_name}")
|
|
98
|
-
|
|
99
|
-
# Retrieve the 'tasks' method from the Scheduler class
|
|
100
|
-
task_method = getattr(Scheduler, "tasks", None)
|
|
101
|
-
if task_method is None:
|
|
102
|
-
raise CLIOrionisRuntimeError(f"Method 'tasks' not found in Scheduler class in module {module_name}")
|
|
74
|
+
# Retrieve the Scheduler instance from the application
|
|
75
|
+
Scheduler = app.getScheduler()
|
|
103
76
|
|
|
104
77
|
# Create an instance of the ISchedule service
|
|
105
|
-
schedule_serice: ISchedule =
|
|
78
|
+
schedule_serice: ISchedule = app.make(ISchedule)
|
|
106
79
|
|
|
107
80
|
# Register scheduled tasks using the Scheduler's tasks method
|
|
108
|
-
|
|
81
|
+
Scheduler.tasks(schedule_serice)
|
|
109
82
|
|
|
110
83
|
# Display a start message for the scheduler worker
|
|
111
84
|
console.line()
|
|
@@ -130,4 +103,6 @@ class ScheduleWorkCommand(BaseCommand):
|
|
|
130
103
|
|
|
131
104
|
except Exception as exc:
|
|
132
105
|
# Raise any unexpected exceptions as CLIOrionisRuntimeError
|
|
133
|
-
raise CLIOrionisRuntimeError(
|
|
106
|
+
raise CLIOrionisRuntimeError(
|
|
107
|
+
f"An unexpected error occurred while starting the scheduler worker: {exc}"
|
|
108
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
|
|
3
|
+
class IEventListener(ABC):
|
|
4
|
+
|
|
5
|
+
@abstractmethod
|
|
6
|
+
def before(self, event):
|
|
7
|
+
pass
|
|
8
|
+
|
|
9
|
+
@abstractmethod
|
|
10
|
+
def after(self, event):
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
@abstractmethod
|
|
14
|
+
def onSuccess(self, event):
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
@abstractmethod
|
|
18
|
+
def onFailure(self, event):
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
@abstractmethod
|
|
22
|
+
def onMissed(self, event):
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
@abstractmethod
|
|
26
|
+
def onMaxInstances(self, event):
|
|
27
|
+
pass
|
|
@@ -3,7 +3,6 @@ import os
|
|
|
3
3
|
import re
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Any, List, Optional
|
|
6
|
-
from orionis.app import Orionis
|
|
7
6
|
from orionis.console.args.argument import CLIArgument
|
|
8
7
|
from orionis.console.base.command import BaseCommand
|
|
9
8
|
from orionis.console.base.contracts.command import IBaseCommand
|
|
@@ -51,7 +50,7 @@ class Reactor(IReactor):
|
|
|
51
50
|
-----
|
|
52
51
|
- Command discovery is performed automatically during initialization
|
|
53
52
|
- The current working directory is used as the project root for module resolution
|
|
54
|
-
- Commands are loaded from the path specified by app.path('
|
|
53
|
+
- Commands are loaded from the path specified by app.path('commands')
|
|
55
54
|
- The internal command registry is initialized as an empty dictionary before loading
|
|
56
55
|
"""
|
|
57
56
|
|
|
@@ -59,13 +58,13 @@ class Reactor(IReactor):
|
|
|
59
58
|
self.__app = app
|
|
60
59
|
|
|
61
60
|
# Set the project root directory to current working directory for module path resolution
|
|
62
|
-
self.__root
|
|
61
|
+
self.__root = self.__app.path('root') or Path().cwd()
|
|
63
62
|
|
|
64
63
|
# Initialize the internal command registry as an empty dictionary
|
|
65
64
|
self.__commands: dict[str, Command] = {}
|
|
66
65
|
|
|
67
66
|
# Automatically discover and load command classes from the console commands directory
|
|
68
|
-
self.__loadCommands(str(self.__app.path('
|
|
67
|
+
self.__loadCommands(str(self.__app.path('commands')), self.__root)
|
|
69
68
|
|
|
70
69
|
# Load core command classes provided by the Orionis framework
|
|
71
70
|
self.__loadCoreCommands()
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
# ==============================================================
|
|
6
|
+
# Base Events
|
|
7
|
+
# ==============================================================
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class SchedulerEventData:
|
|
11
|
+
"""
|
|
12
|
+
Base class for scheduler-related events.
|
|
13
|
+
|
|
14
|
+
Attributes
|
|
15
|
+
----------
|
|
16
|
+
code : int
|
|
17
|
+
The numeric event code indicating the event type.
|
|
18
|
+
"""
|
|
19
|
+
code: int
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class JobEventData(SchedulerEventData):
|
|
24
|
+
"""
|
|
25
|
+
Base class for job-related events.
|
|
26
|
+
|
|
27
|
+
Attributes
|
|
28
|
+
----------
|
|
29
|
+
code : int
|
|
30
|
+
The numeric event code indicating the event type.
|
|
31
|
+
job_id : str
|
|
32
|
+
The identifier of the job.
|
|
33
|
+
jobstore : str
|
|
34
|
+
The name of the job store where the job is located.
|
|
35
|
+
"""
|
|
36
|
+
job_id: str
|
|
37
|
+
jobstore: str
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# ==============================================================
|
|
41
|
+
# Scheduler Lifecycle Events
|
|
42
|
+
# ==============================================================
|
|
43
|
+
|
|
44
|
+
@dataclass
|
|
45
|
+
class SchedulerStarted(SchedulerEventData):
|
|
46
|
+
"""
|
|
47
|
+
Event triggered when the scheduler starts running.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@dataclass
|
|
52
|
+
class SchedulerShutdown(SchedulerEventData):
|
|
53
|
+
"""
|
|
54
|
+
Event triggered when the scheduler shuts down.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass
|
|
59
|
+
class SchedulerPaused(SchedulerEventData):
|
|
60
|
+
"""
|
|
61
|
+
Event triggered when the scheduler is paused.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@dataclass
|
|
66
|
+
class SchedulerResumed(SchedulerEventData):
|
|
67
|
+
"""
|
|
68
|
+
Event triggered when the scheduler is resumed.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# ==============================================================
|
|
73
|
+
# Executor and JobStore Events
|
|
74
|
+
# ==============================================================
|
|
75
|
+
|
|
76
|
+
@dataclass
|
|
77
|
+
class ExecutorAdded(SchedulerEventData):
|
|
78
|
+
"""
|
|
79
|
+
Event triggered when an executor is added.
|
|
80
|
+
|
|
81
|
+
Attributes
|
|
82
|
+
----------
|
|
83
|
+
alias : str
|
|
84
|
+
The alias of the added executor.
|
|
85
|
+
"""
|
|
86
|
+
alias: str
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@dataclass
|
|
90
|
+
class ExecutorRemoved(SchedulerEventData):
|
|
91
|
+
"""
|
|
92
|
+
Event triggered when an executor is removed.
|
|
93
|
+
|
|
94
|
+
Attributes
|
|
95
|
+
----------
|
|
96
|
+
alias : str
|
|
97
|
+
The alias of the removed executor.
|
|
98
|
+
"""
|
|
99
|
+
alias: str
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@dataclass
|
|
103
|
+
class JobstoreAdded(SchedulerEventData):
|
|
104
|
+
"""
|
|
105
|
+
Event triggered when a job store is added.
|
|
106
|
+
|
|
107
|
+
Attributes
|
|
108
|
+
----------
|
|
109
|
+
alias : str
|
|
110
|
+
The alias of the added job store.
|
|
111
|
+
"""
|
|
112
|
+
alias: str
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@dataclass
|
|
116
|
+
class JobstoreRemoved(SchedulerEventData):
|
|
117
|
+
"""
|
|
118
|
+
Event triggered when a job store is removed.
|
|
119
|
+
|
|
120
|
+
Attributes
|
|
121
|
+
----------
|
|
122
|
+
alias : str
|
|
123
|
+
The alias of the removed job store.
|
|
124
|
+
"""
|
|
125
|
+
alias: str
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@dataclass
|
|
129
|
+
class AllJobsRemoved(SchedulerEventData):
|
|
130
|
+
"""
|
|
131
|
+
Event triggered when all jobs are removed from a job store.
|
|
132
|
+
|
|
133
|
+
Attributes
|
|
134
|
+
----------
|
|
135
|
+
jobstore : str
|
|
136
|
+
The alias of the job store from which jobs were removed.
|
|
137
|
+
"""
|
|
138
|
+
jobstore: str
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
# ==============================================================
|
|
142
|
+
# Job Management Events
|
|
143
|
+
# ==============================================================
|
|
144
|
+
|
|
145
|
+
@dataclass
|
|
146
|
+
class JobAdded(JobEventData):
|
|
147
|
+
"""
|
|
148
|
+
Event triggered when a job is added to a job store.
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@dataclass
|
|
153
|
+
class JobRemoved(JobEventData):
|
|
154
|
+
"""
|
|
155
|
+
Event triggered when a job is removed from a job store.
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@dataclass
|
|
160
|
+
class JobModified(JobEventData):
|
|
161
|
+
"""
|
|
162
|
+
Event triggered when a job is modified in a job store.
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
@dataclass
|
|
167
|
+
class JobSubmitted(JobEventData):
|
|
168
|
+
"""
|
|
169
|
+
Event triggered when a job is submitted to an executor.
|
|
170
|
+
|
|
171
|
+
Attributes
|
|
172
|
+
----------
|
|
173
|
+
run_time : datetime
|
|
174
|
+
The datetime when the job was scheduled to run.
|
|
175
|
+
"""
|
|
176
|
+
run_time: datetime
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
@dataclass
|
|
180
|
+
class JobMaxInstances(JobEventData):
|
|
181
|
+
"""
|
|
182
|
+
Event triggered when a job exceeds its maximum allowed instances.
|
|
183
|
+
|
|
184
|
+
Attributes
|
|
185
|
+
----------
|
|
186
|
+
run_time : datetime
|
|
187
|
+
The datetime when the job was scheduled to run.
|
|
188
|
+
"""
|
|
189
|
+
run_time: datetime
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
# ==============================================================
|
|
193
|
+
# Job Execution Events
|
|
194
|
+
# ==============================================================
|
|
195
|
+
|
|
196
|
+
@dataclass
|
|
197
|
+
class JobExecuted(JobEventData):
|
|
198
|
+
"""
|
|
199
|
+
Event triggered when a job finishes successfully.
|
|
200
|
+
|
|
201
|
+
Attributes
|
|
202
|
+
----------
|
|
203
|
+
scheduled_run_time : datetime
|
|
204
|
+
The datetime when the job was scheduled to run.
|
|
205
|
+
retval : Any
|
|
206
|
+
The return value of the job function.
|
|
207
|
+
"""
|
|
208
|
+
scheduled_run_time: datetime
|
|
209
|
+
retval: Any
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
@dataclass
|
|
213
|
+
class JobError(JobEventData):
|
|
214
|
+
"""
|
|
215
|
+
Event triggered when a job raises an exception during execution.
|
|
216
|
+
|
|
217
|
+
Attributes
|
|
218
|
+
----------
|
|
219
|
+
scheduled_run_time : datetime
|
|
220
|
+
The datetime when the job was scheduled to run.
|
|
221
|
+
exception : Exception
|
|
222
|
+
The exception raised by the job.
|
|
223
|
+
traceback : str
|
|
224
|
+
The traceback of the exception.
|
|
225
|
+
"""
|
|
226
|
+
scheduled_run_time: datetime
|
|
227
|
+
exception: Exception
|
|
228
|
+
traceback: str
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
@dataclass
|
|
232
|
+
class JobMissed(JobEventData):
|
|
233
|
+
"""
|
|
234
|
+
Event triggered when a job run is missed due to scheduler constraints.
|
|
235
|
+
|
|
236
|
+
Attributes
|
|
237
|
+
----------
|
|
238
|
+
scheduled_run_time : datetime
|
|
239
|
+
The datetime when the job was originally scheduled to run.
|
|
240
|
+
"""
|
|
241
|
+
scheduled_run_time: datetime
|
|
@@ -5,6 +5,7 @@ from apscheduler.triggers.cron import CronTrigger
|
|
|
5
5
|
from apscheduler.triggers.date import DateTrigger
|
|
6
6
|
from apscheduler.triggers.interval import IntervalTrigger
|
|
7
7
|
from orionis.console.contracts.event import IEvent
|
|
8
|
+
from orionis.console.contracts.event_listener import IEventListener
|
|
8
9
|
from orionis.console.enums.event import Event as EventEntity
|
|
9
10
|
from orionis.console.exceptions import CLIOrionisValueError
|
|
10
11
|
|
|
@@ -249,6 +250,12 @@ class Event(IEvent):
|
|
|
249
250
|
# Return self to support method chaining
|
|
250
251
|
return self
|
|
251
252
|
|
|
253
|
+
def listener(
|
|
254
|
+
self,
|
|
255
|
+
listener: 'IEventListener'
|
|
256
|
+
) -> 'Event':
|
|
257
|
+
return self
|
|
258
|
+
|
|
252
259
|
def onceAt(
|
|
253
260
|
self,
|
|
254
261
|
date: datetime
|
|
@@ -2,7 +2,7 @@ import asyncio
|
|
|
2
2
|
import logging
|
|
3
3
|
from typing import Dict, List, Optional
|
|
4
4
|
import pytz
|
|
5
|
-
from apscheduler.events import EVENT_JOB_MISSED, EVENT_JOB_ERROR
|
|
5
|
+
from apscheduler.events import EVENT_JOB_MISSED, EVENT_JOB_ERROR, EVENT_ALL, EVENT_SCHEDULER_STARTED
|
|
6
6
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler as APSAsyncIOScheduler
|
|
7
7
|
from orionis.console.contracts.reactor import IReactor
|
|
8
8
|
from orionis.console.contracts.schedule import ISchedule
|
|
@@ -80,7 +80,8 @@ class Scheduler(ISchedule):
|
|
|
80
80
|
self.__jobs: List[dict] = []
|
|
81
81
|
|
|
82
82
|
# Add a listener to the scheduler to capture job events such as missed jobs or errors.
|
|
83
|
-
self.
|
|
83
|
+
if self.__app.config('app.debug', False):
|
|
84
|
+
self.__scheduler.add_listener(self.__listener, EVENT_ALL)
|
|
84
85
|
|
|
85
86
|
# Log the initialization of the Scheduler.
|
|
86
87
|
self.__logger.info("Orionis scheduler initialized.")
|
|
@@ -313,6 +314,26 @@ class Scheduler(ISchedule):
|
|
|
313
314
|
# Return the Event instance for further scheduling configuration
|
|
314
315
|
return self.__events[signature]
|
|
315
316
|
|
|
317
|
+
def addListenerOnSchedulerStarted(
|
|
318
|
+
self,
|
|
319
|
+
listener: callable
|
|
320
|
+
) -> None:
|
|
321
|
+
"""
|
|
322
|
+
Add a listener for the scheduler started event.
|
|
323
|
+
|
|
324
|
+
This method allows you to register a callback function that will be called
|
|
325
|
+
when the scheduler starts. The callback should accept a single argument, which
|
|
326
|
+
is the event object containing details about the scheduler start event.
|
|
327
|
+
|
|
328
|
+
Parameters
|
|
329
|
+
----------
|
|
330
|
+
listener : callable
|
|
331
|
+
A function that will be called when the scheduler starts.
|
|
332
|
+
It should accept one parameter, which is the event object.
|
|
333
|
+
"""
|
|
334
|
+
# Register the listener for the scheduler started event
|
|
335
|
+
self.__scheduler.add_listener(listener, EVENT_SCHEDULER_STARTED)
|
|
336
|
+
|
|
316
337
|
async def start(self) -> None:
|
|
317
338
|
"""
|
|
318
339
|
Start the AsyncIO scheduler instance and keep it running.
|