velocity-python 0.1.56__tar.gz → 0.1.57__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.
- {velocity_python-0.1.56 → velocity_python-0.1.57}/PKG-INFO +1 -1
- {velocity_python-0.1.56 → velocity_python-0.1.57}/pyproject.toml +1 -1
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/__init__.py +7 -6
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/__init__.py +7 -8
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/SOURCES.txt +1 -0
- velocity_python-0.1.57/tests/test_db_credentials_ssm_cascade.py +61 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/LICENSE +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/README.md +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/setup.cfg +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_observability.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_where_clause_validation.py +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from velocity.aws.ssm_config import getenv as _getenv
|
|
2
3
|
from ..base.initializer import BaseInitializer
|
|
3
4
|
from velocity.db.core import engine
|
|
4
5
|
from .sql import SQL
|
|
@@ -27,13 +28,13 @@ class MySQLInitializer(BaseInitializer):
|
|
|
27
28
|
"MySQL connector not available. Install with: pip install mysql-connector-python"
|
|
28
29
|
)
|
|
29
30
|
|
|
30
|
-
# Base configuration from environment (
|
|
31
|
+
# Base configuration from environment / SSM (same cascade as postgres)
|
|
31
32
|
base_config = {
|
|
32
|
-
"database":
|
|
33
|
-
"host":
|
|
34
|
-
"port":
|
|
35
|
-
"user":
|
|
36
|
-
"password":
|
|
33
|
+
"database": _getenv("DBDatabase"),
|
|
34
|
+
"host": _getenv("DBHost"),
|
|
35
|
+
"port": _getenv("DBPort"),
|
|
36
|
+
"user": _getenv("DBUser"),
|
|
37
|
+
"password": _getenv("DBPassword"),
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
# Remove None values
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from velocity.aws.ssm_config import getenv as _getenv
|
|
2
3
|
from ..base.initializer import BaseInitializer
|
|
3
4
|
from velocity.db.core import engine
|
|
4
5
|
from .sql import SQL
|
|
@@ -27,15 +28,13 @@ class SQLServerInitializer(BaseInitializer):
|
|
|
27
28
|
"SQL Server connector not available. Install with: pip install python-tds"
|
|
28
29
|
)
|
|
29
30
|
|
|
30
|
-
# Base configuration from environment (
|
|
31
|
+
# Base configuration from environment / SSM (same cascade as postgres)
|
|
31
32
|
base_config = {
|
|
32
|
-
"database":
|
|
33
|
-
"server":
|
|
34
|
-
|
|
35
|
-
),
|
|
36
|
-
"
|
|
37
|
-
"user": os.environ.get("DBUser"),
|
|
38
|
-
"password": os.environ.get("DBPassword"),
|
|
33
|
+
"database": _getenv("DBDatabase"),
|
|
34
|
+
"server": _getenv("DBHost"), # SQL Server uses 'server' instead of 'host'
|
|
35
|
+
"port": _getenv("DBPort"),
|
|
36
|
+
"user": _getenv("DBUser"),
|
|
37
|
+
"password": _getenv("DBPassword"),
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
# Remove None values
|
|
@@ -158,6 +158,7 @@ tests/test_concurrency_safety.py
|
|
|
158
158
|
tests/test_connection_pool.py
|
|
159
159
|
tests/test_connection_resilience.py
|
|
160
160
|
tests/test_context_job_descriptions.py
|
|
161
|
+
tests/test_db_credentials_ssm_cascade.py
|
|
161
162
|
tests/test_decorators.py
|
|
162
163
|
tests/test_dirty_pipeline_fast_path.py
|
|
163
164
|
tests/test_email_processing.py
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""DB credential resolution must go through the SSM->env cascade (ssm_config.getenv),
|
|
3
|
+
the same way the postgres initializer does, so MySQL/SQL Server work in SSM-only
|
|
4
|
+
environments rather than only reading raw os.environ.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import unittest
|
|
8
|
+
from unittest.mock import MagicMock, patch
|
|
9
|
+
|
|
10
|
+
from velocity.db.servers import mysql as mysql_server
|
|
11
|
+
from velocity.db.servers import sqlserver as sqlserver_server
|
|
12
|
+
|
|
13
|
+
FAKE = {
|
|
14
|
+
"DBDatabase": "ssm_db",
|
|
15
|
+
"DBHost": "ssm_host",
|
|
16
|
+
"DBPort": "5599",
|
|
17
|
+
"DBUser": "ssm_user",
|
|
18
|
+
"DBPassword": "ssm_pass",
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TestDbCredentialsSsmCascade(unittest.TestCase):
|
|
23
|
+
def test_mysql_resolves_credentials_via_getenv(self):
|
|
24
|
+
captured = {}
|
|
25
|
+
|
|
26
|
+
def fake_engine(driver, cfg, sql, **kwargs):
|
|
27
|
+
captured.update(cfg)
|
|
28
|
+
return MagicMock()
|
|
29
|
+
|
|
30
|
+
with patch.object(mysql_server, "_getenv", lambda key: FAKE.get(key)), patch.object(
|
|
31
|
+
mysql_server.engine, "Engine", fake_engine
|
|
32
|
+
):
|
|
33
|
+
mysql_server.MySQLInitializer.initialize(None)
|
|
34
|
+
|
|
35
|
+
self.assertEqual(captured["database"], "ssm_db")
|
|
36
|
+
self.assertEqual(captured["host"], "ssm_host")
|
|
37
|
+
self.assertEqual(captured["port"], "5599")
|
|
38
|
+
self.assertEqual(captured["user"], "ssm_user")
|
|
39
|
+
self.assertEqual(captured["password"], "ssm_pass")
|
|
40
|
+
|
|
41
|
+
def test_sqlserver_resolves_credentials_via_getenv(self):
|
|
42
|
+
captured = {}
|
|
43
|
+
|
|
44
|
+
def fake_engine(driver, cfg, sql, **kwargs):
|
|
45
|
+
captured.update(cfg)
|
|
46
|
+
return MagicMock()
|
|
47
|
+
|
|
48
|
+
with patch.object(
|
|
49
|
+
sqlserver_server, "_getenv", lambda key: FAKE.get(key)
|
|
50
|
+
), patch.object(sqlserver_server.engine, "Engine", fake_engine):
|
|
51
|
+
sqlserver_server.SQLServerInitializer.initialize(None)
|
|
52
|
+
|
|
53
|
+
self.assertEqual(captured["database"], "ssm_db")
|
|
54
|
+
self.assertEqual(captured["server"], "ssm_host") # SQL Server uses 'server'
|
|
55
|
+
self.assertEqual(captured["port"], "5599")
|
|
56
|
+
self.assertEqual(captured["user"], "ssm_user")
|
|
57
|
+
self.assertEqual(captured["password"], "ssm_pass")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
if __name__ == "__main__":
|
|
61
|
+
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/aws/handlers/mixins/web_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/base/initializer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/conftest.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_row.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/postgres/test_transaction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/db/tests/test_result_sql_aware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/misc/tests/test_original_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity/payment/authorizenet_mirror.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/src/velocity_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_payment_authorizenet_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.56 → velocity_python-0.1.57}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|