velocity-python 0.1.66__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.66 → velocity_python-0.1.68}/PKG-INFO +1 -1
- {velocity_python-0.1.66 → velocity_python-0.1.68}/pyproject.toml +1 -1
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/context.py +19 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/stripe_adapter.py +39 -1
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/SOURCES.txt +1 -0
- velocity_python-0.1.68/tests/test_get_cognito_user_provider.py +66 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_payment_stripe_adapter.py +73 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/LICENSE +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/README.md +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/setup.cfg +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/masquerade.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/jsonproxy.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_db_credentials_ssm_cascade.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_http_handler_rollback.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_identifier_injection_guard.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_json_columns.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_lambda_handler_masquerade.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_masquerade_grant.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_observability.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_restricted_direct_tables.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_where_clause_validation.py +0 -0
- {velocity_python-0.1.66 → velocity_python-0.1.68}/tests/test_write_hook_create_flow.py +0 -0
|
@@ -24,6 +24,10 @@ engine = velocity.db.postgres.initialize()
|
|
|
24
24
|
cognito_client = boto3.client("cognito-idp")
|
|
25
25
|
logger = get_logger("velocity.aws.handlers.context")
|
|
26
26
|
|
|
27
|
+
# Cognito User Pool id shape, e.g. "us-east-1_aBcD1234". Used to distinguish a
|
|
28
|
+
# real user-pool identity from other Identity Pool providers (developer-auth).
|
|
29
|
+
_COGNITO_USER_POOL_ID_RE = re.compile(r"^[\w-]+_[0-9a-zA-Z]+$")
|
|
30
|
+
|
|
27
31
|
|
|
28
32
|
def _get_work_queue_name() -> str:
|
|
29
33
|
queue_name = str(config_getenv("SqsWorkQueue", "") or "").strip()
|
|
@@ -656,6 +660,21 @@ class Context:
|
|
|
656
660
|
if not user_pool_id or not user_sub:
|
|
657
661
|
raise AlertError("Incomplete Cognito identity provider data") from None
|
|
658
662
|
|
|
663
|
+
# Federated identities that are not Cognito User Pool logins — e.g.
|
|
664
|
+
# developer-authenticated Identity Pool identities used for admin
|
|
665
|
+
# masquerade — carry a provider name (like "login.caringcent.masquerade")
|
|
666
|
+
# that is not a user-pool id. Detect that and fail with a clear message
|
|
667
|
+
# rather than passing an invalid value to admin_get_user (which raises a
|
|
668
|
+
# cryptic "userPoolId failed to satisfy constraint" error).
|
|
669
|
+
if "cognito-idp" not in provider or not _COGNITO_USER_POOL_ID_RE.match(
|
|
670
|
+
user_pool_id
|
|
671
|
+
):
|
|
672
|
+
raise AlertError(
|
|
673
|
+
"Request identity is not a Cognito User Pool user "
|
|
674
|
+
f"(authentication provider '{provider[:120]}'); "
|
|
675
|
+
"cannot resolve a Cognito user"
|
|
676
|
+
) from None
|
|
677
|
+
|
|
659
678
|
try:
|
|
660
679
|
self.perf.start("cognito admin_get_user")
|
|
661
680
|
response = cognito_client.admin_get_user(
|
|
@@ -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.
|
|
@@ -164,6 +164,7 @@ tests/test_db_credentials_ssm_cascade.py
|
|
|
164
164
|
tests/test_decorators.py
|
|
165
165
|
tests/test_dirty_pipeline_fast_path.py
|
|
166
166
|
tests/test_email_processing.py
|
|
167
|
+
tests/test_get_cognito_user_provider.py
|
|
167
168
|
tests/test_http_handler_rollback.py
|
|
168
169
|
tests/test_iconv_money_to_cents.py
|
|
169
170
|
tests/test_identifier_injection_guard.py
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from unittest.mock import patch
|
|
3
|
+
|
|
4
|
+
from velocity.aws.handlers import context as handler_context
|
|
5
|
+
from velocity.aws.handlers.context import Context
|
|
6
|
+
from velocity.aws.handlers.exceptions import AlertError
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _ctx(provider):
|
|
10
|
+
event = {
|
|
11
|
+
"requestContext": {"identity": {"cognitoAuthenticationProvider": provider}}
|
|
12
|
+
}
|
|
13
|
+
ctx = Context(
|
|
14
|
+
aws_event=event,
|
|
15
|
+
aws_context=None,
|
|
16
|
+
args={},
|
|
17
|
+
postdata={},
|
|
18
|
+
response=None,
|
|
19
|
+
session={},
|
|
20
|
+
)
|
|
21
|
+
return ctx, event
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# A real Cognito User Pool federation looks like
|
|
25
|
+
# "cognito-idp.<region>.amazonaws.com/<poolId>,...:CognitoSignIn:<sub>".
|
|
26
|
+
VALID_PROVIDER = (
|
|
27
|
+
"cognito-idp.us-east-1.amazonaws.com/us-east-1_Abc12345,"
|
|
28
|
+
"cognito-idp.us-east-1.amazonaws.com/us-east-1_Abc12345:CognitoSignIn:sub-123"
|
|
29
|
+
)
|
|
30
|
+
# A developer-authenticated Identity Pool identity (admin masquerade) carries
|
|
31
|
+
# only the developer provider name.
|
|
32
|
+
DEV_PROVIDER = "login.caringcent.masquerade"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class TestGetCognitoUserProvider(unittest.TestCase):
|
|
36
|
+
def test_developer_provider_is_rejected_cleanly(self):
|
|
37
|
+
ctx, event = _ctx(DEV_PROVIDER)
|
|
38
|
+
with patch.object(handler_context, "cognito_client") as mock_cognito:
|
|
39
|
+
with self.assertRaises(AlertError) as cm:
|
|
40
|
+
ctx.get_cognito_user(event)
|
|
41
|
+
mock_cognito.admin_get_user.assert_not_called()
|
|
42
|
+
self.assertIn("not a Cognito User Pool user", str(cm.exception))
|
|
43
|
+
|
|
44
|
+
def test_developer_provider_optional_returns_none(self):
|
|
45
|
+
ctx, event = _ctx(DEV_PROVIDER)
|
|
46
|
+
with patch.object(handler_context, "cognito_client"):
|
|
47
|
+
self.assertIsNone(ctx.get_cognito_user_optional(event))
|
|
48
|
+
|
|
49
|
+
def test_valid_provider_passes_the_gate(self):
|
|
50
|
+
ctx, event = _ctx(VALID_PROVIDER)
|
|
51
|
+
with patch.object(handler_context, "cognito_client") as mock_cognito:
|
|
52
|
+
mock_cognito.admin_get_user.return_value = {
|
|
53
|
+
"Username": "user-1",
|
|
54
|
+
"UserAttributes": [{"Name": "email", "Value": "user@example.com"}],
|
|
55
|
+
"Enabled": True,
|
|
56
|
+
"UserStatus": "CONFIRMED",
|
|
57
|
+
}
|
|
58
|
+
user = ctx.get_cognito_user(event)
|
|
59
|
+
mock_cognito.admin_get_user.assert_called_once()
|
|
60
|
+
_, kwargs = mock_cognito.admin_get_user.call_args
|
|
61
|
+
self.assertEqual(kwargs["UserPoolId"], "us-east-1_Abc12345")
|
|
62
|
+
self.assertEqual(user["email"], "user@example.com")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
unittest.main()
|
|
@@ -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
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → 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.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/conftest.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → 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.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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.66 → 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.66 → velocity_python-0.1.68}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → 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
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.66 → velocity_python-0.1.68}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.66 → 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
|
{velocity_python-0.1.66 → 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.66 → 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
|