orionis 0.546.0__tar.gz → 0.548.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- orionis-0.548.0/MANIFEST.in +20 -0
- {orionis-0.546.0/orionis.egg-info → orionis-0.548.0}/PKG-INFO +1 -1
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/base/scheduler_event_listener.py +0 -17
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/schedule_event_listener.py +0 -18
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/app/entities/app.py +3 -2
- orionis-0.548.0/orionis/foundation/config/app/enums/ciphers.py +20 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/entities/session.py +2 -2
- {orionis-0.546.0 → orionis-0.548.0}/orionis/metadata/framework.py +1 -1
- orionis-0.548.0/orionis/services/encrypter/encrypter.py +115 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/dynamic/caster.py +35 -27
- orionis-0.548.0/orionis/services/environment/key/key_generator.py +47 -0
- {orionis-0.546.0 → orionis-0.548.0/orionis.egg-info}/PKG-INFO +1 -1
- {orionis-0.546.0 → orionis-0.548.0}/orionis.egg-info/SOURCES.txt +3 -147
- {orionis-0.546.0 → orionis-0.548.0}/orionis.egg-info/top_level.txt +0 -1
- {orionis-0.546.0 → orionis-0.548.0}/setup.py +8 -8
- orionis-0.546.0/MANIFEST.in +0 -3
- orionis-0.546.0/orionis/foundation/config/app/enums/ciphers.py +0 -34
- orionis-0.546.0/orionis/services/environment/key/key_generator.py +0 -26
- orionis-0.546.0/tests/container/__init__.py +0 -0
- orionis-0.546.0/tests/container/context/__init__.py +0 -0
- orionis-0.546.0/tests/container/context/test_manager.py +0 -38
- orionis-0.546.0/tests/container/context/test_scope.py +0 -32
- orionis-0.546.0/tests/container/core/__init__.py +0 -0
- orionis-0.546.0/tests/container/core/test_advanced_async.py +0 -234
- orionis-0.546.0/tests/container/core/test_async_optimizations.py +0 -268
- orionis-0.546.0/tests/container/core/test_container.py +0 -453
- orionis-0.546.0/tests/container/core/test_singleton.py +0 -122
- orionis-0.546.0/tests/container/core/test_thread_safety.py +0 -90
- orionis-0.546.0/tests/container/entities/__init__.py +0 -0
- orionis-0.546.0/tests/container/entities/test_binding.py +0 -242
- orionis-0.546.0/tests/container/enums/__init__.py +0 -0
- orionis-0.546.0/tests/container/enums/test_lifetimes.py +0 -97
- orionis-0.546.0/tests/container/facades/__init__.py +0 -0
- orionis-0.546.0/tests/container/facades/test_facade.py +0 -78
- orionis-0.546.0/tests/container/mocks/__init__.py +0 -0
- orionis-0.546.0/tests/container/mocks/mock_advanced_async.py +0 -332
- orionis-0.546.0/tests/container/mocks/mock_async_optimizations.py +0 -407
- orionis-0.546.0/tests/container/mocks/mock_auto_resolution.py +0 -192
- orionis-0.546.0/tests/container/mocks/mock_complex_classes.py +0 -792
- orionis-0.546.0/tests/container/mocks/mock_simple_classes.py +0 -98
- orionis-0.546.0/tests/container/providers/__init__.py +0 -0
- orionis-0.546.0/tests/container/providers/test_providers.py +0 -55
- orionis-0.546.0/tests/container/validators/__init__.py +0 -0
- orionis-0.546.0/tests/container/validators/test_implements.py +0 -186
- orionis-0.546.0/tests/container/validators/test_is_abstract_class.py +0 -147
- orionis-0.546.0/tests/container/validators/test_is_callable.py +0 -102
- orionis-0.546.0/tests/container/validators/test_is_concrete_class.py +0 -160
- orionis-0.546.0/tests/container/validators/test_is_instance.py +0 -150
- orionis-0.546.0/tests/container/validators/test_is_not_subclass.py +0 -49
- orionis-0.546.0/tests/container/validators/test_is_subclass.py +0 -178
- orionis-0.546.0/tests/container/validators/test_is_valid_alias.py +0 -147
- orionis-0.546.0/tests/container/validators/test_lifetime.py +0 -106
- orionis-0.546.0/tests/example/__init__.py +0 -0
- orionis-0.546.0/tests/example/test_example.py +0 -725
- orionis-0.546.0/tests/foundation/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/app/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/app/test_foundation_config_app.py +0 -262
- orionis-0.546.0/tests/foundation/config/auth/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/auth/test_foundation_config_auth.py +0 -29
- orionis-0.546.0/tests/foundation/config/cache/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache.py +0 -143
- orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache_file.py +0 -126
- orionis-0.546.0/tests/foundation/config/cache/test_foundation_config_cache_stores.py +0 -156
- orionis-0.546.0/tests/foundation/config/cors/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/cors/test_foundation_config_cors.py +0 -190
- orionis-0.546.0/tests/foundation/config/database/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database.py +0 -158
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_connections.py +0 -203
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_mysql.py +0 -354
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_oracle.py +0 -288
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_pgsql.py +0 -257
- orionis-0.546.0/tests/foundation/config/database/test_foundation_config_database_sqlite.py +0 -207
- orionis-0.546.0/tests/foundation/config/filesystems/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems.py +0 -160
- orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py +0 -189
- orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py +0 -184
- orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py +0 -143
- orionis-0.546.0/tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py +0 -184
- orionis-0.546.0/tests/foundation/config/logging/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging.py +0 -112
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_channels.py +0 -246
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_chunked.py +0 -217
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_daily.py +0 -220
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_hourly.py +0 -196
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_monthly.py +0 -214
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_stack.py +0 -178
- orionis-0.546.0/tests/foundation/config/logging/test_foundation_config_logging_weekly.py +0 -224
- orionis-0.546.0/tests/foundation/config/mail/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail.py +0 -145
- orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_file.py +0 -97
- orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_mailers.py +0 -106
- orionis-0.546.0/tests/foundation/config/mail/test_foundation_config_mail_smtp.py +0 -146
- orionis-0.546.0/tests/foundation/config/queue/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue.py +0 -88
- orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue_brokers.py +0 -72
- orionis-0.546.0/tests/foundation/config/queue/test_foundation_config_queue_database.py +0 -134
- orionis-0.546.0/tests/foundation/config/root/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/root/test_foundation_config_root_paths.py +0 -112
- orionis-0.546.0/tests/foundation/config/session/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/session/test_foundation_config_session.py +0 -213
- orionis-0.546.0/tests/foundation/config/startup/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/startup/test_foundation_config_startup.py +0 -202
- orionis-0.546.0/tests/foundation/config/testing/__init__.py +0 -0
- orionis-0.546.0/tests/foundation/config/testing/test_foundation_config_testing.py +0 -235
- orionis-0.546.0/tests/metadata/__init__.py +0 -0
- orionis-0.546.0/tests/metadata/test_metadata_framework.py +0 -140
- orionis-0.546.0/tests/metadata/test_metadata_package.py +0 -139
- orionis-0.546.0/tests/services/__init__.py +0 -0
- orionis-0.546.0/tests/services/asynchrony/__init__.py +0 -0
- orionis-0.546.0/tests/services/asynchrony/test_services_asynchrony_coroutine.py +0 -85
- orionis-0.546.0/tests/services/environment/__init__.py +0 -0
- orionis-0.546.0/tests/services/environment/test_services_environment.py +0 -226
- orionis-0.546.0/tests/services/introspection/__init__.py +0 -0
- orionis-0.546.0/tests/services/introspection/dependencies/__init__.py +0 -0
- orionis-0.546.0/tests/services/introspection/dependencies/mocks/__init__.py +0 -0
- orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_user.py +0 -30
- orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_user_controller.py +0 -27
- orionis-0.546.0/tests/services/introspection/dependencies/mocks/mock_users_permissions.py +0 -41
- orionis-0.546.0/tests/services/introspection/dependencies/test_reflect_dependencies.py +0 -261
- orionis-0.546.0/tests/services/introspection/reflection/__init__.py +0 -0
- orionis-0.546.0/tests/services/introspection/reflection/mock/__init__.py +0 -0
- orionis-0.546.0/tests/services/introspection/reflection/mock/fake_reflect_instance.py +0 -1115
- orionis-0.546.0/tests/services/introspection/reflection/test_reflection_abstract.py +0 -1011
- orionis-0.546.0/tests/services/introspection/reflection/test_reflection_callable.py +0 -206
- orionis-0.546.0/tests/services/introspection/reflection/test_reflection_concrete.py +0 -952
- orionis-0.546.0/tests/services/introspection/reflection/test_reflection_instance.py +0 -1233
- orionis-0.546.0/tests/services/introspection/reflection/test_reflection_module.py +0 -567
- orionis-0.546.0/tests/services/introspection/test_reflection.py +0 -462
- orionis-0.546.0/tests/services/log/__init__.py +0 -0
- orionis-0.546.0/tests/services/log/test_log.py +0 -97
- orionis-0.546.0/tests/services/system/__init__.py +0 -0
- orionis-0.546.0/tests/services/system/test_services_system_imports.py +0 -204
- orionis-0.546.0/tests/services/system/test_services_system_workers.py +0 -131
- orionis-0.546.0/tests/support/__init__.py +0 -0
- orionis-0.546.0/tests/support/entities/__init__.py +0 -0
- orionis-0.546.0/tests/support/entities/mock_dataclass.py +0 -40
- orionis-0.546.0/tests/support/entities/test_base.py +0 -64
- orionis-0.546.0/tests/support/patterns/__init__.py +0 -0
- orionis-0.546.0/tests/support/patterns/singleton/__init__.py +0 -0
- orionis-0.546.0/tests/support/patterns/singleton/test_patterns_singleton.py +0 -39
- orionis-0.546.0/tests/support/standard/__init__.py +0 -0
- orionis-0.546.0/tests/support/standard/test_services_std.py +0 -226
- orionis-0.546.0/tests/support/wrapper/__init__.py +0 -0
- orionis-0.546.0/tests/support/wrapper/test_services_wrapper_docdict.py +0 -202
- orionis-0.546.0/tests/testing/__init__.py +0 -0
- orionis-0.546.0/tests/testing/cases/__init__.py +0 -0
- orionis-0.546.0/tests/testing/cases/test_testing_asynchronous.py +0 -63
- orionis-0.546.0/tests/testing/cases/test_testing_synchronous.py +0 -57
- orionis-0.546.0/tests/testing/entities/__init__.py +0 -0
- orionis-0.546.0/tests/testing/entities/test_testing_result.py +0 -146
- orionis-0.546.0/tests/testing/enums/__init__.py +0 -0
- orionis-0.546.0/tests/testing/enums/test_testing_status.py +0 -63
- orionis-0.546.0/tests/testing/output/__init__.py +0 -0
- orionis-0.546.0/tests/testing/output/test_testing_dumper.py +0 -29
- orionis-0.546.0/tests/testing/output/test_testing_printer.py +0 -42
- orionis-0.546.0/tests/testing/records/__init__.py +0 -0
- orionis-0.546.0/tests/testing/records/test_testing_records.py +0 -171
- orionis-0.546.0/tests/testing/test_testing_unit.py +0 -164
- orionis-0.546.0/tests/testing/validators/__init__.py +0 -0
- orionis-0.546.0/tests/testing/validators/test_testing_validators.py +0 -392
- orionis-0.546.0/tests/testing/view/__init__.py +0 -0
- orionis-0.546.0/tests/testing/view/test_render.py +0 -30
- {orionis-0.546.0 → orionis-0.548.0}/LICENCE +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/README.md +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/app.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/args/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/args/argument.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/base/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/base/command.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/base/scheduler.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/cache.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/help.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/make_listener.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/publisher.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/scheduler_list.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/scheduler_work.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/test.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/version.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/commands/workflow.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/base_command.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/base_scheduler.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/cli_request.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/command.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/console.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/dump.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/event.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/executor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/kernel.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/progress_bar.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/reactor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/contracts/schedule.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/core/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/core/reactor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/dumper/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/dumper/dump.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/dynamic/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/dynamic/progress_bar.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/all_jobs_removed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/command.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/event.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/event_job.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/executor_added.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/executor_removed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_added.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_error.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_event_data.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_executed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_max_instances.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_missed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_modified.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_pause.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_removed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_resume.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_store_added.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_store_removed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/job_submitted.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_error.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_event_data.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_paused.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_resumed.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_shutdown.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/entities/scheduler_started.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/enums/actions.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/enums/listener.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/enums/styles.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/exceptions/cli_exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/exceptions/cli_orionis_value_error.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/exceptions/cli_runtime_error.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/exceptions/cli_schedule_exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/fluent/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/fluent/command.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/fluent/event.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/kernel.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/output/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/output/console.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/output/executor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/request/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/request/cli_request.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/tasks/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/console/tasks/schedule.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/container.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/context/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/context/manager.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/context/scope.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/contracts/container.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/contracts/service_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/entities/binding.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/enums/lifetimes.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/exceptions/attribute.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/exceptions/exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/exceptions/type.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/facades/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/facades/facade.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/providers/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/providers/service_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/implements.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_abstract_class.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_callable.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_concrete_class.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_instance.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_not_subclass.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_subclass.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/is_valid_alias.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/container/validators/lifetime.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/base/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/base/handler.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/catch.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/contracts/catch.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/contracts/handler.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/failure/entities/throwable.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/application.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/app/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/app/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/app/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/app/enums/environments.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/auth/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/auth/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/auth/entities/auth.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/entities/cache.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/entities/file.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/entities/stores.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cache/enums/drivers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cors/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cors/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/cors/entities/cors.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/connections.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/database.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/mysql.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/oracle.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/pgsql.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/entities/sqlite.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/mysql_charsets.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/mysql_collations.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/mysql_engine.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/oracle_encoding.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/oracle_nencoding.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/pgsql_charsets.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/pgsql_collations.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/pgsql_mode.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/sqlite_foreign_key.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/sqlite_journal.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/database/enums/sqlite_synchronous.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/aws.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/disks.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/filesystems.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/local.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/filesystems/entitites/public.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/channels.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/chunked.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/daily.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/hourly.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/logging.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/monthly.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/stack.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/entities/weekly.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/enums/levels.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/validators/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/validators/level.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/logging/validators/path.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/entities/file.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/entities/mail.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/entities/mailers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/mail/entities/smtp.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/entities/brokers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/entities/database.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/entities/queue.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/queue/enums/strategy.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/roots/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/roots/paths.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/enums/same_site_policy.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/helpers/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/session/helpers/secret_key.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/startup.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/entities/testing.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/enums/drivers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/enums/mode.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/config/testing/enums/verbosity.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/contracts/application.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/contracts/config.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/exceptions/integrity.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/exceptions/runtime.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/exceptions/type.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/catch_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/cli_request_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/console_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/directory_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/dumper_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/executor_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/inspirational_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/logger_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/performance_counter_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/progress_bar_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/reactor_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/scheduler_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/testing_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/foundation/providers/workers_provider.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/metadata/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/metadata/package.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/contracts/coroutines.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/coroutines.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/asynchrony/exceptions/exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/contracts/caster.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/contracts/env.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/core/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/core/dot_env.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/dynamic/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/enums/value_type.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/env.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/exceptions/exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/helpers/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/helpers/functions.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/key/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/validators/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/validators/key_name.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/environment/validators/types.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/file/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/file/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/file/contracts/directory.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/file/directory.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/inspirational/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/inspirational/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/inspirational/contracts/inspire.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/inspirational/inspire.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/inspirational/quotes.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/abstract/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/abstract/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/abstract/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/abstract/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/callables/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/callables/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/callables/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/callables/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/concretes/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/concretes/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/concretes/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/concretes/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dataclass/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dataclass/attributes.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/entities/argument.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/entities/resolve_argument.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/dependencies/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/exceptions/attribute.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/exceptions/type.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/instances/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/instances/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/instances/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/instances/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/modules/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/modules/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/modules/contracts/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/modules/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/objects/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/objects/types.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/introspection/reflection.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/contracts/log_service.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/exceptions/runtime.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/handlers/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/handlers/filename.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/handlers/size_rotating.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/handlers/timed_rotating.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/log/log_service.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/contracts/imports.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/contracts/workers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/imports.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/runtime/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/runtime/imports.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/services/system/workers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/entities/base.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/application.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/application.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/console.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/console.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/directory.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/directory.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/dumper.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/dumper.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/executor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/executor.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/inspire.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/inspire.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/logger.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/logger.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/performance_counter.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/performance_counter.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/progress_bar.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/progress_bar.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/reactor.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/reactor.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/testing.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/testing.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/workers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/facades/workers.pyi +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/exceptions/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/exceptions/contracts/parser.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/exceptions/parser.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/formatter/serializer.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/patterns/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/patterns/singleton/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/patterns/singleton/meta.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/performance/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/performance/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/performance/contracts/counter.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/performance/counter.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/contracts/std.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/standard/std.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/wrapper/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/support/wrapper/dot_dict.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/cases/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/cases/asynchronous.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/cases/synchronous.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/dumper.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/kernel.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/logs.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/printer.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/render.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/test_result.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/contracts/unit_test.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/core/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/core/unit_test.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/entities/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/entities/result.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/enums/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/enums/status.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/config.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/failure.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/persistence.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/runtime.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/exceptions/value.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/kernel.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/output/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/output/dumper.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/output/printer.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/records/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/records/logs.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/base_path.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/execution_mode.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/fail_fast.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/folder_path.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/module_name.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/name_pattern.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/pattern.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/persistent.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/persistent_driver.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/print_result.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/tags.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/throw_exception.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/verbosity.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/web_report.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/validators/workers.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/view/__init__.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis/test/view/render.py +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis.egg-info/dependency_links.txt +0 -0
- /orionis-0.546.0/orionis.egg-info/zip-safe → /orionis-0.548.0/orionis.egg-info/not-zip-safe +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/orionis.egg-info/requires.txt +0 -0
- {orionis-0.546.0 → orionis-0.548.0}/setup.cfg +0 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
include README.md
|
2
|
+
include LICENSE
|
3
|
+
|
4
|
+
recursive-include orionis *.py *.html
|
5
|
+
|
6
|
+
exclude app/*
|
7
|
+
exclude bootstrap/*
|
8
|
+
exclude config/*
|
9
|
+
exclude database/*
|
10
|
+
exclude routes/*
|
11
|
+
exclude storage/*
|
12
|
+
exclude tests/*
|
13
|
+
|
14
|
+
recursive-exclude app *
|
15
|
+
recursive-exclude bootstrap *
|
16
|
+
recursive-exclude config *
|
17
|
+
recursive-exclude database *
|
18
|
+
recursive-exclude routes *
|
19
|
+
recursive-exclude storage *
|
20
|
+
recursive-exclude tests *
|
@@ -44,23 +44,6 @@ class BaseScheduleEventListener(IScheduleEventListener):
|
|
44
44
|
"""
|
45
45
|
pass # Placeholder for post-job execution logic
|
46
46
|
|
47
|
-
async def onSuccess(self, event: EventJob, schedule):
|
48
|
-
"""
|
49
|
-
Called when a job is successfully executed.
|
50
|
-
|
51
|
-
Parameters
|
52
|
-
----------
|
53
|
-
event : EventJob
|
54
|
-
The successful job execution event containing details about the job.
|
55
|
-
schedule : ISchedule
|
56
|
-
The associated schedule instance managing the job.
|
57
|
-
|
58
|
-
Returns
|
59
|
-
-------
|
60
|
-
None
|
61
|
-
"""
|
62
|
-
pass # Placeholder for logic to handle successful job execution
|
63
|
-
|
64
47
|
async def onFailure(self, event: EventJob, schedule):
|
65
48
|
"""
|
66
49
|
Called when a job execution fails.
|
@@ -43,24 +43,6 @@ class IScheduleEventListener(ABC):
|
|
43
43
|
"""
|
44
44
|
pass
|
45
45
|
|
46
|
-
@abstractmethod
|
47
|
-
async def onSuccess(self, event: EventJob, schedule):
|
48
|
-
"""
|
49
|
-
Called when a job is successfully executed.
|
50
|
-
|
51
|
-
Parameters
|
52
|
-
----------
|
53
|
-
event : EventJob
|
54
|
-
The successful job execution event containing details about the job.
|
55
|
-
schedule : ISchedule
|
56
|
-
The associated schedule instance managing the job.
|
57
|
-
|
58
|
-
Returns
|
59
|
-
-------
|
60
|
-
None
|
61
|
-
"""
|
62
|
-
pass
|
63
|
-
|
64
46
|
@abstractmethod
|
65
47
|
async def onFailure(self, event: EventJob, schedule):
|
66
48
|
"""
|
@@ -237,8 +237,9 @@ class App(BaseEntity):
|
|
237
237
|
# Validate `key` attribute
|
238
238
|
if self.key is None:
|
239
239
|
self.key = SecureKeyGenerator.generate()
|
240
|
-
|
241
|
-
|
240
|
+
Env.set('APP_KEY', self.key)
|
241
|
+
if not isinstance(self.key, (bytes, str)) or not self.key.strip():
|
242
|
+
raise OrionisIntegrityException("The 'key' attribute must be a non-empty string.")
|
242
243
|
|
243
244
|
# Validate `maintenance` attribute
|
244
245
|
if not isinstance(self.maintenance, str) or not self.name.strip() or not self.maintenance.startswith('/'):
|
@@ -0,0 +1,20 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
class Cipher(Enum):
|
4
|
+
"""
|
5
|
+
Enumeration of supported AES cipher modes.
|
6
|
+
|
7
|
+
This enum defines various Advanced Encryption Standard (AES) cipher modes and key sizes
|
8
|
+
commonly used for encryption and decryption operations.
|
9
|
+
|
10
|
+
Members:
|
11
|
+
- AES_128_CBC: AES with a 128-bit key in Cipher Block Chaining (CBC) mode.
|
12
|
+
- AES_256_CBC: AES with a 256-bit key in Cipher Block Chaining (CBC) mode.
|
13
|
+
- AES_128_GCM: AES with a 128-bit key in Galois/Counter Mode (GCM).
|
14
|
+
- AES_256_GCM: AES with a 256-bit key in Galois/Counter Mode (GCM).
|
15
|
+
"""
|
16
|
+
|
17
|
+
AES_128_CBC = "AES-128-CBC"
|
18
|
+
AES_256_CBC = "AES-256-CBC"
|
19
|
+
AES_128_GCM = "AES-128-GCM"
|
20
|
+
AES_256_GCM = "AES-256-GCM"
|
@@ -94,8 +94,8 @@ class Session(BaseEntity):
|
|
94
94
|
# Validate secret_key
|
95
95
|
if self.secret_key is None:
|
96
96
|
self.secret_key = SecretKey.random()
|
97
|
-
if not isinstance(self.secret_key, str) or not self.secret_key.strip():
|
98
|
-
raise OrionisIntegrityException("
|
97
|
+
if not isinstance(self.secret_key, (bytes, str)) or not self.secret_key.strip():
|
98
|
+
raise OrionisIntegrityException("secret_key must be a non-empty string")
|
99
99
|
|
100
100
|
# Validate session_cookie
|
101
101
|
if not isinstance(self.session_cookie, str) or not self.session_cookie.strip():
|
@@ -0,0 +1,115 @@
|
|
1
|
+
import base64
|
2
|
+
import json
|
3
|
+
import os
|
4
|
+
from typing import Optional
|
5
|
+
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
6
|
+
from cryptography.hazmat.backends import default_backend
|
7
|
+
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
|
8
|
+
|
9
|
+
|
10
|
+
class Encrypter:
|
11
|
+
|
12
|
+
SUPPORTED_CIPHERS = ["AES-128-CBC", "AES-256-CBC", "AES-128-GCM", "AES-256-GCM"]
|
13
|
+
|
14
|
+
def __init__(self, app_key: str, cipher: str = "AES-256-CBC"):
|
15
|
+
# Decodificar APP_KEY de Laravel
|
16
|
+
if app_key.startswith("base64:"):
|
17
|
+
key_bytes = base64.b64decode(app_key[7:])
|
18
|
+
else:
|
19
|
+
key_bytes = app_key.encode()
|
20
|
+
|
21
|
+
self.key = key_bytes
|
22
|
+
self.cipher = cipher
|
23
|
+
|
24
|
+
# Validar cipher
|
25
|
+
if cipher not in self.SUPPORTED_CIPHERS:
|
26
|
+
raise ValueError(f"Cipher '{cipher}' no soportado. Usa uno de: {self.SUPPORTED_CIPHERS}")
|
27
|
+
|
28
|
+
# Validar longitud de clave según el cipher
|
29
|
+
key_len = len(self.key)
|
30
|
+
if cipher.startswith("AES-128") and key_len != 16:
|
31
|
+
raise ValueError("La clave debe ser de 16 bytes para AES-128")
|
32
|
+
if cipher.startswith("AES-256") and key_len != 32:
|
33
|
+
raise ValueError("La clave debe ser de 32 bytes para AES-256")
|
34
|
+
|
35
|
+
def encrypt(self, plaintext: str) -> str:
|
36
|
+
data = plaintext.encode()
|
37
|
+
|
38
|
+
if "GCM" in self.cipher:
|
39
|
+
return self._encrypt_gcm(data)
|
40
|
+
else:
|
41
|
+
return self._encrypt_cbc(data)
|
42
|
+
|
43
|
+
def decrypt(self, payload: str) -> str:
|
44
|
+
# Decodificar base64 -> JSON
|
45
|
+
decoded = base64.b64decode(payload).decode()
|
46
|
+
data = json.loads(decoded)
|
47
|
+
|
48
|
+
cipher = data.get("cipher")
|
49
|
+
iv = base64.b64decode(data["iv"])
|
50
|
+
value = base64.b64decode(data["value"])
|
51
|
+
tag = base64.b64decode(data["tag"]) if data.get("tag") else None
|
52
|
+
|
53
|
+
if cipher != self.cipher:
|
54
|
+
raise ValueError(f"El cipher del payload '{cipher}' no coincide con el configurado '{self.cipher}'")
|
55
|
+
|
56
|
+
if "GCM" in cipher:
|
57
|
+
return self._decrypt_gcm(value, iv, tag).decode()
|
58
|
+
else:
|
59
|
+
return self._decrypt_cbc(value, iv).decode()
|
60
|
+
|
61
|
+
# -------------------
|
62
|
+
# Métodos privados CBC
|
63
|
+
# -------------------
|
64
|
+
def _encrypt_cbc(self, data: bytes) -> str:
|
65
|
+
iv = os.urandom(16)
|
66
|
+
cipher = Cipher(algorithms.AES(self.key), modes.CBC(iv), backend=default_backend())
|
67
|
+
encryptor = cipher.encryptor()
|
68
|
+
|
69
|
+
# PKCS7 padding
|
70
|
+
pad_len = 16 - (len(data) % 16)
|
71
|
+
data += bytes([pad_len]) * pad_len
|
72
|
+
|
73
|
+
ct = encryptor.update(data) + encryptor.finalize()
|
74
|
+
|
75
|
+
payload = {
|
76
|
+
"iv": base64.b64encode(iv).decode(),
|
77
|
+
"value": base64.b64encode(ct).decode(),
|
78
|
+
"tag": None,
|
79
|
+
"cipher": self.cipher,
|
80
|
+
}
|
81
|
+
|
82
|
+
return base64.b64encode(json.dumps(payload).encode()).decode()
|
83
|
+
|
84
|
+
def _decrypt_cbc(self, ct: bytes, iv: bytes) -> bytes:
|
85
|
+
cipher = Cipher(algorithms.AES(self.key), modes.CBC(iv), backend=default_backend())
|
86
|
+
decryptor = cipher.decryptor()
|
87
|
+
data = decryptor.update(ct) + decryptor.finalize()
|
88
|
+
|
89
|
+
# Unpad PKCS7
|
90
|
+
pad_len = data[-1]
|
91
|
+
return data[:-pad_len]
|
92
|
+
|
93
|
+
# -------------------
|
94
|
+
# Métodos privados GCM
|
95
|
+
# -------------------
|
96
|
+
def _encrypt_gcm(self, data: bytes) -> str:
|
97
|
+
iv = os.urandom(12)
|
98
|
+
aesgcm = AESGCM(self.key)
|
99
|
+
ct = aesgcm.encrypt(iv, data, None)
|
100
|
+
|
101
|
+
# separar ciphertext y tag (últimos 16 bytes)
|
102
|
+
value, tag = ct[:-16], ct[-16:]
|
103
|
+
|
104
|
+
payload = {
|
105
|
+
"iv": base64.b64encode(iv).decode(),
|
106
|
+
"value": base64.b64encode(value).decode(),
|
107
|
+
"tag": base64.b64encode(tag).decode(),
|
108
|
+
"cipher": self.cipher,
|
109
|
+
}
|
110
|
+
|
111
|
+
return base64.b64encode(json.dumps(payload).encode()).decode()
|
112
|
+
|
113
|
+
def _decrypt_gcm(self, value: bytes, iv: bytes, tag: Optional[bytes]) -> bytes:
|
114
|
+
aesgcm = AESGCM(self.key)
|
115
|
+
return aesgcm.decrypt(iv, value + tag, None)
|
@@ -255,64 +255,72 @@ class EnvironmentCaster(IEnvironmentCaster):
|
|
255
255
|
"""
|
256
256
|
Convert the internal value to a Base64 encoded string with the type hint prefix.
|
257
257
|
|
258
|
+
- If the value is already valid base64, leave it as-is.
|
259
|
+
- Otherwise, encode it to base64.
|
260
|
+
|
258
261
|
Returns
|
259
262
|
-------
|
260
263
|
str
|
261
|
-
A string in the format "<type_hint>:<base64_value>"
|
262
|
-
encoded representation of the internal value.
|
263
|
-
|
264
|
-
Raises
|
265
|
-
------
|
266
|
-
OrionisEnvironmentValueError
|
267
|
-
If the internal value is not a string or bytes.
|
264
|
+
A string in the format "<type_hint>:<base64_value>".
|
268
265
|
"""
|
269
|
-
|
270
|
-
# Import the base64 module for encoding
|
271
266
|
import base64
|
272
267
|
|
273
|
-
# Ensure the internal value is a string or bytes before encoding
|
274
268
|
if not isinstance(self.__value_raw, (str, bytes)):
|
275
269
|
raise OrionisEnvironmentValueError(
|
276
270
|
f"Value must be a string or bytes to convert to Base64, got {type(self.__value_raw).__name__} instead."
|
277
271
|
)
|
278
272
|
|
279
|
-
#
|
280
|
-
|
273
|
+
# Normalizar a str
|
274
|
+
if isinstance(self.__value_raw, bytes):
|
275
|
+
candidate = self.__value_raw.decode("utf-8", errors="ignore")
|
276
|
+
else:
|
277
|
+
candidate = self.__value_raw
|
278
|
+
|
279
|
+
try:
|
280
|
+
# Validar si ya es base64 válido
|
281
|
+
base64.b64decode(candidate, validate=True)
|
282
|
+
encoded_value = candidate
|
283
|
+
except Exception:
|
284
|
+
# No era base64, entonces convertirlo
|
285
|
+
raw_bytes = (
|
286
|
+
self.__value_raw.encode() if isinstance(self.__value_raw, str) else self.__value_raw
|
287
|
+
)
|
288
|
+
encoded_value = base64.b64encode(raw_bytes).decode("utf-8")
|
281
289
|
|
282
|
-
# Return the formatted string with type hint and Base64 encoded value
|
283
290
|
return f"{self.__type_hint}:{encoded_value}"
|
284
291
|
|
285
|
-
def __parseBase64(self) ->
|
292
|
+
def __parseBase64(self) -> bytes:
|
286
293
|
"""
|
287
294
|
Decode the internal raw value from Base64 encoding.
|
288
295
|
|
289
|
-
Decodes the Base64-encoded string stored in the internal raw value and returns the decoded result as a string.
|
290
|
-
If decoding fails, raises an OrionisEnvironmentValueException.
|
291
|
-
|
292
296
|
Returns
|
293
297
|
-------
|
294
|
-
|
295
|
-
The decoded
|
298
|
+
bytes
|
299
|
+
The decoded raw bytes from the Base64-encoded internal value.
|
296
300
|
|
297
301
|
Raises
|
298
302
|
------
|
299
303
|
OrionisEnvironmentValueException
|
300
304
|
If the internal value cannot be decoded from Base64.
|
301
305
|
"""
|
302
|
-
|
303
|
-
# Import the base64 module for decoding
|
304
306
|
import base64
|
305
307
|
|
306
308
|
try:
|
309
|
+
raw_value = self.__value_raw
|
310
|
+
if isinstance(raw_value, bytes):
|
311
|
+
raw_value = raw_value.decode("utf-8", errors="ignore")
|
307
312
|
|
308
|
-
|
309
|
-
decoded_value = base64.b64decode(self.__value_raw).decode()
|
310
|
-
return decoded_value
|
313
|
+
decoded = base64.b64decode(raw_value, validate=True)
|
311
314
|
|
312
|
-
|
315
|
+
try:
|
316
|
+
return decoded.decode("utf-8")
|
317
|
+
except UnicodeDecodeError:
|
318
|
+
return decoded
|
313
319
|
|
314
|
-
|
315
|
-
raise OrionisEnvironmentValueException(
|
320
|
+
except Exception as e:
|
321
|
+
raise OrionisEnvironmentValueException(
|
322
|
+
f"Cannot decode Base64 value '{self.__value_raw}': {str(e)}"
|
323
|
+
)
|
316
324
|
|
317
325
|
def __parsePath(self):
|
318
326
|
"""
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import os
|
2
|
+
import base64
|
3
|
+
|
4
|
+
class SecureKeyGenerator:
|
5
|
+
"""
|
6
|
+
Utility class for generating Laravel-compatible APP_KEY values.
|
7
|
+
|
8
|
+
Laravel expects keys in Base64 format, prefixed with 'base64:'.
|
9
|
+
Supported ciphers: AES-128-CBC, AES-256-CBC, AES-128-GCM, AES-256-GCM.
|
10
|
+
"""
|
11
|
+
|
12
|
+
KEY_SIZES = {
|
13
|
+
"AES-128-CBC": 16,
|
14
|
+
"AES-256-CBC": 32,
|
15
|
+
"AES-128-GCM": 16,
|
16
|
+
"AES-256-GCM": 32,
|
17
|
+
}
|
18
|
+
|
19
|
+
@staticmethod
|
20
|
+
def generate(cipher: str = "AES-256-CBC") -> str:
|
21
|
+
"""
|
22
|
+
Generate a Laravel-compatible APP_KEY.
|
23
|
+
|
24
|
+
Parameters
|
25
|
+
----------
|
26
|
+
cipher : str
|
27
|
+
The cipher algorithm. Options: AES-128-CBC, AES-256-CBC,
|
28
|
+
AES-128-GCM, AES-256-GCM. Default is AES-256-CBC.
|
29
|
+
|
30
|
+
Returns
|
31
|
+
-------
|
32
|
+
str
|
33
|
+
A string formatted like Laravel's APP_KEY (e.g., base64:xxxx).
|
34
|
+
"""
|
35
|
+
if cipher not in SecureKeyGenerator.KEY_SIZES:
|
36
|
+
raise ValueError(
|
37
|
+
f"Cipher '{cipher}' no soportado. "
|
38
|
+
f"Opciones: {', '.join(SecureKeyGenerator.KEY_SIZES.keys())}"
|
39
|
+
)
|
40
|
+
|
41
|
+
key_length = SecureKeyGenerator.KEY_SIZES[cipher]
|
42
|
+
|
43
|
+
# Generate secure random bytes
|
44
|
+
key = os.urandom(key_length)
|
45
|
+
|
46
|
+
# Encode in Base64 and prepend 'base64:'
|
47
|
+
return "base64:" + base64.b64encode(key).decode("utf-8")
|
@@ -7,9 +7,9 @@ orionis/app.py
|
|
7
7
|
orionis.egg-info/PKG-INFO
|
8
8
|
orionis.egg-info/SOURCES.txt
|
9
9
|
orionis.egg-info/dependency_links.txt
|
10
|
+
orionis.egg-info/not-zip-safe
|
10
11
|
orionis.egg-info/requires.txt
|
11
12
|
orionis.egg-info/top_level.txt
|
12
|
-
orionis.egg-info/zip-safe
|
13
13
|
orionis/console/__init__.py
|
14
14
|
orionis/console/kernel.py
|
15
15
|
orionis/console/args/__init__.py
|
@@ -260,6 +260,7 @@ orionis/services/asynchrony/contracts/__init__.py
|
|
260
260
|
orionis/services/asynchrony/contracts/coroutines.py
|
261
261
|
orionis/services/asynchrony/exceptions/__init__.py
|
262
262
|
orionis/services/asynchrony/exceptions/exception.py
|
263
|
+
orionis/services/encrypter/encrypter.py
|
263
264
|
orionis/services/environment/__init__.py
|
264
265
|
orionis/services/environment/env.py
|
265
266
|
orionis/services/environment/contracts/__init__.py
|
@@ -441,149 +442,4 @@ orionis/test/validators/verbosity.py
|
|
441
442
|
orionis/test/validators/web_report.py
|
442
443
|
orionis/test/validators/workers.py
|
443
444
|
orionis/test/view/__init__.py
|
444
|
-
orionis/test/view/render.py
|
445
|
-
tests/container/__init__.py
|
446
|
-
tests/container/context/__init__.py
|
447
|
-
tests/container/context/test_manager.py
|
448
|
-
tests/container/context/test_scope.py
|
449
|
-
tests/container/core/__init__.py
|
450
|
-
tests/container/core/test_advanced_async.py
|
451
|
-
tests/container/core/test_async_optimizations.py
|
452
|
-
tests/container/core/test_container.py
|
453
|
-
tests/container/core/test_singleton.py
|
454
|
-
tests/container/core/test_thread_safety.py
|
455
|
-
tests/container/entities/__init__.py
|
456
|
-
tests/container/entities/test_binding.py
|
457
|
-
tests/container/enums/__init__.py
|
458
|
-
tests/container/enums/test_lifetimes.py
|
459
|
-
tests/container/facades/__init__.py
|
460
|
-
tests/container/facades/test_facade.py
|
461
|
-
tests/container/mocks/__init__.py
|
462
|
-
tests/container/mocks/mock_advanced_async.py
|
463
|
-
tests/container/mocks/mock_async_optimizations.py
|
464
|
-
tests/container/mocks/mock_auto_resolution.py
|
465
|
-
tests/container/mocks/mock_complex_classes.py
|
466
|
-
tests/container/mocks/mock_simple_classes.py
|
467
|
-
tests/container/providers/__init__.py
|
468
|
-
tests/container/providers/test_providers.py
|
469
|
-
tests/container/validators/__init__.py
|
470
|
-
tests/container/validators/test_implements.py
|
471
|
-
tests/container/validators/test_is_abstract_class.py
|
472
|
-
tests/container/validators/test_is_callable.py
|
473
|
-
tests/container/validators/test_is_concrete_class.py
|
474
|
-
tests/container/validators/test_is_instance.py
|
475
|
-
tests/container/validators/test_is_not_subclass.py
|
476
|
-
tests/container/validators/test_is_subclass.py
|
477
|
-
tests/container/validators/test_is_valid_alias.py
|
478
|
-
tests/container/validators/test_lifetime.py
|
479
|
-
tests/example/__init__.py
|
480
|
-
tests/example/test_example.py
|
481
|
-
tests/foundation/__init__.py
|
482
|
-
tests/foundation/config/__init__.py
|
483
|
-
tests/foundation/config/app/__init__.py
|
484
|
-
tests/foundation/config/app/test_foundation_config_app.py
|
485
|
-
tests/foundation/config/auth/__init__.py
|
486
|
-
tests/foundation/config/auth/test_foundation_config_auth.py
|
487
|
-
tests/foundation/config/cache/__init__.py
|
488
|
-
tests/foundation/config/cache/test_foundation_config_cache.py
|
489
|
-
tests/foundation/config/cache/test_foundation_config_cache_file.py
|
490
|
-
tests/foundation/config/cache/test_foundation_config_cache_stores.py
|
491
|
-
tests/foundation/config/cors/__init__.py
|
492
|
-
tests/foundation/config/cors/test_foundation_config_cors.py
|
493
|
-
tests/foundation/config/database/__init__.py
|
494
|
-
tests/foundation/config/database/test_foundation_config_database.py
|
495
|
-
tests/foundation/config/database/test_foundation_config_database_connections.py
|
496
|
-
tests/foundation/config/database/test_foundation_config_database_mysql.py
|
497
|
-
tests/foundation/config/database/test_foundation_config_database_oracle.py
|
498
|
-
tests/foundation/config/database/test_foundation_config_database_pgsql.py
|
499
|
-
tests/foundation/config/database/test_foundation_config_database_sqlite.py
|
500
|
-
tests/foundation/config/filesystems/__init__.py
|
501
|
-
tests/foundation/config/filesystems/test_foundation_config_filesystems.py
|
502
|
-
tests/foundation/config/filesystems/test_foundation_config_filesystems_aws.py
|
503
|
-
tests/foundation/config/filesystems/test_foundation_config_filesystems_disks.py
|
504
|
-
tests/foundation/config/filesystems/test_foundation_config_filesystems_local.py
|
505
|
-
tests/foundation/config/filesystems/test_foundation_config_filesystems_public.py
|
506
|
-
tests/foundation/config/logging/__init__.py
|
507
|
-
tests/foundation/config/logging/test_foundation_config_logging.py
|
508
|
-
tests/foundation/config/logging/test_foundation_config_logging_channels.py
|
509
|
-
tests/foundation/config/logging/test_foundation_config_logging_chunked.py
|
510
|
-
tests/foundation/config/logging/test_foundation_config_logging_daily.py
|
511
|
-
tests/foundation/config/logging/test_foundation_config_logging_hourly.py
|
512
|
-
tests/foundation/config/logging/test_foundation_config_logging_monthly.py
|
513
|
-
tests/foundation/config/logging/test_foundation_config_logging_stack.py
|
514
|
-
tests/foundation/config/logging/test_foundation_config_logging_weekly.py
|
515
|
-
tests/foundation/config/mail/__init__.py
|
516
|
-
tests/foundation/config/mail/test_foundation_config_mail.py
|
517
|
-
tests/foundation/config/mail/test_foundation_config_mail_file.py
|
518
|
-
tests/foundation/config/mail/test_foundation_config_mail_mailers.py
|
519
|
-
tests/foundation/config/mail/test_foundation_config_mail_smtp.py
|
520
|
-
tests/foundation/config/queue/__init__.py
|
521
|
-
tests/foundation/config/queue/test_foundation_config_queue.py
|
522
|
-
tests/foundation/config/queue/test_foundation_config_queue_brokers.py
|
523
|
-
tests/foundation/config/queue/test_foundation_config_queue_database.py
|
524
|
-
tests/foundation/config/root/__init__.py
|
525
|
-
tests/foundation/config/root/test_foundation_config_root_paths.py
|
526
|
-
tests/foundation/config/session/__init__.py
|
527
|
-
tests/foundation/config/session/test_foundation_config_session.py
|
528
|
-
tests/foundation/config/startup/__init__.py
|
529
|
-
tests/foundation/config/startup/test_foundation_config_startup.py
|
530
|
-
tests/foundation/config/testing/__init__.py
|
531
|
-
tests/foundation/config/testing/test_foundation_config_testing.py
|
532
|
-
tests/metadata/__init__.py
|
533
|
-
tests/metadata/test_metadata_framework.py
|
534
|
-
tests/metadata/test_metadata_package.py
|
535
|
-
tests/services/__init__.py
|
536
|
-
tests/services/asynchrony/__init__.py
|
537
|
-
tests/services/asynchrony/test_services_asynchrony_coroutine.py
|
538
|
-
tests/services/environment/__init__.py
|
539
|
-
tests/services/environment/test_services_environment.py
|
540
|
-
tests/services/introspection/__init__.py
|
541
|
-
tests/services/introspection/test_reflection.py
|
542
|
-
tests/services/introspection/dependencies/__init__.py
|
543
|
-
tests/services/introspection/dependencies/test_reflect_dependencies.py
|
544
|
-
tests/services/introspection/dependencies/mocks/__init__.py
|
545
|
-
tests/services/introspection/dependencies/mocks/mock_user.py
|
546
|
-
tests/services/introspection/dependencies/mocks/mock_user_controller.py
|
547
|
-
tests/services/introspection/dependencies/mocks/mock_users_permissions.py
|
548
|
-
tests/services/introspection/reflection/__init__.py
|
549
|
-
tests/services/introspection/reflection/test_reflection_abstract.py
|
550
|
-
tests/services/introspection/reflection/test_reflection_callable.py
|
551
|
-
tests/services/introspection/reflection/test_reflection_concrete.py
|
552
|
-
tests/services/introspection/reflection/test_reflection_instance.py
|
553
|
-
tests/services/introspection/reflection/test_reflection_module.py
|
554
|
-
tests/services/introspection/reflection/mock/__init__.py
|
555
|
-
tests/services/introspection/reflection/mock/fake_reflect_instance.py
|
556
|
-
tests/services/log/__init__.py
|
557
|
-
tests/services/log/test_log.py
|
558
|
-
tests/services/system/__init__.py
|
559
|
-
tests/services/system/test_services_system_imports.py
|
560
|
-
tests/services/system/test_services_system_workers.py
|
561
|
-
tests/support/__init__.py
|
562
|
-
tests/support/entities/__init__.py
|
563
|
-
tests/support/entities/mock_dataclass.py
|
564
|
-
tests/support/entities/test_base.py
|
565
|
-
tests/support/patterns/__init__.py
|
566
|
-
tests/support/patterns/singleton/__init__.py
|
567
|
-
tests/support/patterns/singleton/test_patterns_singleton.py
|
568
|
-
tests/support/standard/__init__.py
|
569
|
-
tests/support/standard/test_services_std.py
|
570
|
-
tests/support/wrapper/__init__.py
|
571
|
-
tests/support/wrapper/test_services_wrapper_docdict.py
|
572
|
-
tests/testing/__init__.py
|
573
|
-
tests/testing/test_testing_unit.py
|
574
|
-
tests/testing/cases/__init__.py
|
575
|
-
tests/testing/cases/test_testing_asynchronous.py
|
576
|
-
tests/testing/cases/test_testing_synchronous.py
|
577
|
-
tests/testing/entities/__init__.py
|
578
|
-
tests/testing/entities/test_testing_result.py
|
579
|
-
tests/testing/enums/__init__.py
|
580
|
-
tests/testing/enums/test_testing_status.py
|
581
|
-
tests/testing/output/__init__.py
|
582
|
-
tests/testing/output/test_testing_dumper.py
|
583
|
-
tests/testing/output/test_testing_printer.py
|
584
|
-
tests/testing/records/__init__.py
|
585
|
-
tests/testing/records/test_testing_records.py
|
586
|
-
tests/testing/validators/__init__.py
|
587
|
-
tests/testing/validators/test_testing_validators.py
|
588
|
-
tests/testing/view/__init__.py
|
589
|
-
tests/testing/view/test_render.py
|
445
|
+
orionis/test/view/render.py
|
@@ -54,13 +54,13 @@ setup(
|
|
54
54
|
license='MIT',
|
55
55
|
packages=find_packages(
|
56
56
|
exclude=[
|
57
|
-
'app',
|
58
|
-
'bootstrap',
|
59
|
-
'config',
|
60
|
-
'database'
|
61
|
-
'routes',
|
62
|
-
'storage',
|
63
|
-
'tests'
|
57
|
+
'app', 'app.*',
|
58
|
+
'bootstrap', 'bootstrap.*',
|
59
|
+
'config', 'config.*',
|
60
|
+
'database', 'database.*',
|
61
|
+
'routes', 'routes.*',
|
62
|
+
'storage', 'storage.*',
|
63
|
+
'tests', 'tests.*'
|
64
64
|
]
|
65
65
|
),
|
66
66
|
include_package_data=True,
|
@@ -68,5 +68,5 @@ setup(
|
|
68
68
|
python_requires=PYTHON_REQUIRES,
|
69
69
|
install_requires=REQUIRES,
|
70
70
|
keywords=KEYWORDS,
|
71
|
-
zip_safe=
|
71
|
+
zip_safe=False
|
72
72
|
)
|
orionis-0.546.0/MANIFEST.in
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
from enum import Enum
|
2
|
-
|
3
|
-
class Cipher(Enum):
|
4
|
-
"""
|
5
|
-
Enumeration of supported AES cipher modes.
|
6
|
-
|
7
|
-
This enum defines various Advanced Encryption Standard (AES) cipher modes and key sizes
|
8
|
-
commonly used for encryption and decryption operations.
|
9
|
-
|
10
|
-
Members:
|
11
|
-
AES_128_CBC: AES with 128-bit key in Cipher Block Chaining (CBC) mode.
|
12
|
-
AES_192_CBC: AES with 192-bit key in CBC mode.
|
13
|
-
AES_256_CBC: AES with 256-bit key in CBC mode.
|
14
|
-
AES_128_GCM: AES with 128-bit key in Galois/Counter Mode (GCM).
|
15
|
-
AES_256_GCM: AES with 256-bit key in GCM.
|
16
|
-
AES_CTR: AES in Counter (CTR) mode.
|
17
|
-
AES_CFB: AES in Cipher Feedback (CFB) mode.
|
18
|
-
AES_CFB8: AES in CFB mode with 8-bit feedback.
|
19
|
-
AES_CFB128: AES in CFB mode with 128-bit feedback.
|
20
|
-
AES_OFB: AES in Output Feedback (OFB) mode.
|
21
|
-
AES_ECB: AES in Electronic Codebook (ECB) mode.
|
22
|
-
"""
|
23
|
-
|
24
|
-
AES_128_CBC = "AES-128-CBC"
|
25
|
-
AES_192_CBC = "AES-192-CBC"
|
26
|
-
AES_256_CBC = "AES-256-CBC"
|
27
|
-
AES_128_GCM = "AES-128-GCM"
|
28
|
-
AES_256_GCM = "AES-256-GCM"
|
29
|
-
AES_CTR = "AES-CTR"
|
30
|
-
AES_CFB = "AES-CFB"
|
31
|
-
AES_CFB8 = "AES-CFB8"
|
32
|
-
AES_CFB128 = "AES-CFB128"
|
33
|
-
AES_OFB = "AES-OFB"
|
34
|
-
AES_ECB = "AES-ECB"
|