velocity-python 0.1.61__tar.gz → 0.1.62__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.61 → velocity_python-0.1.62}/PKG-INFO +1 -1
- {velocity_python-0.1.61 → velocity_python-0.1.62}/pyproject.toml +1 -1
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/stripe_adapter.py +15 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_payment_stripe_adapter.py +85 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/LICENSE +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/README.md +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/setup.cfg +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_db_credentials_ssm_cascade.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_http_handler_rollback.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_identifier_injection_guard.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_observability.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_restricted_direct_tables.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_where_clause_validation.py +0 -0
- {velocity_python-0.1.61 → velocity_python-0.1.62}/tests/test_write_hook_create_flow.py +0 -0
|
@@ -469,6 +469,14 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
469
469
|
if self.platform:
|
|
470
470
|
payment_metadata["platform"] = str(self.platform)
|
|
471
471
|
|
|
472
|
+
# Optional idempotency key: when the caller supplies one, Stripe
|
|
473
|
+
# collapses retries of the *same* request (engine auto-retry, donor
|
|
474
|
+
# double-submit) into a single charge instead of charging again.
|
|
475
|
+
request_options = {}
|
|
476
|
+
idempotency_key = payment_data.get("idempotency_key")
|
|
477
|
+
if idempotency_key:
|
|
478
|
+
request_options["idempotency_key"] = str(idempotency_key)
|
|
479
|
+
|
|
472
480
|
payment_intent = stripe.PaymentIntent.create(
|
|
473
481
|
amount=amount_cents,
|
|
474
482
|
currency=currency,
|
|
@@ -482,6 +490,7 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
482
490
|
},
|
|
483
491
|
metadata=payment_metadata,
|
|
484
492
|
api_key=self._api_key,
|
|
493
|
+
**request_options,
|
|
485
494
|
)
|
|
486
495
|
charge = self._mirror_payment_intent_artifacts(
|
|
487
496
|
tx,
|
|
@@ -575,6 +584,11 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
575
584
|
if self.platform:
|
|
576
585
|
payment_metadata["platform"] = str(self.platform)
|
|
577
586
|
|
|
587
|
+
request_options = {}
|
|
588
|
+
idempotency_key = payment_data.get("idempotency_key")
|
|
589
|
+
if idempotency_key:
|
|
590
|
+
request_options["idempotency_key"] = str(idempotency_key)
|
|
591
|
+
|
|
578
592
|
payment_intent = stripe.PaymentIntent.create(
|
|
579
593
|
amount=amount_cents,
|
|
580
594
|
currency=currency,
|
|
@@ -587,6 +601,7 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
587
601
|
description=payment_data.get("description"),
|
|
588
602
|
metadata=payment_metadata,
|
|
589
603
|
api_key=self._api_key,
|
|
604
|
+
**request_options,
|
|
590
605
|
)
|
|
591
606
|
charge = self._mirror_payment_intent_artifacts(
|
|
592
607
|
tx,
|
|
@@ -290,6 +290,91 @@ def test_authorize_payment_uses_explicit_application_fee(adapter, monkeypatch):
|
|
|
290
290
|
assert result["metadata"]["client_amount"] == 9200 # $92.00 to client
|
|
291
291
|
|
|
292
292
|
|
|
293
|
+
def test_authorize_payment_passes_idempotency_key(adapter, monkeypatch):
|
|
294
|
+
captured = {}
|
|
295
|
+
|
|
296
|
+
def fake_create(**kwargs):
|
|
297
|
+
captured.update(kwargs)
|
|
298
|
+
return SimpleNamespace(
|
|
299
|
+
id="pi_idem",
|
|
300
|
+
latest_charge=None,
|
|
301
|
+
status="succeeded",
|
|
302
|
+
amount=5000,
|
|
303
|
+
currency="usd",
|
|
304
|
+
metadata={},
|
|
305
|
+
charges=SimpleNamespace(data=[]),
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
monkeypatch.setattr(
|
|
309
|
+
"velocity.payment.stripe_adapter.stripe.PaymentIntent.create", fake_create
|
|
310
|
+
)
|
|
311
|
+
monkeypatch.setattr(
|
|
312
|
+
"velocity.payment.stripe_adapter.upsert_stripe_payment_intent_record",
|
|
313
|
+
lambda tx, payment_intent, source=None: None,
|
|
314
|
+
)
|
|
315
|
+
monkeypatch.setattr(
|
|
316
|
+
"velocity.payment.stripe_adapter.upsert_stripe_charge_record",
|
|
317
|
+
lambda tx, charge, source=None: None,
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
adapter.authorize_payment(
|
|
321
|
+
None,
|
|
322
|
+
{
|
|
323
|
+
"amount": 5000,
|
|
324
|
+
"payment_method": "pm_1",
|
|
325
|
+
"processor_account_id": "acct_1",
|
|
326
|
+
"revenue_split_percentage": 8,
|
|
327
|
+
"capture_method": "automatic",
|
|
328
|
+
"client_id": "client_1",
|
|
329
|
+
"idempotency_key": "donatemain-req-abc-123",
|
|
330
|
+
},
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
assert captured["idempotency_key"] == "donatemain-req-abc-123"
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
def test_authorize_payment_omits_idempotency_key_when_absent(adapter, monkeypatch):
|
|
337
|
+
captured = {}
|
|
338
|
+
|
|
339
|
+
def fake_create(**kwargs):
|
|
340
|
+
captured.update(kwargs)
|
|
341
|
+
return SimpleNamespace(
|
|
342
|
+
id="pi_noidem",
|
|
343
|
+
latest_charge=None,
|
|
344
|
+
status="succeeded",
|
|
345
|
+
amount=5000,
|
|
346
|
+
currency="usd",
|
|
347
|
+
metadata={},
|
|
348
|
+
charges=SimpleNamespace(data=[]),
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
monkeypatch.setattr(
|
|
352
|
+
"velocity.payment.stripe_adapter.stripe.PaymentIntent.create", fake_create
|
|
353
|
+
)
|
|
354
|
+
monkeypatch.setattr(
|
|
355
|
+
"velocity.payment.stripe_adapter.upsert_stripe_payment_intent_record",
|
|
356
|
+
lambda tx, payment_intent, source=None: None,
|
|
357
|
+
)
|
|
358
|
+
monkeypatch.setattr(
|
|
359
|
+
"velocity.payment.stripe_adapter.upsert_stripe_charge_record",
|
|
360
|
+
lambda tx, charge, source=None: None,
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
adapter.authorize_payment(
|
|
364
|
+
None,
|
|
365
|
+
{
|
|
366
|
+
"amount": 5000,
|
|
367
|
+
"payment_method": "pm_1",
|
|
368
|
+
"processor_account_id": "acct_1",
|
|
369
|
+
"revenue_split_percentage": 8,
|
|
370
|
+
"capture_method": "automatic",
|
|
371
|
+
"client_id": "client_1",
|
|
372
|
+
},
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
assert "idempotency_key" not in captured
|
|
376
|
+
|
|
377
|
+
|
|
293
378
|
def test_attach_payment_method_upserts_stripe_payment_method_mirror(adapter, monkeypatch):
|
|
294
379
|
mirrored = []
|
|
295
380
|
retrieved = SimpleNamespace(
|
|
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.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/src/velocity/db/servers/base/initializer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/conftest.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.61 → velocity_python-0.1.62}/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.61 → velocity_python-0.1.62}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|