velocity-python 0.1.67__tar.gz → 0.1.68__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.67 → velocity_python-0.1.68}/PKG-INFO +1 -1
- {velocity_python-0.1.67 → velocity_python-0.1.68}/pyproject.toml +1 -1
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/stripe_adapter.py +39 -1
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_payment_stripe_adapter.py +73 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/LICENSE +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/README.md +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/setup.cfg +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/masquerade.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/jsonproxy.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_db_credentials_ssm_cascade.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_get_cognito_user_provider.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_http_handler_rollback.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_identifier_injection_guard.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_json_columns.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_lambda_handler_masquerade.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_masquerade_grant.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_observability.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_restricted_direct_tables.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_where_clause_validation.py +0 -0
- {velocity_python-0.1.67 → velocity_python-0.1.68}/tests/test_write_hook_create_flow.py +0 -0
|
@@ -521,6 +521,10 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
521
521
|
"platform_fee": platform_fee_cents,
|
|
522
522
|
"application_fee": application_fee_cents,
|
|
523
523
|
"client_amount": amount_cents - application_fee_cents,
|
|
524
|
+
# Real Stripe processing cost from the settled BalanceTransaction
|
|
525
|
+
# (None for an uncaptured manual auth); callers freeze it as the
|
|
526
|
+
# 'stripe_settled' processor fee, else keep their estimate (M6).
|
|
527
|
+
"actual_processor_fee": self._settled_processor_fee_cents(charge),
|
|
524
528
|
},
|
|
525
529
|
}
|
|
526
530
|
|
|
@@ -621,6 +625,10 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
621
625
|
"platform_fee": platform_fee_cents,
|
|
622
626
|
"application_fee": payment_intent.application_fee_amount or application_fee_cents,
|
|
623
627
|
"client_amount": payment_intent.amount - (payment_intent.application_fee_amount or application_fee_cents),
|
|
628
|
+
# Real Stripe processing cost from the settled BalanceTransaction (None
|
|
629
|
+
# when not yet available); callers freeze it as the 'stripe_settled'
|
|
630
|
+
# processor fee, otherwise keep their formula estimate (FeeModel.md M6).
|
|
631
|
+
"actual_processor_fee": self._settled_processor_fee_cents(charge),
|
|
624
632
|
"error_message": None,
|
|
625
633
|
"metadata": {
|
|
626
634
|
"payment_intent": payment_intent,
|
|
@@ -849,13 +857,43 @@ class StripeAdapter(PaymentProcessorAdapter):
|
|
|
849
857
|
latest_charge_id = getattr(payment_intent, "latest_charge", None)
|
|
850
858
|
if latest_charge_id:
|
|
851
859
|
try:
|
|
852
|
-
charge = stripe.Charge.retrieve(
|
|
860
|
+
charge = stripe.Charge.retrieve(
|
|
861
|
+
latest_charge_id,
|
|
862
|
+
expand=["balance_transaction"],
|
|
863
|
+
api_key=self._api_key,
|
|
864
|
+
)
|
|
853
865
|
except stripe.error.StripeError:
|
|
854
866
|
charge = None
|
|
855
867
|
if charge:
|
|
856
868
|
upsert_stripe_charge_record(tx, charge, source=source)
|
|
857
869
|
return charge
|
|
858
870
|
|
|
871
|
+
def _settled_processor_fee_cents(self, charge):
|
|
872
|
+
"""Return the processor's actual fee (cents) from the charge's BalanceTransaction.
|
|
873
|
+
|
|
874
|
+
Stripe exposes the real processing cost on the charge's BalanceTransaction
|
|
875
|
+
(``balance_transaction.fee``). Returns ``None`` when it is not yet available
|
|
876
|
+
(e.g. an uncaptured manual authorization) or cannot be fetched — callers then
|
|
877
|
+
keep their formula estimate rather than over-reporting. Never raises. This is the
|
|
878
|
+
``stripe_settled`` actual-cost source in CaringCent's FeeModel.md (M6).
|
|
879
|
+
"""
|
|
880
|
+
if not charge:
|
|
881
|
+
return None
|
|
882
|
+
bt = getattr(charge, "balance_transaction", None)
|
|
883
|
+
if bt is None and isinstance(charge, dict):
|
|
884
|
+
bt = charge.get("balance_transaction")
|
|
885
|
+
try:
|
|
886
|
+
if bt is None:
|
|
887
|
+
return None
|
|
888
|
+
if isinstance(bt, str):
|
|
889
|
+
bt = stripe.BalanceTransaction.retrieve(bt, api_key=self._api_key)
|
|
890
|
+
fee = getattr(bt, "fee", None)
|
|
891
|
+
if fee is None and isinstance(bt, dict):
|
|
892
|
+
fee = bt.get("fee")
|
|
893
|
+
return int(fee) if fee is not None else None
|
|
894
|
+
except stripe.error.StripeError:
|
|
895
|
+
return None
|
|
896
|
+
|
|
859
897
|
def _determine_account_status(self, account) -> str:
|
|
860
898
|
"""
|
|
861
899
|
Determine human-readable account status from Stripe Account object.
|
|
@@ -238,6 +238,79 @@ def test_authorize_payment_upserts_payment_intent_mirror(adapter, monkeypatch):
|
|
|
238
238
|
]
|
|
239
239
|
|
|
240
240
|
|
|
241
|
+
def test_settled_processor_fee_from_expanded_balance_transaction(adapter):
|
|
242
|
+
# Stripe exposes the real processing cost on the charge's BalanceTransaction.
|
|
243
|
+
charge = SimpleNamespace(
|
|
244
|
+
id="ch_123",
|
|
245
|
+
balance_transaction=SimpleNamespace(id="txn_1", fee=332),
|
|
246
|
+
)
|
|
247
|
+
assert adapter._settled_processor_fee_cents(charge) == 332
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def test_settled_processor_fee_retrieves_unexpanded_balance_transaction(adapter, monkeypatch):
|
|
251
|
+
monkeypatch.setattr(
|
|
252
|
+
"velocity.payment.stripe_adapter.stripe.BalanceTransaction.retrieve",
|
|
253
|
+
lambda txn_id, api_key=None: SimpleNamespace(id=txn_id, fee=288),
|
|
254
|
+
)
|
|
255
|
+
charge = SimpleNamespace(id="ch_123", balance_transaction="txn_1")
|
|
256
|
+
assert adapter._settled_processor_fee_cents(charge) == 288
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_settled_processor_fee_none_when_unavailable(adapter):
|
|
260
|
+
# No charge, or no balance transaction yet (uncaptured auth) -> None, never raises.
|
|
261
|
+
assert adapter._settled_processor_fee_cents(None) is None
|
|
262
|
+
assert (
|
|
263
|
+
adapter._settled_processor_fee_cents(
|
|
264
|
+
SimpleNamespace(id="ch_1", balance_transaction=None)
|
|
265
|
+
)
|
|
266
|
+
is None
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def test_charge_stored_payment_method_reports_actual_processor_fee(adapter, monkeypatch):
|
|
271
|
+
monkeypatch.setattr(
|
|
272
|
+
"velocity.payment.stripe_adapter.stripe.PaymentIntent.create",
|
|
273
|
+
lambda **kwargs: SimpleNamespace(
|
|
274
|
+
id="pi_123",
|
|
275
|
+
latest_charge="ch_123",
|
|
276
|
+
status="succeeded",
|
|
277
|
+
amount=10420,
|
|
278
|
+
currency="usd",
|
|
279
|
+
application_fee_amount=820,
|
|
280
|
+
),
|
|
281
|
+
)
|
|
282
|
+
monkeypatch.setattr(
|
|
283
|
+
"velocity.payment.stripe_adapter.stripe.Charge.retrieve",
|
|
284
|
+
lambda charge_id, expand=None, api_key=None: SimpleNamespace(
|
|
285
|
+
id=charge_id,
|
|
286
|
+
balance_transaction=SimpleNamespace(id="txn_1", fee=332),
|
|
287
|
+
),
|
|
288
|
+
)
|
|
289
|
+
monkeypatch.setattr(
|
|
290
|
+
"velocity.payment.stripe_adapter.upsert_stripe_payment_intent_record",
|
|
291
|
+
lambda *a, **k: None,
|
|
292
|
+
)
|
|
293
|
+
monkeypatch.setattr(
|
|
294
|
+
"velocity.payment.stripe_adapter.upsert_stripe_charge_record",
|
|
295
|
+
lambda *a, **k: None,
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
result = adapter.charge_stored_payment_method(
|
|
299
|
+
None,
|
|
300
|
+
{
|
|
301
|
+
"amount": 10420,
|
|
302
|
+
"payment_method": "pm_123",
|
|
303
|
+
"customer_profile_id": "cus_123",
|
|
304
|
+
"processor_account_id": "acct_123",
|
|
305
|
+
"revenue_split_percentage": 8,
|
|
306
|
+
"client_id": "client_1",
|
|
307
|
+
},
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
assert result["success"] is True
|
|
311
|
+
assert result["actual_processor_fee"] == 332
|
|
312
|
+
|
|
313
|
+
|
|
241
314
|
def test_authorize_payment_uses_explicit_application_fee(adapter, monkeypatch):
|
|
242
315
|
captured = {}
|
|
243
316
|
|
|
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.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/conftest.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.67 → velocity_python-0.1.68}/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.67 → velocity_python-0.1.68}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|