orionis 0.253.0__py3-none-any.whl → 0.266.0__py3-none-any.whl
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/application.py +6 -0
- orionis/framework.py +1 -1
- orionis/luminate/{application.py → _application.py} +21 -19
- orionis/luminate/{container → _container}/container.py +4 -4
- orionis/luminate/{container → _container}/container_integrity.py +2 -2
- orionis/luminate/{container → _container}/resolve.py +2 -2
- orionis/luminate/{contracts → _contracts}/application.py +2 -2
- orionis/luminate/{contracts → _contracts}/console/task_manager.py +1 -1
- orionis/luminate/{contracts → _contracts}/facades/commands/scheduler_facade.py +1 -1
- orionis/luminate/{contracts → _contracts}/facades/facade.py +4 -3
- orionis/luminate/{contracts → _contracts}/foundation/providers/service_providers_bootstrapper.py +2 -2
- orionis/luminate/{contracts → _contracts}/providers/service_provider.py +1 -1
- orionis/luminate/{facades → _facades}/app_facade.py +2 -2
- orionis/luminate/{facades → _facades}/commands/commands_facade.py +3 -3
- orionis/luminate/{facades → _facades}/commands/scheduler_facade.py +3 -3
- orionis/luminate/{facades → _facades}/config/config_facade.py +3 -3
- orionis/luminate/{facades → _facades}/environment/environment_facade.py +3 -3
- orionis/luminate/{facades → _facades}/files/path_facade.py +4 -4
- orionis/luminate/{facades → _facades}/log/log_facade.py +2 -2
- orionis/luminate/{foundation → _foundation}/console/command_bootstrapper.py +2 -2
- orionis/luminate/{foundation → _foundation}/environment/environment_bootstrapper.py +3 -3
- orionis/luminate/{foundation → _foundation/foundation}/config/config_bootstrapper.py +3 -3
- orionis/luminate/{foundation → _foundation}/providers/service_providers_bootstrapper.py +4 -4
- orionis/luminate/{providers → _providers}/commands/reactor_commands_service_provider.py +7 -7
- orionis/luminate/{providers → _providers}/commands/scheduler_provider.py +3 -3
- orionis/luminate/{providers → _providers}/config/config_service_provider.py +3 -3
- orionis/luminate/{providers → _providers}/environment/environment__service_provider.py +4 -4
- orionis/luminate/_providers/files/paths_provider.py +21 -0
- orionis/luminate/{providers → _providers}/log/log_service_provider.py +5 -5
- orionis/luminate/{providers → _providers}/service_provider.py +2 -2
- orionis/luminate/{services_ → _services}/commands/reactor_commands_service.py +3 -3
- orionis/luminate/{services_ → _services}/commands/scheduler_service.py +1 -1
- orionis/luminate/{services_ → _services}/config/config_service.py +1 -1
- orionis/luminate/{services_ → _services}/log/log_service.py +1 -1
- orionis/luminate/app.py +19 -0
- orionis/luminate/console/base/command.py +1 -1
- orionis/luminate/console/command_filter.py +1 -1
- orionis/luminate/console/commands/help.py +1 -1
- orionis/luminate/console/commands/schedule_work.py +2 -2
- orionis/luminate/console/dumper/dump_die.py +1 -1
- orionis/luminate/console/kernel.py +1 -1
- orionis/luminate/console/output/console.py +3 -3
- orionis/luminate/console/output/executor.py +1 -1
- orionis/luminate/console/output/progress_bar.py +1 -1
- orionis/luminate/console/parser.py +1 -1
- orionis/luminate/{config → foundation/config}/app/entities/app.py +44 -43
- orionis/luminate/{config → foundation/config}/auth/entities/auth.py +9 -1
- orionis/luminate/foundation/config/cache/entities/cache.py +74 -0
- orionis/luminate/foundation/config/cache/entities/file.py +46 -0
- orionis/luminate/foundation/config/cache/entities/stores.py +46 -0
- orionis/luminate/{contracts/config → foundation/config/contracts}/config.py +8 -12
- orionis/luminate/foundation/config/cors/entities/cors.py +129 -0
- orionis/luminate/foundation/config/database/entities/connections.py +89 -0
- orionis/luminate/foundation/config/database/entities/database.py +62 -0
- orionis/luminate/foundation/config/database/entities/mysql.py +270 -0
- orionis/luminate/foundation/config/database/entities/oracle.py +227 -0
- orionis/luminate/foundation/config/database/entities/pgsql.py +189 -0
- orionis/luminate/foundation/config/database/entities/sqlite.py +178 -0
- orionis/luminate/foundation/config/database/enums/mysql_charsets.py +92 -0
- orionis/luminate/foundation/config/database/enums/mysql_collations.py +53 -0
- orionis/luminate/foundation/config/database/enums/mysql_engine.py +18 -0
- orionis/luminate/foundation/config/database/enums/oracle_encoding.py +44 -0
- orionis/luminate/foundation/config/database/enums/oracle_nencoding.py +31 -0
- orionis/luminate/foundation/config/database/enums/pgsql_charsets.py +90 -0
- orionis/luminate/foundation/config/database/enums/pgsql_collations.py +26 -0
- orionis/luminate/foundation/config/database/enums/pgsql_mode.py +24 -0
- orionis/luminate/foundation/config/database/enums/sqlite_foreign_key.py +12 -0
- orionis/luminate/foundation/config/database/enums/sqlite_journal.py +22 -0
- orionis/luminate/foundation/config/database/enums/sqlite_synchronous.py +16 -0
- orionis/luminate/foundation/config/filesystems/entitites/aws.py +134 -0
- orionis/luminate/foundation/config/filesystems/entitites/disks.py +68 -0
- orionis/luminate/foundation/config/filesystems/entitites/filesystems.py +53 -0
- orionis/luminate/foundation/config/filesystems/entitites/local.py +39 -0
- orionis/luminate/foundation/config/filesystems/entitites/public.py +52 -0
- orionis/luminate/foundation/config/logging/entities/channels.py +115 -0
- orionis/luminate/foundation/config/logging/entities/chunked.py +128 -0
- orionis/luminate/foundation/config/logging/entities/daily.py +113 -0
- orionis/luminate/foundation/config/logging/entities/hourly.py +100 -0
- orionis/luminate/foundation/config/logging/entities/logging.py +51 -0
- orionis/luminate/foundation/config/logging/entities/monthly.py +100 -0
- orionis/luminate/foundation/config/logging/entities/stack.py +74 -0
- orionis/luminate/foundation/config/logging/entities/weekly.py +102 -0
- orionis/luminate/foundation/config/logging/enums/levels.py +21 -0
- orionis/luminate/foundation/config/mail/entities/file.py +41 -0
- orionis/luminate/foundation/config/mail/entities/mail.py +56 -0
- orionis/luminate/foundation/config/mail/entities/mailers.py +54 -0
- orionis/luminate/foundation/config/mail/entities/smtp.py +104 -0
- orionis/luminate/foundation/config/queue/entities/brokers.py +55 -0
- orionis/luminate/foundation/config/queue/entities/database.py +107 -0
- orionis/luminate/foundation/config/queue/entities/queue.py +47 -0
- orionis/luminate/foundation/config/queue/enums/strategy.py +15 -0
- orionis/luminate/foundation/config/roots/paths.py +446 -0
- orionis/luminate/foundation/config/session/entities/session.py +147 -0
- orionis/luminate/foundation/config/session/enums/same_site_policy.py +14 -0
- orionis/luminate/foundation/config/session/helpers/secret_key.py +16 -0
- orionis/luminate/foundation/config/startup.py +203 -0
- orionis/luminate/foundation/config/testing/entities/__init__.py +0 -0
- orionis/luminate/{config → foundation/config/testing}/entities/testing.py +36 -20
- orionis/luminate/foundation/config/testing/enums/__init__.py +0 -0
- orionis/luminate/foundation/config/testing/enums/test_mode.py +12 -0
- orionis/luminate/patterns/__init__.py +0 -4
- orionis/luminate/patterns/singleton/__init__.py +0 -10
- orionis/luminate/services/asynchrony/__init__.py +0 -0
- orionis/luminate/services/asynchrony/async_io.py +31 -0
- orionis/luminate/services/environment/__init__.py +0 -10
- orionis/luminate/services/environment/contracts/__init__.py +0 -5
- orionis/luminate/services/environment/contracts/env.py +0 -11
- orionis/luminate/services/environment/dot_env.py +87 -163
- orionis/luminate/services/environment/env.py +0 -11
- orionis/luminate/services/introspection/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/entities/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/entities/abstract_class_attributes.py +37 -0
- orionis/luminate/{support → services}/introspection/abstracts/reflect_abstract.py +1 -1
- orionis/luminate/services/introspection/dependencies/__init__.py +0 -0
- orionis/luminate/services/introspection/dependencies/contracts/__init__.py +0 -0
- orionis/luminate/{support → services}/introspection/dependencies/contracts/reflect_dependencies.py +2 -2
- orionis/luminate/services/introspection/dependencies/entities/__init__.py +0 -0
- orionis/luminate/services/introspection/dependencies/entities/class_dependencies.py +41 -0
- orionis/luminate/services/introspection/dependencies/entities/method_dependencies.py +42 -0
- orionis/luminate/services/introspection/dependencies/entities/resolved_dependencies.py +49 -0
- orionis/luminate/{support → services}/introspection/dependencies/reflect_dependencies.py +4 -4
- orionis/luminate/services/parsers/__init__.py +0 -0
- orionis/luminate/services/parsers/contracts/__init__.py +0 -0
- orionis/luminate/{support/parsers/exception_parser.py → services/parsers/exception.py} +1 -1
- orionis/luminate/services/parsers/serializer.py +15 -0
- orionis/luminate/services/paths/__init__.py +0 -9
- orionis/luminate/services/paths/resolver.py +1 -1
- orionis/luminate/services/standard/__init__.py +0 -0
- orionis/luminate/services/standard/contracts/__init__.py +0 -0
- orionis/luminate/{support → services}/standard/std.py +1 -1
- orionis/luminate/services/system/__init__.py +0 -0
- orionis/luminate/services/system/contracts/__init__.py +0 -0
- orionis/luminate/services/system/contracts/imports.py +31 -0
- orionis/luminate/services/system/contracts/workers.py +18 -0
- orionis/luminate/services/system/imports.py +124 -0
- orionis/luminate/services/system/runtime_imports.py +70 -0
- orionis/luminate/services/{workers/maximum_workers.py → system/workers.py} +2 -1
- orionis/luminate/services/wrapper/__init__.py +0 -0
- orionis/luminate/services/wrapper/dicts/__init__.py +0 -0
- orionis/luminate/services/wrapper/dicts/dot_dict.py +115 -0
- orionis/luminate/support/introspection/__init__.py +0 -5
- orionis/luminate/support/introspection/container_integrity.py +2 -2
- orionis/luminate/support/introspection/instances/__init__.py +0 -5
- orionis/luminate/support/introspection/reflection.py +1 -1
- orionis/luminate/test/__init__.py +0 -23
- orionis/luminate/test/cases/test_async.py +41 -9
- orionis/luminate/test/cases/test_case.py +27 -13
- orionis/luminate/test/cases/test_sync.py +28 -6
- orionis/luminate/test/output/contracts/{test_std_out.py → dumper.py} +2 -1
- orionis/luminate/test/output/{test_std_out.py → dumper.py} +7 -4
- orionis/luminate/test/suites/__init__.py +0 -0
- orionis/luminate/test/suites/contracts/__init__.py +0 -0
- orionis/luminate/test/suites/contracts/test_suite.py +23 -0
- orionis/luminate/test/suites/test_suite.py +101 -0
- orionis/luminate/test/{core → suites}/test_unit.py +16 -8
- orionis/unittesting.py +43 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/METADATA +19 -3
- orionis-0.266.0.dist-info/RECORD +440 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/WHEEL +1 -1
- orionis-0.266.0.dist-info/entry_points.txt +2 -0
- orionis-0.266.0.dist-info/zip-safe +1 -0
- tests/example/test_example.py +1 -1
- tests/foundation/__init__.py +0 -0
- tests/foundation/config/__init__.py +0 -0
- tests/foundation/config/app/__init__.py +0 -0
- tests/foundation/config/app/test_app.py +140 -0
- tests/foundation/config/auth/__init__.py +0 -0
- tests/{config → foundation/config/auth}/test_auth.py +6 -3
- tests/foundation/config/cache/__init__.py +0 -0
- tests/foundation/config/cache/test_cache.py +98 -0
- tests/foundation/config/cache/test_cache_file.py +78 -0
- tests/foundation/config/cache/test_cache_stores.py +88 -0
- tests/foundation/config/cors/__init__.py +0 -0
- tests/foundation/config/cors/test_cors.py +121 -0
- tests/foundation/config/database/__init__.py +0 -0
- tests/foundation/config/database/test_database.py +108 -0
- tests/foundation/config/database/test_database_connections.py +129 -0
- tests/foundation/config/database/test_database_mysql.py +231 -0
- tests/foundation/config/database/test_database_oracle.py +204 -0
- tests/foundation/config/database/test_database_pgsql.py +187 -0
- tests/foundation/config/database/test_database_sqlite.py +153 -0
- tests/foundation/config/exceptions/__init__.py +0 -0
- tests/foundation/config/exceptions/test_exceptions_integrity.py +83 -0
- tests/foundation/config/filesystems/__init__.py +0 -0
- tests/foundation/config/filesystems/test_filesystems.py +110 -0
- tests/foundation/config/filesystems/test_filesystems_aws.py +133 -0
- tests/foundation/config/filesystems/test_filesystems_disks.py +114 -0
- tests/foundation/config/filesystems/test_filesystems_local.py +95 -0
- tests/foundation/config/filesystems/test_filesystems_public.py +120 -0
- tests/foundation/config/logging/__init__.py +0 -0
- tests/foundation/config/logging/test_logging.py +48 -0
- tests/foundation/config/logging/test_logging_channels.py +157 -0
- tests/foundation/config/logging/test_logging_chunked.py +166 -0
- tests/foundation/config/logging/test_logging_daily.py +153 -0
- tests/foundation/config/logging/test_logging_hourly.py +131 -0
- tests/foundation/config/logging/test_logging_monthly.py +133 -0
- tests/foundation/config/logging/test_logging_stack.py +124 -0
- tests/foundation/config/logging/test_logging_weekly.py +133 -0
- tests/foundation/config/mail/__init__.py +0 -0
- tests/foundation/config/mail/test_mail.py +73 -0
- tests/foundation/config/mail/test_mail_file.py +61 -0
- tests/foundation/config/mail/test_mail_mailers.py +58 -0
- tests/foundation/config/mail/test_mail_smtp.py +102 -0
- tests/foundation/config/queue/__init__.py +0 -0
- tests/foundation/config/queue/test_queue.py +58 -0
- tests/foundation/config/queue/test_queue_brokers.py +67 -0
- tests/foundation/config/queue/test_queue_database.py +95 -0
- tests/foundation/config/root/__init__.py +0 -0
- tests/foundation/config/root/test_root_paths.py +134 -0
- tests/foundation/config/session/__init__.py +0 -0
- tests/foundation/config/session/test_session.py +138 -0
- tests/foundation/config/startup/__init__.py +0 -0
- tests/foundation/config/startup/test_config_startup.py +134 -0
- tests/foundation/config/testing/__init__.py +0 -0
- tests/foundation/config/testing/test_testing.py +167 -0
- tests/patterns/singleton/test_singleton.py +2 -2
- tests/services/asynchrony/__init__.py +0 -0
- tests/{support/async_io/test_async_coroutine.py → services/asynchrony/test_async_io.py} +6 -5
- tests/services/environment/test_env.py +155 -33
- tests/services/inspection/__init__.py +0 -0
- tests/services/inspection/dependencies/__init__.py +0 -0
- tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- tests/services/inspection/dependencies/mocks/mock_user.py +30 -0
- tests/services/inspection/dependencies/mocks/mock_user_controller.py +27 -0
- tests/services/inspection/dependencies/mocks/mock_users_permissions.py +41 -0
- tests/services/inspection/dependencies/test_reflect_dependencies.py +94 -0
- tests/services/parsers/__init__.py +0 -0
- tests/services/parsers/mocks/__init__.py +0 -0
- tests/services/parsers/mocks/mock_custom_error.py +15 -0
- tests/{support → services}/parsers/test_exception_parser.py +8 -8
- tests/services/path/__init__.py +0 -0
- tests/services/path/test_resolver.py +73 -0
- tests/services/standard/__init__.py +0 -0
- tests/services/standard/test_std.py +127 -0
- tests/services/wrapper/__init__.py +0 -0
- tests/services/wrapper/test_wrapper_doc_dict.py +129 -0
- tests/testing/__init__.py +0 -0
- tests/testing/test_testing_result.py +92 -0
- tests/testing/test_testing_unit.py +138 -0
- orionis/luminate/config/app/__init__.py +0 -10
- orionis/luminate/config/auth/__init__.py +0 -7
- orionis/luminate/config/cache/__init__.py +0 -9
- orionis/luminate/config/cache/entities/cache.py +0 -58
- orionis/luminate/config/cache/entities/file.py +0 -29
- orionis/luminate/config/cache/entities/stores.py +0 -35
- orionis/luminate/config/entities/cors.py +0 -58
- orionis/luminate/config/entities/database.py +0 -204
- orionis/luminate/config/entities/filesystems.py +0 -98
- orionis/luminate/config/entities/logging.py +0 -157
- orionis/luminate/config/entities/mail.py +0 -76
- orionis/luminate/config/entities/queue.py +0 -62
- orionis/luminate/config/entities/session.py +0 -58
- orionis/luminate/providers/files/paths_provider.py +0 -20
- orionis/luminate/services/workers/__init__.py +0 -10
- orionis/luminate/support/adapters/dot_dict.py +0 -29
- orionis/luminate/support/asynchrony/async_io.py +0 -40
- orionis/luminate/support/asynchrony/contracts/async_coroutine.py +0 -26
- orionis/luminate/support/introspection/abstracts/entities/abstract_class_attributes.py +0 -11
- orionis/luminate/support/introspection/dependencies/__init__.py +0 -5
- orionis/luminate/support/introspection/dependencies/entities/class_dependencies.py +0 -11
- orionis/luminate/support/introspection/dependencies/entities/method_dependencies.py +0 -11
- orionis/luminate/support/introspection/dependencies/entities/resolved_dependencies.py +0 -12
- orionis/luminate/support/paths/contracts/resolver.py +0 -67
- orionis/luminate/support/paths/resolver.py +0 -83
- orionis/luminate/test/core/contracts/test_suite.py +0 -30
- orionis/luminate/test/core/test_suite.py +0 -93
- orionis-0.253.0.dist-info/RECORD +0 -318
- orionis-0.253.0.dist-info/entry_points.txt +0 -2
- tests/config/test_app.py +0 -122
- tests/config/test_cache.py +0 -20
- tests/support/adapters/fakes/fake_dict.py +0 -15
- tests/support/adapters/test_doct_dict.py +0 -21
- tests/support/inspection/fakes/fake_reflect_dependencies.py +0 -25
- tests/support/inspection/test_reflect_dependencies.py +0 -67
- tests/support/parsers/fakes/fake_custom_error.py +0 -27
- tests/support/path/test_resolver.py +0 -33
- tests/support/standard/test_std.py +0 -62
- /orionis/{console.py → clinstall.py} +0 -0
- /orionis/luminate/{config → _container}/__init__.py +0 -0
- /orionis/luminate/{container → _container}/exception.py +0 -0
- /orionis/luminate/{container → _container}/lifetimes.py +0 -0
- /orionis/luminate/{config/app/entities → _contracts}/__init__.py +0 -0
- /orionis/luminate/{config/app/enums → _contracts/config}/__init__.py +0 -0
- /orionis/luminate/{config/contracts → _contracts/config}/config.py +0 -0
- /orionis/luminate/{config/auth/entities → _contracts/console}/__init__.py +0 -0
- /orionis/luminate/{config/cache/entities → _contracts/console/base}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/base/command.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/command_filter.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/kernel.py +0 -0
- /orionis/luminate/{config/cache/enums → _contracts/console/output}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/console.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/executor.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/progress_bar.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/parser.py +0 -0
- /orionis/luminate/{contracts → _contracts}/container/container.py +0 -0
- /orionis/luminate/{contracts → _contracts}/container/container_integrity.py +0 -0
- /orionis/luminate/{config/contracts → _contracts/facades}/__init__.py +0 -0
- /orionis/luminate/{config/exceptions → _contracts/facades/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/commands/commands_facade.py +0 -0
- /orionis/luminate/{container → _contracts/facades/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/config/config_facade.py +0 -0
- /orionis/luminate/{contracts → _contracts/facades/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/environment/environment_facade.py +0 -0
- /orionis/luminate/{contracts/config → _contracts/facades/files}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/files/path_facade.py +0 -0
- /orionis/luminate/{contracts/console → _contracts/facades/log}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/log/log_facade.py +0 -0
- /orionis/luminate/{contracts/console/base → _contracts/facades/tests}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/tests/tests_facade.py +0 -0
- /orionis/luminate/{contracts/console/output → _contracts/foundation}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/bootstraper.py +0 -0
- /orionis/luminate/{contracts/facades → _contracts/foundation/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/config/config_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/commands → _contracts/foundation/console}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/console/command_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/config → _contracts/foundation/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/environment/environment_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/environment → _contracts/foundation/providers}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/files → _contracts/providers}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/log → _contracts/services}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/tests → _contracts/services/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/commands/reactor_commands_service.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/commands/schedule_service.py +0 -0
- /orionis/luminate/{contracts/foundation → _contracts/services/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/config/config_service.py +0 -0
- /orionis/luminate/{contracts/foundation/config → _contracts/services/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/environment/environment_service.py +0 -0
- /orionis/luminate/{contracts/foundation/console → _contracts/services/files}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/files/path_resolver_service.py +0 -0
- /orionis/luminate/{contracts/foundation/environment → _contracts/services/log}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/log/log_service.py +0 -0
- /orionis/luminate/{contracts → _contracts}/support/exception_parse.py +0 -0
- /orionis/luminate/{contracts → _contracts}/support/reflection.py +0 -0
- /orionis/luminate/{contracts/foundation/providers → _facades}/__init__.py +0 -0
- /orionis/luminate/{contracts/providers → _facades/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts/services → _facades/config}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/commands → _facades/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/config → _facades/files}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/environment → _facades/log}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/files → _foundation}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/log → _foundation/console}/__init__.py +0 -0
- /orionis/luminate/{facades → _foundation/environment}/__init__.py +0 -0
- /orionis/luminate/{facades/commands → _foundation/exceptions}/__init__.py +0 -0
- /orionis/luminate/{foundation → _foundation}/exceptions/exception_bootstrapper.py +0 -0
- /orionis/luminate/{foundation → _foundation}/exceptions/exception_providers.py +0 -0
- /orionis/luminate/{facades → _foundation/foundation}/config/__init__.py +0 -0
- /orionis/luminate/{facades/environment → _foundation/providers}/__init__.py +0 -0
- /orionis/luminate/{facades/files → _providers}/__init__.py +0 -0
- /orionis/luminate/{facades/log → _providers/commands}/__init__.py +0 -0
- /orionis/luminate/{foundation/console → _providers/config}/__init__.py +0 -0
- /orionis/luminate/{foundation → _providers}/environment/__init__.py +0 -0
- /orionis/luminate/{foundation/exceptions → _providers/files}/__init__.py +0 -0
- /orionis/luminate/{foundation/providers → _providers/log}/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/commands/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/config/__init__.py +0 -0
- /orionis/luminate/{providers/environment → _services/log}/__init__.py +0 -0
- /orionis/luminate/{providers/files → foundation/config/app}/__init__.py +0 -0
- /orionis/luminate/{providers/log → foundation/config/app/entities}/__init__.py +0 -0
- /orionis/luminate/{services_ → foundation/config/app/enums}/__init__.py +0 -0
- /orionis/luminate/{config → foundation/config}/app/enums/ciphers.py +0 -0
- /orionis/luminate/{config → foundation/config}/app/enums/environments.py +0 -0
- /orionis/luminate/{services_/commands → foundation/config/auth}/__init__.py +0 -0
- /orionis/luminate/{services_/config → foundation/config/auth/entities}/__init__.py +0 -0
- /orionis/luminate/{services_/log → foundation/config/cache}/__init__.py +0 -0
- /orionis/luminate/{support/adapters → foundation/config/cache/entities}/__init__.py +0 -0
- /orionis/luminate/{support/asynchrony → foundation/config/cache/enums}/__init__.py +0 -0
- /orionis/luminate/{config → foundation/config}/cache/enums/drivers.py +0 -0
- /orionis/luminate/{support/asynchrony → foundation/config}/contracts/__init__.py +0 -0
- /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/__init__.py +0 -0
- /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/entities/__init__.py +0 -0
- /orionis/luminate/{support/introspection/dependencies/contracts → foundation/config/database}/__init__.py +0 -0
- /orionis/luminate/{support/introspection/dependencies → foundation/config/database}/entities/__init__.py +0 -0
- /orionis/luminate/{support/parsers → foundation/config/database/enums}/__init__.py +0 -0
- /orionis/luminate/{support/parsers/contracts → foundation/config/exceptions}/__init__.py +0 -0
- /orionis/luminate/{config/exceptions/integrity_exception.py → foundation/config/exceptions/integrity.py} +0 -0
- /orionis/luminate/{support/paths → foundation/config/filesystems}/__init__.py +0 -0
- /orionis/luminate/{support/paths/contracts → foundation/config/filesystems/entitites}/__init__.py +0 -0
- /orionis/luminate/{support/standard → foundation/config/logging}/__init__.py +0 -0
- /orionis/luminate/{support/standard/contracts → foundation/config/logging/entities}/__init__.py +0 -0
- /orionis/luminate/{test/core → foundation/config/logging/enums}/__init__.py +0 -0
- /orionis/luminate/{test/core/contracts → foundation/config/mail}/__init__.py +0 -0
- {tests/config → orionis/luminate/foundation/config/mail/entities}/__init__.py +0 -0
- {tests/support/adapters → orionis/luminate/foundation/config/queue}/__init__.py +0 -0
- {tests/support/adapters/fakes → orionis/luminate/foundation/config/queue/entities}/__init__.py +0 -0
- {tests/support/async_io → orionis/luminate/foundation/config/roots}/__init__.py +0 -0
- {tests/support/parsers → orionis/luminate/foundation/config/session}/__init__.py +0 -0
- {tests/support/parsers/fakes → orionis/luminate/foundation/config/session/entities}/__init__.py +0 -0
- {tests/support/path → orionis/luminate/foundation/config/session/enums}/__init__.py +0 -0
- {tests/support/standard → orionis/luminate/foundation/config/testing}/__init__.py +0 -0
- /orionis/luminate/{support → services}/parsers/contracts/exception_parser.py +0 -0
- /orionis/luminate/{support → services}/standard/contracts/std.py +0 -0
- /orionis/luminate/test/exceptions/{test_exception.py → test_failure_exception.py} +0 -0
- /orionis/luminate/test/{core → suites}/contracts/test_unit.py +0 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info/licenses}/LICENCE +0 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
class Level(Enum):
|
4
|
+
"""
|
5
|
+
Enumeration of standard logging levels.
|
6
|
+
|
7
|
+
Attributes:
|
8
|
+
NOTSET (int): No specific logging level set. Value is 0.
|
9
|
+
DEBUG (int): Detailed information, typically of interest only when diagnosing problems. Value is 10.
|
10
|
+
INFO (int): Confirmation that things are working as expected. Value is 20.
|
11
|
+
WARNING (int): An indication that something unexpected happened, or indicative of some problem in the near future. Value is 30.
|
12
|
+
ERROR (int): Due to a more serious problem, the software has not been able to perform some function. Value is 40.
|
13
|
+
CRITICAL (int): A very serious error, indicating that the program itself may be unable to continue running. Value is 50.
|
14
|
+
"""
|
15
|
+
|
16
|
+
NOTSET = 0
|
17
|
+
DEBUG = 10
|
18
|
+
INFO = 20
|
19
|
+
WARNING = 30
|
20
|
+
ERROR = 40
|
21
|
+
CRITICAL = 50
|
@@ -0,0 +1,41 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
3
|
+
|
4
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
5
|
+
class File:
|
6
|
+
"""
|
7
|
+
Represents a file configuration entity for storing outgoing emails.
|
8
|
+
Attributes:
|
9
|
+
path (str): The file path where outgoing emails are stored.
|
10
|
+
Methods:
|
11
|
+
__post_init__():
|
12
|
+
Validates that the 'path' attribute is a non-empty string.
|
13
|
+
Raises:
|
14
|
+
OrionisIntegrityException: If 'path' is not a non-empty string.
|
15
|
+
toDict() -> dict:
|
16
|
+
Serializes the File instance to a dictionary.
|
17
|
+
"""
|
18
|
+
|
19
|
+
path: str = field(
|
20
|
+
default="storage/mail",
|
21
|
+
metadata={"description": "The file path where outgoing emails are stored."}
|
22
|
+
)
|
23
|
+
|
24
|
+
def __post_init__(self):
|
25
|
+
"""
|
26
|
+
Post-initialization method to validate the 'path' attribute.
|
27
|
+
|
28
|
+
Raises:
|
29
|
+
OrionisIntegrityException: If 'path' is not a non-empty string.
|
30
|
+
"""
|
31
|
+
if not isinstance(self.path, str) or self.path.strip() == "":
|
32
|
+
raise OrionisIntegrityException("The 'path' attribute must be a non-empty string.")
|
33
|
+
|
34
|
+
def toDict(self) -> dict:
|
35
|
+
"""
|
36
|
+
Converts the current instance into a dictionary representation.
|
37
|
+
|
38
|
+
Returns:
|
39
|
+
dict: A dictionary containing all the fields of the instance.
|
40
|
+
"""
|
41
|
+
return asdict(self)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field, fields
|
2
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
3
|
+
from orionis.luminate.foundation.config.mail.entities.mailers import Mailers
|
4
|
+
|
5
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
6
|
+
class Mail:
|
7
|
+
"""
|
8
|
+
Represents the mail configuration entity.
|
9
|
+
Attributes:
|
10
|
+
default (str): The default mailer transport to use.
|
11
|
+
mailers (Mailers): The available mail transport configurations.
|
12
|
+
Methods:
|
13
|
+
__post_init__():
|
14
|
+
Validates the integrity of the Mail instance after initialization.
|
15
|
+
Raises OrionisIntegrityException if any attribute is invalid.
|
16
|
+
toDict() -> dict:
|
17
|
+
Serializes the Mail instance to a dictionary.
|
18
|
+
"""
|
19
|
+
|
20
|
+
default: str = field(
|
21
|
+
default="smtp",
|
22
|
+
metadata={"description": "The default mailer transport to use."}
|
23
|
+
)
|
24
|
+
|
25
|
+
mailers: Mailers = field(
|
26
|
+
default_factory=Mailers,
|
27
|
+
metadata={"description": "The available mail transport configurations."}
|
28
|
+
)
|
29
|
+
|
30
|
+
def __post_init__(self):
|
31
|
+
"""
|
32
|
+
Post-initialization method to validate the 'default' and 'mailers' attributes.
|
33
|
+
Ensures that:
|
34
|
+
- The 'default' attribute is a string and matches one of the available mailer options.
|
35
|
+
- The 'mailers' attribute is an instance of the Mailers class.
|
36
|
+
Raises:
|
37
|
+
OrionisIntegrityException: If 'default' is not a valid string option or if 'mailers' is not a Mailers object.
|
38
|
+
"""
|
39
|
+
|
40
|
+
options = [f.name for f in fields(Mailers)]
|
41
|
+
if not isinstance(self.default, str) or self.default not in options:
|
42
|
+
raise OrionisIntegrityException(
|
43
|
+
f"The 'default' property must be a string and match one of the available options ({options})."
|
44
|
+
)
|
45
|
+
|
46
|
+
if not isinstance(self.mailers, Mailers):
|
47
|
+
raise OrionisIntegrityException("The 'mailers' attribute must be a Mailers object.")
|
48
|
+
|
49
|
+
def toDict(self) -> dict:
|
50
|
+
"""
|
51
|
+
Converts the current instance into a dictionary representation.
|
52
|
+
|
53
|
+
Returns:
|
54
|
+
dict: A dictionary containing all the fields of the instance.
|
55
|
+
"""
|
56
|
+
return asdict(self)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
3
|
+
from orionis.luminate.foundation.config.mail.entities.file import File
|
4
|
+
from orionis.luminate.foundation.config.mail.entities.smtp import Smtp
|
5
|
+
|
6
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
7
|
+
class Mailers:
|
8
|
+
"""
|
9
|
+
Represents the mail transport configurations for the application.
|
10
|
+
Attributes:
|
11
|
+
smtp (Smtp): The SMTP configuration used for sending emails.
|
12
|
+
file (File): The file-based mail transport configuration.
|
13
|
+
Methods:
|
14
|
+
__post_init__():
|
15
|
+
Validates that the 'smtp' and 'file' attributes are instances of their respective classes.
|
16
|
+
Raises:
|
17
|
+
OrionisIntegrityException: If 'smtp' is not a Smtp object or 'file' is not a File object.
|
18
|
+
toDict() -> dict:
|
19
|
+
Serializes the Mailers instance to a dictionary.
|
20
|
+
"""
|
21
|
+
|
22
|
+
smtp: Smtp = field(
|
23
|
+
default_factory=Smtp,
|
24
|
+
metadata={"description": "The SMTP configuration used for sending emails."}
|
25
|
+
)
|
26
|
+
|
27
|
+
file: File = field(
|
28
|
+
default_factory=File,
|
29
|
+
metadata={"description": "The file-based mail transport configuration."}
|
30
|
+
)
|
31
|
+
|
32
|
+
def __post_init__(self):
|
33
|
+
"""
|
34
|
+
Post-initialization method to validate attribute types.
|
35
|
+
|
36
|
+
Ensures that the 'smtp' attribute is an instance of the Smtp class and the 'file' attribute is an instance of the File class.
|
37
|
+
Raises:
|
38
|
+
OrionisIntegrityException: If 'smtp' is not a Smtp object or 'file' is not a File object.
|
39
|
+
"""
|
40
|
+
|
41
|
+
if not isinstance(self.smtp, Smtp):
|
42
|
+
raise OrionisIntegrityException("The 'smtp' attribute must be a Smtp object.")
|
43
|
+
|
44
|
+
if not isinstance(self.file, File):
|
45
|
+
raise OrionisIntegrityException("The 'file' attribute must be a File object.")
|
46
|
+
|
47
|
+
def toDict(self) -> dict:
|
48
|
+
"""
|
49
|
+
Converts the current instance into a dictionary representation.
|
50
|
+
|
51
|
+
Returns:
|
52
|
+
dict: A dictionary containing all the fields of the instance.
|
53
|
+
"""
|
54
|
+
return asdict(self)
|
@@ -0,0 +1,104 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from typing import Optional
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
|
5
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
6
|
+
class Smtp:
|
7
|
+
"""
|
8
|
+
Represents the configuration for an SMTP (Simple Mail Transfer Protocol) server.
|
9
|
+
Attributes:
|
10
|
+
url (str): The full URL for the SMTP service.
|
11
|
+
host (str): The hostname of the SMTP server.
|
12
|
+
port (int): The port number used for SMTP communication.
|
13
|
+
encryption (str): The encryption type used for secure communication (e.g., "None", "SSL", "TLS").
|
14
|
+
username (str): The username for authentication with the SMTP server.
|
15
|
+
password (str): The password for authentication with the SMTP server.
|
16
|
+
timeout (Optional[int]): The connection timeout duration in seconds.
|
17
|
+
Methods:
|
18
|
+
__post_init__():
|
19
|
+
Validates the integrity of the SMTP configuration attributes after initialization.
|
20
|
+
Raises:
|
21
|
+
OrionisIntegrityException: If any attribute does not meet the required constraints.
|
22
|
+
toDict() -> dict:
|
23
|
+
Converts the SMTP configuration to a dictionary representation.
|
24
|
+
Returns:
|
25
|
+
dict: A dictionary containing all SMTP configuration attributes.
|
26
|
+
"""
|
27
|
+
|
28
|
+
url: str = field(
|
29
|
+
default="smtp.mailtrap.io",
|
30
|
+
metadata={"description": "The full URL for the SMTP service."}
|
31
|
+
)
|
32
|
+
|
33
|
+
host: str = field(
|
34
|
+
default="smtp.mailtrap.io",
|
35
|
+
metadata={"description": "The hostname of the SMTP server."}
|
36
|
+
)
|
37
|
+
|
38
|
+
port: int = field(
|
39
|
+
default=587,
|
40
|
+
metadata={"description": "The port number used for SMTP communication."}
|
41
|
+
)
|
42
|
+
|
43
|
+
encryption: str = field(
|
44
|
+
default="TLS",
|
45
|
+
metadata={"description": "The encryption type used for secure communication."}
|
46
|
+
)
|
47
|
+
|
48
|
+
username: str = field(
|
49
|
+
default="",
|
50
|
+
metadata={"description": "The username for authentication with the SMTP server."}
|
51
|
+
)
|
52
|
+
|
53
|
+
password: str = field(
|
54
|
+
default="",
|
55
|
+
metadata={"description": "The password for authentication with the SMTP server."}
|
56
|
+
)
|
57
|
+
|
58
|
+
timeout: Optional[int] = field(
|
59
|
+
default=None,
|
60
|
+
metadata={"description": "The connection timeout duration in seconds."}
|
61
|
+
)
|
62
|
+
|
63
|
+
def __post_init__(self):
|
64
|
+
"""
|
65
|
+
Validates the initialization of the mail configuration entity.
|
66
|
+
|
67
|
+
Ensures that all required attributes are of the correct type and meet specific constraints:
|
68
|
+
- 'url' and 'host' must be non-empty strings.
|
69
|
+
- 'port' must be a positive integer.
|
70
|
+
- 'encryption', 'username', and 'password' must be strings.
|
71
|
+
- 'timeout', if provided, must be a non-negative integer or None.
|
72
|
+
|
73
|
+
Raises:
|
74
|
+
OrionisIntegrityException: If any attribute fails its validation check.
|
75
|
+
"""
|
76
|
+
if not isinstance(self.url, str):
|
77
|
+
raise OrionisIntegrityException("The 'url' attribute must be a string.")
|
78
|
+
|
79
|
+
if not isinstance(self.host, str):
|
80
|
+
raise OrionisIntegrityException("The 'host' attribute must be a string.")
|
81
|
+
|
82
|
+
if not isinstance(self.port, int) or self.port < 0:
|
83
|
+
raise OrionisIntegrityException("The 'port' attribute must be a non-negative integer.")
|
84
|
+
|
85
|
+
if not isinstance(self.encryption, str):
|
86
|
+
raise OrionisIntegrityException("The 'encryption' attribute must be a string.")
|
87
|
+
|
88
|
+
if not isinstance(self.username, str):
|
89
|
+
raise OrionisIntegrityException("The 'username' attribute must be a string.")
|
90
|
+
|
91
|
+
if not isinstance(self.password, str):
|
92
|
+
raise OrionisIntegrityException("The 'password' attribute must be a string.")
|
93
|
+
|
94
|
+
if self.timeout is not None and (not isinstance(self.timeout, int) or self.timeout < 0):
|
95
|
+
raise OrionisIntegrityException("The 'timeout' attribute must be a non-negative integer or None.")
|
96
|
+
|
97
|
+
def toDict(self) -> dict:
|
98
|
+
"""
|
99
|
+
Converts the current instance into a dictionary representation.
|
100
|
+
|
101
|
+
Returns:
|
102
|
+
dict: A dictionary containing all the fields of the instance.
|
103
|
+
"""
|
104
|
+
return asdict(self)
|
@@ -0,0 +1,55 @@
|
|
1
|
+
|
2
|
+
from dataclasses import asdict, dataclass, field
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.luminate.foundation.config.queue.entities.database import Database
|
5
|
+
|
6
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
7
|
+
class Brokers:
|
8
|
+
"""
|
9
|
+
Represents the configuration for queue brokers.
|
10
|
+
Attributes:
|
11
|
+
sync (bool): Indicates if the sync broker is enabled. Defaults to True.
|
12
|
+
database (Database): The configuration for the database-backed queue. Defaults to a new Database instance.
|
13
|
+
Methods:
|
14
|
+
__post_init__():
|
15
|
+
Validates and normalizes the properties after initialization.
|
16
|
+
Ensures 'sync' is a boolean and 'database' is an instance of Database.
|
17
|
+
"""
|
18
|
+
|
19
|
+
sync: bool = field(
|
20
|
+
default=True,
|
21
|
+
metadata={
|
22
|
+
"description": "Indicates if the sync broker is enabled.",
|
23
|
+
"default": True
|
24
|
+
}
|
25
|
+
)
|
26
|
+
|
27
|
+
database: Database = field(
|
28
|
+
default_factory=Database,
|
29
|
+
metadata={
|
30
|
+
"description": "The configuration for the database-backed queue.",
|
31
|
+
"default": "Database()"
|
32
|
+
}
|
33
|
+
)
|
34
|
+
|
35
|
+
def __post_init__(self):
|
36
|
+
"""
|
37
|
+
Post-initialization validation for the Brokers entity.
|
38
|
+
Validates and normalizes the following properties:
|
39
|
+
- sync: Must be a boolean.
|
40
|
+
- database: Must be an instance of the Database class.
|
41
|
+
"""
|
42
|
+
if not isinstance(self.sync, bool):
|
43
|
+
raise OrionisIntegrityException("sync must be a boolean.")
|
44
|
+
|
45
|
+
if not isinstance(self.database, Database):
|
46
|
+
raise OrionisIntegrityException("database must be an instance of the Database class.")
|
47
|
+
|
48
|
+
def toDict(self) -> dict:
|
49
|
+
"""
|
50
|
+
Converts the current instance into a dictionary representation.
|
51
|
+
|
52
|
+
Returns:
|
53
|
+
dict: A dictionary containing all the fields of the instance.
|
54
|
+
"""
|
55
|
+
return asdict(self)
|
@@ -0,0 +1,107 @@
|
|
1
|
+
|
2
|
+
from dataclasses import asdict, dataclass, field
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.luminate.foundation.config.queue.enums.strategy import Strategy
|
5
|
+
import re
|
6
|
+
|
7
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
8
|
+
class Database:
|
9
|
+
"""
|
10
|
+
Represents the configuration entity for a database-backed queue.
|
11
|
+
Attributes:
|
12
|
+
table (str): The name of the table used for the queue. Must match the pattern `[a-z_][a-z_]*` (lowercase letters or underscores only, no numbers).
|
13
|
+
queue (str): The name of the queue. Must contain only ASCII characters.
|
14
|
+
retry_after (int): The time in seconds to wait before retrying a failed job. Must be a positive integer.
|
15
|
+
strategy (str | Strategy): The strategy used for the queue. Options are FIFO, LIFO, or PRIORITY. Can be provided as a string (case-insensitive) or as a `Strategy` enum member.
|
16
|
+
Methods:
|
17
|
+
__post_init__():
|
18
|
+
Validates and normalizes the entity's properties after initialization.
|
19
|
+
- Ensures `table` is a valid string matching the required pattern.
|
20
|
+
- Ensures `queue` is a valid ASCII string.
|
21
|
+
- Ensures `retry_after` is a positive integer.
|
22
|
+
- Ensures `strategy` is a valid string or `Strategy` enum member, and normalizes it to the corresponding enum value.
|
23
|
+
"""
|
24
|
+
|
25
|
+
table: str = field(
|
26
|
+
default="jobs",
|
27
|
+
metadata={
|
28
|
+
"description": "The name of the table used for the queue.",
|
29
|
+
"default": "jobs",
|
30
|
+
}
|
31
|
+
)
|
32
|
+
|
33
|
+
queue: str = field(
|
34
|
+
default="default",
|
35
|
+
metadata={
|
36
|
+
"description": "The name of the queue.",
|
37
|
+
"default": "default",
|
38
|
+
}
|
39
|
+
)
|
40
|
+
|
41
|
+
retry_after: int = field(
|
42
|
+
default=90,
|
43
|
+
metadata={
|
44
|
+
"description": "The time in seconds to wait before retrying a failed job.",
|
45
|
+
"default": 90,
|
46
|
+
}
|
47
|
+
)
|
48
|
+
|
49
|
+
strategy : str | Strategy = field(
|
50
|
+
default=Strategy.FIFO,
|
51
|
+
metadata={
|
52
|
+
"description": "The strategy used for the queue. Options are FIFO, LIFO, or PRIORITY.",
|
53
|
+
"default": "Strategy.FIFO",
|
54
|
+
}
|
55
|
+
)
|
56
|
+
|
57
|
+
def __post_init__(self):
|
58
|
+
"""
|
59
|
+
Post-initialization validation for the entity.
|
60
|
+
Validates and normalizes the following properties:
|
61
|
+
- `table`: Must be a string matching the pattern `[a-z_][a-z_]*` (lowercase letters or underscores only, no numbers).
|
62
|
+
- `queue`: Must be a string containing only ASCII characters.
|
63
|
+
- `retry_after`: Must be a positive integer.
|
64
|
+
- `strategy`: Must be either a string (matching a valid `Strategy` member name, case-insensitive) or an instance of `Strategy`. Converts the value to the corresponding `Strategy` enum value.
|
65
|
+
Raises:
|
66
|
+
OrionisIntegrityException: If any property fails validation.
|
67
|
+
"""
|
68
|
+
|
69
|
+
if not isinstance(self.table, str):
|
70
|
+
raise OrionisIntegrityException("The 'table' property must be a string.")
|
71
|
+
if not re.fullmatch(r'[a-z_][a-z_]*', self.table):
|
72
|
+
raise OrionisIntegrityException(
|
73
|
+
"The 'table' property must be a valid table name: start with a lowercase letter or underscore, contain only lowercase letters or underscores (no numbers allowed)."
|
74
|
+
)
|
75
|
+
|
76
|
+
if not isinstance(self.queue, str):
|
77
|
+
raise OrionisIntegrityException("The 'queue' property must be a string.")
|
78
|
+
try:
|
79
|
+
self.queue.encode('ascii')
|
80
|
+
except UnicodeEncodeError:
|
81
|
+
raise OrionisIntegrityException("The 'queue' property must contain only ASCII characters (no UTF-8 or non-ASCII allowed).")
|
82
|
+
|
83
|
+
if not isinstance(self.retry_after, int) or self.retry_after <= 0:
|
84
|
+
raise OrionisIntegrityException("The 'retry_after' property must be a positive integer.")
|
85
|
+
|
86
|
+
if not isinstance(self.strategy, (str, Strategy)):
|
87
|
+
raise OrionisIntegrityException("The 'strategy' property must be a string or an instance of Strategy.")
|
88
|
+
if isinstance(self.strategy, str):
|
89
|
+
options = Strategy._member_names_
|
90
|
+
_value = str(self.strategy).upper().strip()
|
91
|
+
if _value not in options:
|
92
|
+
raise OrionisIntegrityException(
|
93
|
+
f"The 'strategy' property must be one of the following: {', '.join(options)}."
|
94
|
+
)
|
95
|
+
else:
|
96
|
+
self.strategy = Strategy[_value].value
|
97
|
+
else:
|
98
|
+
self.strategy = self.strategy.value
|
99
|
+
|
100
|
+
def toDict(self) -> dict:
|
101
|
+
"""
|
102
|
+
Converts the current instance into a dictionary representation.
|
103
|
+
|
104
|
+
Returns:
|
105
|
+
dict: A dictionary containing all the fields of the instance.
|
106
|
+
"""
|
107
|
+
return asdict(self)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field, fields
|
2
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
3
|
+
from orionis.luminate.foundation.config.queue.entities.brokers import Brokers
|
4
|
+
|
5
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
6
|
+
class Queue:
|
7
|
+
|
8
|
+
default: str = field(
|
9
|
+
default="sync",
|
10
|
+
metadata={
|
11
|
+
"description": "The default queue connection to use.",
|
12
|
+
"default": "sync"
|
13
|
+
}
|
14
|
+
)
|
15
|
+
|
16
|
+
brokers: Brokers = field(
|
17
|
+
default_factory=Brokers,
|
18
|
+
metadata={
|
19
|
+
"description": "The default queue broker to use.",
|
20
|
+
"default": "Brokers()"
|
21
|
+
}
|
22
|
+
)
|
23
|
+
|
24
|
+
def __post_init__(self):
|
25
|
+
"""
|
26
|
+
Post-initialization validation for the Queue entity.
|
27
|
+
Validates and normalizes the following properties:
|
28
|
+
- default: Must be a string.
|
29
|
+
- brokers: Must be a string or an instance of the Brokers class.
|
30
|
+
"""
|
31
|
+
options = [f.name for f in fields(Brokers)]
|
32
|
+
if not isinstance(self.default, str) or self.default not in options:
|
33
|
+
raise OrionisIntegrityException(
|
34
|
+
f"The 'default' property must be a string and match one of the available options ({options})."
|
35
|
+
)
|
36
|
+
|
37
|
+
if not isinstance(self.brokers, Brokers):
|
38
|
+
raise OrionisIntegrityException("brokers must be an instance of the Brokers class.")
|
39
|
+
|
40
|
+
def toDict(self) -> dict:
|
41
|
+
"""
|
42
|
+
Converts the current instance into a dictionary representation.
|
43
|
+
|
44
|
+
Returns:
|
45
|
+
dict: A dictionary containing all the fields of the instance.
|
46
|
+
"""
|
47
|
+
return asdict(self)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
class Strategy(Enum):
|
4
|
+
"""
|
5
|
+
Enumeration representing the different types of queues supported by the system.
|
6
|
+
Attributes:
|
7
|
+
FIFO: (First-In, First-Out) Elements are processed in the order they arrive.
|
8
|
+
LIFO: (Last-In, First-Out) The most recent elements are processed first.
|
9
|
+
PRIORITY: Elements are processed according to their assigned priority, not necessarily in arrival order.
|
10
|
+
Use this enumeration to specify the queue behavior in the system configuration.
|
11
|
+
"""
|
12
|
+
|
13
|
+
FIFO = 'fifo'
|
14
|
+
LIFO = 'lifo'
|
15
|
+
PRIORITY = 'priority'
|