orionis 0.252.0__py3-none-any.whl → 0.265.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.252.0.dist-info → orionis-0.265.0.dist-info}/METADATA +19 -3
- orionis-0.265.0.dist-info/RECORD +440 -0
- {orionis-0.252.0.dist-info → orionis-0.265.0.dist-info}/WHEEL +1 -1
- orionis-0.265.0.dist-info/entry_points.txt +2 -0
- orionis-0.265.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.252.0.dist-info/RECORD +0 -318
- orionis-0.252.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.252.0.dist-info → orionis-0.265.0.dist-info/licenses}/LICENCE +0 -0
- {orionis-0.252.0.dist-info → orionis-0.265.0.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,9 @@
|
|
1
|
-
from dataclasses import dataclass, field
|
2
|
-
from orionis.luminate.config.app.enums.ciphers import Cipher
|
3
|
-
from orionis.luminate.config.app.enums.environments import Environments
|
4
|
-
from orionis.luminate.config.exceptions.
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.app.enums.ciphers import Cipher
|
3
|
+
from orionis.luminate.foundation.config.app.enums.environments import Environments
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
5
|
from orionis.luminate.services.environment.env import Env
|
6
|
-
from orionis.luminate.services.workers
|
6
|
+
from orionis.luminate.services.system.workers import Workers
|
7
7
|
|
8
8
|
@dataclass(unsafe_hash=True, kw_only=True)
|
9
9
|
class App:
|
@@ -31,16 +31,14 @@ class App:
|
|
31
31
|
default_factory=lambda: Env.get('APP_NAME', 'Orionis Application'),
|
32
32
|
metadata={
|
33
33
|
"description": "The name of the application. Defaults to 'Orionis Application'.",
|
34
|
-
"required": True,
|
35
34
|
"default": "Orionis Application"
|
36
35
|
}
|
37
36
|
)
|
38
37
|
|
39
|
-
env: Environments = field(
|
38
|
+
env: str | Environments = field(
|
40
39
|
default_factory=lambda: Env.get('APP_ENV', Environments.DEVELOPMENT),
|
41
40
|
metadata={
|
42
41
|
"description": "The environment in which the application is running. Defaults to 'DEVELOPMENT'.",
|
43
|
-
"required": True,
|
44
42
|
"default": "Environments.DEVELOPMENT"
|
45
43
|
}
|
46
44
|
)
|
@@ -49,7 +47,6 @@ class App:
|
|
49
47
|
default_factory=lambda: Env.get('APP_DEBUG', True),
|
50
48
|
metadata={
|
51
49
|
"description": "Flag indicating whether debug mode is enabled. Defaults to False.",
|
52
|
-
"required": True,
|
53
50
|
"default": True
|
54
51
|
}
|
55
52
|
)
|
@@ -58,7 +55,6 @@ class App:
|
|
58
55
|
default_factory=lambda: Env.get('APP_URL', 'http://127.0.0.1'),
|
59
56
|
metadata={
|
60
57
|
"description": "The base URL of the application. Defaults to 'http://127.0.0.1'.",
|
61
|
-
"required": True,
|
62
58
|
"default": "http://127.0.0.1"
|
63
59
|
}
|
64
60
|
)
|
@@ -67,17 +63,15 @@ class App:
|
|
67
63
|
default_factory=lambda: Env.get('APP_PORT', 8000),
|
68
64
|
metadata={
|
69
65
|
"description": "The port on which the application will run. Defaults to 8000.",
|
70
|
-
"required": True,
|
71
66
|
"default": 8000
|
72
67
|
}
|
73
68
|
)
|
74
69
|
|
75
70
|
workers: int = field(
|
76
|
-
default_factory=lambda: Env.get('APP_WORKERS',
|
71
|
+
default_factory=lambda: Env.get('APP_WORKERS', Workers().calculate()),
|
77
72
|
metadata={
|
78
73
|
"description": "The number of worker processes to handle requests. Defaults to the maximum available workers.",
|
79
|
-
"
|
80
|
-
"default": "MaximumWorkers.calculate()"
|
74
|
+
"default": "Calculated by Workers()."
|
81
75
|
}
|
82
76
|
)
|
83
77
|
|
@@ -85,7 +79,6 @@ class App:
|
|
85
79
|
default_factory=lambda: Env.get('APP_RELOAD', True),
|
86
80
|
metadata={
|
87
81
|
"description": "Flag indicating whether the application should reload on code changes. Defaults to True.",
|
88
|
-
"required": True,
|
89
82
|
"default": True
|
90
83
|
}
|
91
84
|
)
|
@@ -94,7 +87,6 @@ class App:
|
|
94
87
|
default_factory=lambda: Env.get('APP_TIMEZONE', 'UTC'),
|
95
88
|
metadata={
|
96
89
|
"description": "The timezone of the application. Defaults to 'UTC'.",
|
97
|
-
"required": True,
|
98
90
|
"default": "UTC"
|
99
91
|
}
|
100
92
|
)
|
@@ -103,7 +95,6 @@ class App:
|
|
103
95
|
default_factory=lambda: Env.get('APP_LOCALE', 'en'),
|
104
96
|
metadata={
|
105
97
|
"description": "The locale for the application. Defaults to 'en'.",
|
106
|
-
"required": True,
|
107
98
|
"default": "en"
|
108
99
|
}
|
109
100
|
)
|
@@ -112,16 +103,14 @@ class App:
|
|
112
103
|
default_factory=lambda: Env.get('APP_FALLBACK_LOCALE', 'en'),
|
113
104
|
metadata={
|
114
105
|
"description": "The fallback locale for the application. Defaults to 'en'.",
|
115
|
-
"required": True,
|
116
106
|
"default": "en"
|
117
107
|
}
|
118
108
|
)
|
119
109
|
|
120
|
-
cipher: str = field(
|
110
|
+
cipher: str | Cipher = field(
|
121
111
|
default_factory=lambda: Env.get('APP_CIPHER', Cipher.AES_256_CBC),
|
122
112
|
metadata={
|
123
113
|
"description": "The cipher used for encryption. Defaults to 'AES_256_CBC'.",
|
124
|
-
"required": True,
|
125
114
|
"default": "Cipher.AES_256_CBC"
|
126
115
|
}
|
127
116
|
)
|
@@ -130,7 +119,6 @@ class App:
|
|
130
119
|
default_factory=lambda: Env.get('APP_KEY'),
|
131
120
|
metadata={
|
132
121
|
"description": "The encryption key for the application. Defaults to None.",
|
133
|
-
"required": False,
|
134
122
|
"default": None
|
135
123
|
}
|
136
124
|
)
|
@@ -139,7 +127,6 @@ class App:
|
|
139
127
|
default_factory=lambda: Env.get('APP_MAINTENANCE', '/maintenance'),
|
140
128
|
metadata={
|
141
129
|
"description": "The maintenance configuration for the application. Defaults to '/maintenance'.",
|
142
|
-
"required": True,
|
143
130
|
"default": "/maintenance"
|
144
131
|
}
|
145
132
|
)
|
@@ -151,18 +138,21 @@ class App:
|
|
151
138
|
Ensures that all fields have the correct types and values, raising TypeError
|
152
139
|
if any field is invalid. This helps catch configuration errors early.
|
153
140
|
"""
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
141
|
+
|
142
|
+
# Validate `name` attribute
|
143
|
+
if not isinstance(self.name, (str, Environments)) or not self.name.strip():
|
144
|
+
raise OrionisIntegrityException("The 'name' attribute must be a non-empty string or an Environments instance.")
|
145
|
+
|
146
|
+
# Validate `env` attribute
|
147
|
+
options_env = Environments._member_names_
|
148
|
+
if isinstance(self.env, str):
|
149
|
+
_value = str(self.env).strip().upper()
|
150
|
+
if _value in options_env:
|
151
|
+
self.env = Environments[_value].value
|
164
152
|
else:
|
165
|
-
raise OrionisIntegrityException("
|
153
|
+
raise OrionisIntegrityException(f"Invalid name value: {self.env}. Must be one of {str(options_env)}.")
|
154
|
+
elif isinstance(self.env, Environments):
|
155
|
+
self.env = self.env.value
|
166
156
|
|
167
157
|
if not isinstance(self.debug, bool):
|
168
158
|
raise OrionisIntegrityException("The 'debug' attribute must be a boolean.")
|
@@ -188,18 +178,29 @@ class App:
|
|
188
178
|
if not isinstance(self.fallback_locale, str) or not self.fallback_locale.strip():
|
189
179
|
raise OrionisIntegrityException("The 'fallback_locale' attribute must be a non-empty string.")
|
190
180
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
181
|
+
options_cipher = Cipher._member_names_
|
182
|
+
if not isinstance(self.cipher, (Cipher, str)):
|
183
|
+
raise OrionisIntegrityException("The 'cipher' attribute must be a Cipher or a string.")
|
184
|
+
|
185
|
+
if isinstance(self.cipher, str):
|
186
|
+
_value = str(self.cipher).strip().upper().replace("-", "_")
|
187
|
+
if _value in options_cipher:
|
188
|
+
self.cipher = Cipher[_value].value
|
198
189
|
else:
|
199
|
-
raise OrionisIntegrityException("
|
190
|
+
raise OrionisIntegrityException(f"Invalid cipher value: {self.cipher}. Must be one of {options_cipher}.")
|
191
|
+
elif isinstance(self.cipher, Cipher):
|
192
|
+
self.cipher = self.cipher.value
|
200
193
|
|
201
194
|
if self.key is not None and not isinstance(self.key, str):
|
202
195
|
raise OrionisIntegrityException("The 'key' attribute must be a string or None.")
|
203
196
|
|
204
|
-
if not isinstance(self.maintenance, str):
|
205
|
-
raise OrionisIntegrityException("The 'maintenance' attribute must be a string (
|
197
|
+
if not isinstance(self.maintenance, str) or not self.name.strip() or not self.maintenance.startswith('/'):
|
198
|
+
raise OrionisIntegrityException("The 'maintenance' attribute must be a non-empty string representing a valid route (e.g., '/maintenance').")
|
199
|
+
|
200
|
+
def toDict(self) -> dict:
|
201
|
+
"""
|
202
|
+
Convert the object to a dictionary representation.
|
203
|
+
Returns:
|
204
|
+
dict: A dictionary representation of the Dataclass object.
|
205
|
+
"""
|
206
|
+
return asdict(self)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from dataclasses import dataclass
|
1
|
+
from dataclasses import asdict, dataclass
|
2
2
|
|
3
3
|
@dataclass(unsafe_hash=True, kw_only=True)
|
4
4
|
class Auth:
|
@@ -9,3 +9,11 @@ class Auth:
|
|
9
9
|
Extend this class to implement authentication logic such as user credentials, token management, or session handling.
|
10
10
|
"""
|
11
11
|
pass
|
12
|
+
|
13
|
+
def toDict(self) -> dict:
|
14
|
+
"""
|
15
|
+
Convert the object to a dictionary representation.
|
16
|
+
Returns:
|
17
|
+
dict: A dictionary representation of the Dataclass object.
|
18
|
+
"""
|
19
|
+
return asdict(self)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.cache.entities.stores import Stores
|
3
|
+
from orionis.luminate.foundation.config.cache.enums.drivers import Drivers
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
|
+
from orionis.luminate.services.environment.env import Env
|
6
|
+
|
7
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
8
|
+
class Cache:
|
9
|
+
"""
|
10
|
+
Represents the cache configuration for the application.
|
11
|
+
Attributes:
|
12
|
+
default (Drivers | str): The default cache storage type. Can be a member of the Drivers enum or a string
|
13
|
+
(e.g., 'memory', 'file'). Defaults to the value of the 'CACHE_STORE' environment variable or Drivers.MEMORY.
|
14
|
+
stores (Stores): The configuration for available cache stores. Defaults to a Stores instance with a file store
|
15
|
+
at the path specified by the 'CACHE_PATH' environment variable or "storage/framework/cache/data".
|
16
|
+
Methods:
|
17
|
+
__post_init__():
|
18
|
+
- Validates that 'default' is either a Drivers enum member or a string.
|
19
|
+
- Converts 'default' from string to Drivers enum if necessary.
|
20
|
+
- Validates that 'stores' is an instance of Stores.
|
21
|
+
"""
|
22
|
+
|
23
|
+
default: Drivers | str = field(
|
24
|
+
default_factory=lambda:Env.get("CACHE_STORE", Drivers.MEMORY),
|
25
|
+
metadata={
|
26
|
+
"description": "The default cache storage type. Can be a member of the Drivers enum or a string (e.g., 'memory', 'file').",
|
27
|
+
"default": "Drivers.MEMORY",
|
28
|
+
},
|
29
|
+
)
|
30
|
+
|
31
|
+
stores: Stores = field(
|
32
|
+
default_factory=Stores,
|
33
|
+
metadata={
|
34
|
+
"description": "The configuration for available cache stores. Defaults to a file store at the specified path.",
|
35
|
+
"default": "file=File(path='storage/framework/cache/data')",
|
36
|
+
}
|
37
|
+
)
|
38
|
+
|
39
|
+
def __post_init__(self):
|
40
|
+
"""
|
41
|
+
Post-initialization method for validating and normalizing cache configuration.
|
42
|
+
Ensures that:
|
43
|
+
- The `default` attribute is either an instance of `Drivers` or a string representing a valid driver name.
|
44
|
+
- If `default` is a string, it is converted to the corresponding `Drivers` enum member after validation.
|
45
|
+
- The `stores` attribute is an instance of `Stores`.
|
46
|
+
Raises:
|
47
|
+
OrionisIntegrityException: If `default` is not a valid driver or if `stores` is not an instance of `Stores`.
|
48
|
+
"""
|
49
|
+
|
50
|
+
# Validate the 'default' attribute to ensure it is either a Drivers enum member or a string
|
51
|
+
if not isinstance(self.default, (Drivers, str)):
|
52
|
+
raise OrionisIntegrityException("The default cache store must be an instance of Drivers or a string.")
|
53
|
+
|
54
|
+
options_drivers = Drivers._member_names_
|
55
|
+
if isinstance(self.default, str):
|
56
|
+
_value = self.default.upper().strip()
|
57
|
+
if _value not in options_drivers:
|
58
|
+
raise OrionisIntegrityException(f"Invalid cache driver: {self.default}. Must be one of {str(options_drivers)}.")
|
59
|
+
else:
|
60
|
+
self.default = Drivers[_value].value
|
61
|
+
else:
|
62
|
+
self.default = self.default.value
|
63
|
+
|
64
|
+
# Validate the 'stores' attribute to ensure it is an instance of Stores
|
65
|
+
if not isinstance(self.stores, Stores):
|
66
|
+
raise OrionisIntegrityException("The stores must be an instance of Stores.")
|
67
|
+
|
68
|
+
def toDict(self) -> dict:
|
69
|
+
"""
|
70
|
+
Convert the object to a dictionary representation.
|
71
|
+
Returns:
|
72
|
+
dict: A dictionary representation of the Dataclass object.
|
73
|
+
"""
|
74
|
+
return asdict(self)
|
@@ -0,0 +1,46 @@
|
|
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 the configuration entity for a file-based cache store.
|
8
|
+
Attributes:
|
9
|
+
path (str): The file system path where cache data will be stored. By default, this is set to
|
10
|
+
'storage/framework/cache/data' using a relative path resolver.
|
11
|
+
Methods:
|
12
|
+
__post_init__():
|
13
|
+
Validates the 'path' attribute after dataclass initialization. Raises an
|
14
|
+
OrionisIntegrityException if 'path' is empty or not a string, ensuring correct cache setup.
|
15
|
+
"""
|
16
|
+
|
17
|
+
path: str = field(
|
18
|
+
default='storage/framework/cache/data',
|
19
|
+
metadata={
|
20
|
+
"description": "The configuration for available cache stores. Defaults to a file store at the specified path.",
|
21
|
+
"default": "storage/framework/cache/data"
|
22
|
+
},
|
23
|
+
)
|
24
|
+
|
25
|
+
def __post_init__(self):
|
26
|
+
"""
|
27
|
+
Validates the 'path' attribute after dataclass initialization.
|
28
|
+
|
29
|
+
Raises:
|
30
|
+
OrionisIntegrityException: If 'path' is empty or not a string, indicating a misconfiguration
|
31
|
+
in the file cache setup.
|
32
|
+
"""
|
33
|
+
|
34
|
+
# Validate the 'path' attribute to ensure it is not empty and is a string
|
35
|
+
if not self.path:
|
36
|
+
raise OrionisIntegrityException("File cache configuration error: 'path' cannot be empty. Please provide a valid file path.")
|
37
|
+
if not isinstance(self.path, str):
|
38
|
+
raise OrionisIntegrityException(f"File cache configuration error: 'path' must be a string, got {type(self.path).__name__}.")
|
39
|
+
|
40
|
+
def toDict(self) -> dict:
|
41
|
+
"""
|
42
|
+
Convert the object to a dictionary representation.
|
43
|
+
Returns:
|
44
|
+
dict: A dictionary representation of the Dataclass object.
|
45
|
+
"""
|
46
|
+
return asdict(self)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.cache.entities.file import File
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
|
5
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
6
|
+
class Stores:
|
7
|
+
"""
|
8
|
+
Represents a collection of cache storage backends for the application.
|
9
|
+
Attributes:
|
10
|
+
file (File): An instance of `File` representing file-based cache storage.
|
11
|
+
The default path is set to 'storage/framework/cache/data', resolved
|
12
|
+
relative to the application's root directory.
|
13
|
+
Methods:
|
14
|
+
__post_init__():
|
15
|
+
Ensures that the 'file' attribute is properly initialized as an instance of `File`.
|
16
|
+
Raises a TypeError if the type check fails.
|
17
|
+
"""
|
18
|
+
|
19
|
+
file: File = field(
|
20
|
+
default_factory=File,
|
21
|
+
metadata={
|
22
|
+
"description": "An instance of `File` representing file-based cache storage.",
|
23
|
+
"default": "File(path='storage/framework/cache/data')",
|
24
|
+
},
|
25
|
+
)
|
26
|
+
|
27
|
+
def __post_init__(self):
|
28
|
+
"""
|
29
|
+
Post-initialization method to validate the 'file' attribute.
|
30
|
+
|
31
|
+
Ensures that the 'file' attribute is an instance of the File class.
|
32
|
+
Raises:
|
33
|
+
OrionisIntegrityException: If 'file' is not an instance of File, with a descriptive error message.
|
34
|
+
"""
|
35
|
+
if not isinstance(self.file, File):
|
36
|
+
raise OrionisIntegrityException(
|
37
|
+
f"The 'file' attribute must be an instance of File, but got {type(self.file).__name__}."
|
38
|
+
)
|
39
|
+
|
40
|
+
def toDict(self) -> dict:
|
41
|
+
"""
|
42
|
+
Convert the object to a dictionary representation.
|
43
|
+
Returns:
|
44
|
+
dict: A dictionary representation of the Dataclass object.
|
45
|
+
"""
|
46
|
+
return asdict(self)
|
@@ -1,14 +1,4 @@
|
|
1
|
-
from abc import ABC
|
2
|
-
from dataclasses import dataclass
|
3
|
-
|
4
|
-
@dataclass
|
5
|
-
class EmptyData:
|
6
|
-
"""
|
7
|
-
A placeholder dataclass that can be used as a default or empty configuration.
|
8
|
-
This class doesn't have any fields or data, but serves as a default value
|
9
|
-
for the 'config' attribute in classes implementing IConfig.
|
10
|
-
"""
|
11
|
-
pass
|
1
|
+
from abc import ABC, abstractmethod
|
12
2
|
|
13
3
|
class IConfig(ABC):
|
14
4
|
"""
|
@@ -24,4 +14,10 @@ class IConfig(ABC):
|
|
24
14
|
A dataclass instance representing the configuration.
|
25
15
|
"""
|
26
16
|
|
27
|
-
|
17
|
+
@property
|
18
|
+
@abstractmethod
|
19
|
+
def config(self):
|
20
|
+
"""
|
21
|
+
Should return a dataclass instance representing the configuration.
|
22
|
+
"""
|
23
|
+
pass
|
@@ -0,0 +1,129 @@
|
|
1
|
+
from dataclasses import dataclass, field, asdict
|
2
|
+
from typing import List, Optional
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
|
5
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
6
|
+
class Cors:
|
7
|
+
"""
|
8
|
+
CORS configuration compatible with Starlette CORSMiddleware.
|
9
|
+
Attributes:
|
10
|
+
allow_origins (List[str]): List of allowed origins. Use ["*"] to allow all origins.
|
11
|
+
allow_origin_regex (Optional[str]): Regular expression to match allowed origins.
|
12
|
+
allow_methods (List[str]): List of allowed HTTP methods. Use ["*"] to allow all methods.
|
13
|
+
allow_headers (List[str]): List of allowed HTTP headers. Use ["*"] to allow all headers.
|
14
|
+
expose_headers (List[str]): List of headers exposed to the browser.
|
15
|
+
allow_credentials (bool): Whether to allow credentials (cookies, authorization headers, etc.).
|
16
|
+
max_age (Optional[int]): Maximum time (in seconds) for the preflight request to be cached.
|
17
|
+
Methods:
|
18
|
+
__post_init__():
|
19
|
+
Validates the types of the configuration attributes after initialization.
|
20
|
+
Raises:
|
21
|
+
OrionisIntegrityException: If any attribute does not match the expected type.
|
22
|
+
"""
|
23
|
+
|
24
|
+
allow_origins: List[str] = field(
|
25
|
+
default_factory=lambda: ["*"],
|
26
|
+
metadata={
|
27
|
+
"description": "List of allowed origins. Use [\"*\"] to allow all origins.",
|
28
|
+
"deafault": ["*"],
|
29
|
+
},
|
30
|
+
)
|
31
|
+
|
32
|
+
allow_origin_regex: Optional[str] = field(
|
33
|
+
default=None,
|
34
|
+
metadata={
|
35
|
+
"description": "Regular expression pattern to match allowed origins.",
|
36
|
+
"default": None,
|
37
|
+
},
|
38
|
+
)
|
39
|
+
|
40
|
+
allow_methods: List[str] = field(
|
41
|
+
default_factory=lambda: ["*"],
|
42
|
+
metadata={
|
43
|
+
"description": "List of allowed HTTP methods. Use [\"*\"] to allow all methods.",
|
44
|
+
"default": ["*"],
|
45
|
+
},
|
46
|
+
)
|
47
|
+
|
48
|
+
allow_headers: List[str] = field(
|
49
|
+
default_factory=lambda: ["*"],
|
50
|
+
metadata={
|
51
|
+
"description": "List of allowed HTTP headers. Use [\"*\"] to allow all headers.",
|
52
|
+
"default": ["*"],
|
53
|
+
},
|
54
|
+
)
|
55
|
+
|
56
|
+
expose_headers: List[str] = field(
|
57
|
+
default_factory=lambda:[],
|
58
|
+
metadata={
|
59
|
+
"description": "List of headers exposed to the browser.",
|
60
|
+
"default": [],
|
61
|
+
},
|
62
|
+
)
|
63
|
+
|
64
|
+
allow_credentials: bool = field(
|
65
|
+
default=False,
|
66
|
+
metadata={
|
67
|
+
"description": "Whether to allow credentials (cookies, authorization headers, etc.).",
|
68
|
+
"default": False,
|
69
|
+
},
|
70
|
+
)
|
71
|
+
|
72
|
+
max_age: Optional[int] = field(
|
73
|
+
default=600,
|
74
|
+
metadata={
|
75
|
+
"description": "Maximum time (in seconds) for preflight request caching.",
|
76
|
+
"default": 600,
|
77
|
+
},
|
78
|
+
)
|
79
|
+
|
80
|
+
def __post_init__(self):
|
81
|
+
"""
|
82
|
+
Validates the types of CORS configuration attributes after initialization.
|
83
|
+
|
84
|
+
Raises:
|
85
|
+
OrionisIntegrityException: If any of the following conditions are not met:
|
86
|
+
- allow_origins is not a list of strings.
|
87
|
+
- allow_origin_regex is not a string or None.
|
88
|
+
- allow_methods is not a list of strings.
|
89
|
+
- allow_headers is not a list of strings.
|
90
|
+
- expose_headers is not a list of strings.
|
91
|
+
- allow_credentials is not a boolean.
|
92
|
+
- max_age is not an integer or None.
|
93
|
+
"""
|
94
|
+
if not isinstance(self.allow_origins, list):
|
95
|
+
raise OrionisIntegrityException(
|
96
|
+
"Invalid type for 'allow_origins': expected a list of strings."
|
97
|
+
)
|
98
|
+
if self.allow_origin_regex is not None and not isinstance(self.allow_origin_regex, str):
|
99
|
+
raise OrionisIntegrityException(
|
100
|
+
"Invalid type for 'allow_origin_regex': expected a string or None."
|
101
|
+
)
|
102
|
+
if not isinstance(self.allow_methods, list):
|
103
|
+
raise OrionisIntegrityException(
|
104
|
+
"Invalid type for 'allow_methods': expected a list of strings."
|
105
|
+
)
|
106
|
+
if not isinstance(self.allow_headers, list):
|
107
|
+
raise OrionisIntegrityException(
|
108
|
+
"Invalid type for 'allow_headers': expected a list of strings."
|
109
|
+
)
|
110
|
+
if not isinstance(self.expose_headers, list):
|
111
|
+
raise OrionisIntegrityException(
|
112
|
+
"Invalid type for 'expose_headers': expected a list of strings."
|
113
|
+
)
|
114
|
+
if not isinstance(self.allow_credentials, bool):
|
115
|
+
raise OrionisIntegrityException(
|
116
|
+
"Invalid type for 'allow_credentials': expected a boolean."
|
117
|
+
)
|
118
|
+
if self.max_age is not None and not isinstance(self.max_age, int):
|
119
|
+
raise OrionisIntegrityException(
|
120
|
+
"Invalid type for 'max_age': expected an integer or None."
|
121
|
+
)
|
122
|
+
|
123
|
+
def toDict(self) -> dict:
|
124
|
+
"""
|
125
|
+
Convert the object to a dictionary representation.
|
126
|
+
Returns:
|
127
|
+
dict: A dictionary representation of the Dataclass object.
|
128
|
+
"""
|
129
|
+
return asdict(self)
|
@@ -0,0 +1,89 @@
|
|
1
|
+
from dataclasses import asdict, dataclass, field
|
2
|
+
from orionis.luminate.foundation.config.database.entities.mysql import MySQL
|
3
|
+
from orionis.luminate.foundation.config.database.entities.oracle import Oracle
|
4
|
+
from orionis.luminate.foundation.config.database.entities.pgsql import PGSQL
|
5
|
+
from orionis.luminate.foundation.config.database.entities.sqlite import SQLite
|
6
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
7
|
+
|
8
|
+
@dataclass(unsafe_hash=True, kw_only=True)
|
9
|
+
class Connections:
|
10
|
+
"""
|
11
|
+
Data class to represent all database connections used by the application.
|
12
|
+
|
13
|
+
Attributes
|
14
|
+
----------
|
15
|
+
sqlite : Sqlite
|
16
|
+
Configuration for the SQLite database connection.
|
17
|
+
mysql : MySQL
|
18
|
+
Configuration for the MySQL database connection.
|
19
|
+
pgsql : Pgsql
|
20
|
+
Configuration for the PostgreSQL database connection.
|
21
|
+
oracle : Oracle
|
22
|
+
Configuration for the Oracle database connection.
|
23
|
+
"""
|
24
|
+
sqlite: SQLite = field(
|
25
|
+
default_factory=SQLite,
|
26
|
+
metadata={
|
27
|
+
"description": "SQLite database connection configuration",
|
28
|
+
"default": "SQLite()"
|
29
|
+
}
|
30
|
+
)
|
31
|
+
|
32
|
+
mysql: MySQL = field(
|
33
|
+
default_factory=MySQL,
|
34
|
+
metadata={
|
35
|
+
"description": "MySQL database connection configuration",
|
36
|
+
"default": "MySQL()"
|
37
|
+
}
|
38
|
+
)
|
39
|
+
|
40
|
+
pgsql: PGSQL = field(
|
41
|
+
default_factory=PGSQL,
|
42
|
+
metadata={
|
43
|
+
"description": "PostgreSQL database connection configuration",
|
44
|
+
"default": "PGSQL()"
|
45
|
+
}
|
46
|
+
)
|
47
|
+
|
48
|
+
oracle: Oracle = field(
|
49
|
+
default_factory=Oracle,
|
50
|
+
metadata={
|
51
|
+
"description": "Oracle database connection configuration",
|
52
|
+
"default": "Oracle()"
|
53
|
+
}
|
54
|
+
)
|
55
|
+
|
56
|
+
def __post_init__(self):
|
57
|
+
"""
|
58
|
+
Post-initialization method to validate the types of database connection attributes.
|
59
|
+
Ensures that the attributes `sqlite`, `mysql`, `pgsql`, and `oracle` are instances of their respective classes.
|
60
|
+
Raises:
|
61
|
+
OrionisIntegrityException: If any attribute is not an instance of its expected class.
|
62
|
+
"""
|
63
|
+
if not isinstance(self.sqlite, SQLite):
|
64
|
+
raise OrionisIntegrityException(
|
65
|
+
f"Invalid type for 'sqlite': expected 'Sqlite', got '{type(self.sqlite).__name__}'."
|
66
|
+
)
|
67
|
+
|
68
|
+
if not isinstance(self.mysql, MySQL):
|
69
|
+
raise OrionisIntegrityException(
|
70
|
+
f"Invalid type for 'mysql': expected 'Mysql', got '{type(self.mysql).__name__}'."
|
71
|
+
)
|
72
|
+
|
73
|
+
if not isinstance(self.pgsql, PGSQL):
|
74
|
+
raise OrionisIntegrityException(
|
75
|
+
f"Invalid type for 'pgsql': expected 'Pgsql', got '{type(self.pgsql).__name__}'."
|
76
|
+
)
|
77
|
+
|
78
|
+
if not isinstance(self.oracle, Oracle):
|
79
|
+
raise OrionisIntegrityException(
|
80
|
+
f"Invalid type for 'oracle': expected 'Oracle', got '{type(self.oracle).__name__}'."
|
81
|
+
)
|
82
|
+
|
83
|
+
def toDict(self) -> dict:
|
84
|
+
"""
|
85
|
+
Convert the object to a dictionary representation.
|
86
|
+
Returns:
|
87
|
+
dict: A dictionary representation of the Dataclass object.
|
88
|
+
"""
|
89
|
+
return asdict(self)
|