velocity-python 0.1.78__tar.gz → 0.1.79__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.78 → velocity_python-0.1.79}/PKG-INFO +1 -1
- {velocity_python-0.1.78 → velocity_python-0.1.79}/pyproject.toml +1 -1
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/braintree_mirror.py +4 -1
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/stripe_mirror.py +8 -2
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/SOURCES.txt +1 -0
- velocity_python-0.1.79/tests/test_payment_mirror_empty_table.py +58 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/LICENSE +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/README.md +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/setup.cfg +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/masquerade.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/jsonproxy.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/maintenance.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_column_tx_arg.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_db_credentials_ssm_cascade.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_db_maintenance.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_enqueue_send_failures.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_get_cognito_user_provider.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_http_handler_rollback.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_identifier_injection_guard.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_json_columns.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_lambda_handler_masquerade.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_masquerade_grant.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_observability.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_restricted_direct_tables.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_sqlite_backend.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_store_user_data.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_transaction_class_wrapping.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_transaction_commit_and_ownership.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_transaction_edge_cases.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_where_clause_validation.py +0 -0
- {velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_write_hook_create_flow.py +0 -0
|
@@ -114,7 +114,10 @@ def _filtered_payload_for_table(table, payload: Dict[str, Any]) -> Dict[str, Any
|
|
|
114
114
|
|
|
115
115
|
def _upsert(tx, table_name: str, payload: Dict[str, Any], key: Dict[str, Any]):
|
|
116
116
|
table = _table(tx, table_name)
|
|
117
|
-
|
|
117
|
+
# `is None`, NOT falsy: a velocity Table's truthiness is its row count
|
|
118
|
+
# (__len__), so `if not table` is True for an EMPTY table -- which would
|
|
119
|
+
# silently skip the first write to an empty mirror table (chicken-and-egg).
|
|
120
|
+
if table is None:
|
|
118
121
|
return None
|
|
119
122
|
payload = _filtered_payload_for_table(table, payload)
|
|
120
123
|
table.upsert(payload, key)
|
|
@@ -50,7 +50,10 @@ def _table(tx, table_name: str):
|
|
|
50
50
|
|
|
51
51
|
def _upsert(tx, table_name: str, payload: Dict[str, Any], key: Dict[str, Any]):
|
|
52
52
|
table = _table(tx, table_name)
|
|
53
|
-
|
|
53
|
+
# `is None`, NOT falsy: a velocity Table's truthiness is its row count
|
|
54
|
+
# (__len__), so `if not table` is True for an EMPTY table -- which would
|
|
55
|
+
# silently skip the first write to any empty mirror table (chicken-and-egg).
|
|
56
|
+
if table is None:
|
|
54
57
|
return None
|
|
55
58
|
table.upsert(payload, key)
|
|
56
59
|
return payload
|
|
@@ -99,7 +102,10 @@ def sync_customer_from_stripe_account(tx, account: Any, client_id: Any):
|
|
|
99
102
|
if not client_id:
|
|
100
103
|
return None
|
|
101
104
|
table = _table(tx, "customers")
|
|
102
|
-
|
|
105
|
+
# `is None`, NOT falsy: a velocity Table's truthiness is its row count
|
|
106
|
+
# (__len__), so `if not table` is True for an EMPTY table -- which would
|
|
107
|
+
# silently skip the first write to any empty mirror table (chicken-and-egg).
|
|
108
|
+
if table is None:
|
|
103
109
|
return None
|
|
104
110
|
row = table.find({"client_id": client_id})
|
|
105
111
|
if not row:
|
|
@@ -184,6 +184,7 @@ tests/test_observability.py
|
|
|
184
184
|
tests/test_payment_authorizenet_adapter.py
|
|
185
185
|
tests/test_payment_braintree_adapter.py
|
|
186
186
|
tests/test_payment_braintree_mirror.py
|
|
187
|
+
tests/test_payment_mirror_empty_table.py
|
|
187
188
|
tests/test_payment_profile_sorting.py
|
|
188
189
|
tests/test_payment_stripe_adapter.py
|
|
189
190
|
tests/test_pdf.py
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Regression: mirror `_upsert` must write to an EMPTY table.
|
|
2
|
+
|
|
3
|
+
A velocity ``Table``'s truthiness is its row count (``__len__``), so an empty
|
|
4
|
+
table is falsy. The mirror guards must therefore test ``table is None``, not
|
|
5
|
+
``if not table`` -- otherwise the FIRST write to any empty mirror table silently
|
|
6
|
+
no-ops (chicken-and-egg: the table stays empty forever, so it never becomes
|
|
7
|
+
truthy and never gets written). This bit the Stripe client-account sync: an
|
|
8
|
+
empty ``stripe_accounts`` / ``client_payment_accounts`` could never be seeded.
|
|
9
|
+
|
|
10
|
+
The prior FakeTable in the mirror tests did not implement ``__len__``, so it was
|
|
11
|
+
always truthy and never exercised this path.
|
|
12
|
+
"""
|
|
13
|
+
from velocity.payment import braintree_mirror, stripe_mirror
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class EmptyTable:
|
|
17
|
+
"""Models a real velocity Table whose truthiness is its row count: 0 -> falsy."""
|
|
18
|
+
|
|
19
|
+
def __init__(self):
|
|
20
|
+
self.upserts = []
|
|
21
|
+
|
|
22
|
+
def __len__(self):
|
|
23
|
+
return 0 # empty table -> bool(table) is False
|
|
24
|
+
|
|
25
|
+
def exists(self):
|
|
26
|
+
return True
|
|
27
|
+
|
|
28
|
+
def sys_columns(self):
|
|
29
|
+
return ["stripe_id", "client_id", "id", "amount", "status"]
|
|
30
|
+
|
|
31
|
+
def upsert(self, payload, key):
|
|
32
|
+
self.upserts.append((payload, key))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class FakeTx:
|
|
36
|
+
def __init__(self, table):
|
|
37
|
+
self._table = table
|
|
38
|
+
|
|
39
|
+
def table(self, _name):
|
|
40
|
+
return self._table
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_stripe_mirror_upsert_writes_to_empty_table():
|
|
44
|
+
t = EmptyTable()
|
|
45
|
+
result = stripe_mirror._upsert(
|
|
46
|
+
FakeTx(t), "stripe_accounts", {"stripe_id": "acct_x"}, {"stripe_id": "acct_x"}
|
|
47
|
+
)
|
|
48
|
+
assert result is not None, "write to an empty table silently no-op'd"
|
|
49
|
+
assert len(t.upserts) == 1
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_braintree_mirror_upsert_writes_to_empty_table():
|
|
53
|
+
t = EmptyTable()
|
|
54
|
+
result = braintree_mirror._upsert(
|
|
55
|
+
FakeTx(t), "braintree_transaction", {"id": "txn_x", "amount": "1.00"}, {"id": "txn_x"}
|
|
56
|
+
)
|
|
57
|
+
assert result is not None, "write to an empty table silently no-op'd"
|
|
58
|
+
assert len(t.upserts) == 1
|
|
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.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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.78 → velocity_python-0.1.79}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/conftest.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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.78 → velocity_python-0.1.79}/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.78 → velocity_python-0.1.79}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity/payment/authorizenet_mirror.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/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
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.78 → velocity_python-0.1.79}/tests/test_transaction_commit_and_ownership.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|