velocity-python 0.1.35__tar.gz → 0.1.36__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.35/src/velocity_python.egg-info → velocity_python-0.1.36}/PKG-INFO +1 -1
- {velocity_python-0.1.35 → velocity_python-0.1.36}/pyproject.toml +1 -1
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/braintree_mirror.py +34 -9
- {velocity_python-0.1.35 → velocity_python-0.1.36/src/velocity_python.egg-info}/PKG-INFO +1 -1
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/SOURCES.txt +1 -0
- velocity_python-0.1.36/tests/test_payment_braintree_mirror.py +50 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/LICENSE +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/README.md +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/setup.cfg +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_observability.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_where_clause_validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from datetime import datetime, timezone
|
|
3
|
-
from typing import Any, Dict, Optional
|
|
3
|
+
from typing import Any, Dict, Optional, Set
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
SUCCESS_STATUSES = {
|
|
@@ -19,19 +19,44 @@ def _get_value(data: Any, key: str, default: Any = None) -> Any:
|
|
|
19
19
|
return getattr(data, key, default)
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
def
|
|
22
|
+
def _recursive_marker(value: Any) -> str:
|
|
23
|
+
return f"<recursive:{type(value).__name__}>"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _to_jsonable(value: Any, _stack: Optional[Set[int]] = None) -> Any:
|
|
23
27
|
if value is None or isinstance(value, (str, int, float, bool)):
|
|
24
28
|
return value
|
|
29
|
+
if _stack is None:
|
|
30
|
+
_stack = set()
|
|
31
|
+
|
|
32
|
+
value_id = id(value)
|
|
33
|
+
if value_id in _stack:
|
|
34
|
+
return _recursive_marker(value)
|
|
35
|
+
|
|
25
36
|
if isinstance(value, dict):
|
|
26
|
-
|
|
37
|
+
_stack.add(value_id)
|
|
38
|
+
try:
|
|
39
|
+
return {
|
|
40
|
+
str(key): _to_jsonable(item, _stack) for key, item in value.items()
|
|
41
|
+
}
|
|
42
|
+
finally:
|
|
43
|
+
_stack.remove(value_id)
|
|
27
44
|
if isinstance(value, (list, tuple, set)):
|
|
28
|
-
|
|
45
|
+
_stack.add(value_id)
|
|
46
|
+
try:
|
|
47
|
+
return [_to_jsonable(item, _stack) for item in value]
|
|
48
|
+
finally:
|
|
49
|
+
_stack.remove(value_id)
|
|
29
50
|
if hasattr(value, "__dict__"):
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
51
|
+
_stack.add(value_id)
|
|
52
|
+
try:
|
|
53
|
+
return {
|
|
54
|
+
str(key): _to_jsonable(item, _stack)
|
|
55
|
+
for key, item in vars(value).items()
|
|
56
|
+
if not str(key).startswith("_")
|
|
57
|
+
}
|
|
58
|
+
finally:
|
|
59
|
+
_stack.remove(value_id)
|
|
35
60
|
return str(value)
|
|
36
61
|
|
|
37
62
|
|
|
@@ -167,6 +167,7 @@ tests/test_n_plus_one.py
|
|
|
167
167
|
tests/test_observability.py
|
|
168
168
|
tests/test_payment_authorizenet_adapter.py
|
|
169
169
|
tests/test_payment_braintree_adapter.py
|
|
170
|
+
tests/test_payment_braintree_mirror.py
|
|
170
171
|
tests/test_payment_profile_sorting.py
|
|
171
172
|
tests/test_payment_stripe_adapter.py
|
|
172
173
|
tests/test_pdf.py
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
from velocity.payment.braintree_mirror import upsert_braintree_transaction_record
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FakeTable:
|
|
7
|
+
def __init__(self):
|
|
8
|
+
self.upserts = []
|
|
9
|
+
|
|
10
|
+
def exists(self):
|
|
11
|
+
return True
|
|
12
|
+
|
|
13
|
+
def upsert(self, payload, key):
|
|
14
|
+
self.upserts.append((payload, key))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class FakeTx:
|
|
18
|
+
def __init__(self):
|
|
19
|
+
self._table = FakeTable()
|
|
20
|
+
|
|
21
|
+
def table(self, table_name):
|
|
22
|
+
assert table_name == "braintree_transaction"
|
|
23
|
+
return self._table
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RecursiveTransaction:
|
|
27
|
+
def __init__(self):
|
|
28
|
+
self.id = "txn_recursive"
|
|
29
|
+
self.status = "submitted_for_settlement"
|
|
30
|
+
self.amount = "10.50"
|
|
31
|
+
self.custom_fields = {"client_id": "client_1"}
|
|
32
|
+
self.credit_card_details = None
|
|
33
|
+
self.paypal_details = None
|
|
34
|
+
self.customer_details = None
|
|
35
|
+
self.billing_details = None
|
|
36
|
+
self.child = self
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_upsert_braintree_transaction_record_handles_recursive_objects():
|
|
40
|
+
tx = FakeTx()
|
|
41
|
+
transaction = RecursiveTransaction()
|
|
42
|
+
|
|
43
|
+
payload = upsert_braintree_transaction_record(tx, transaction)
|
|
44
|
+
|
|
45
|
+
assert payload is not None
|
|
46
|
+
assert payload["braintree_id"] == "txn_recursive"
|
|
47
|
+
raw_response = json.loads(payload["raw_response"])
|
|
48
|
+
assert raw_response["id"] == "txn_recursive"
|
|
49
|
+
assert raw_response["child"] == "<recursive:RecursiveTransaction>"
|
|
50
|
+
assert tx._table.upserts
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/aws/handlers/mixins/web_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/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
|
{velocity_python-0.1.35 → velocity_python-0.1.36}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|