velocity-python 0.1.26__tar.gz → 0.1.27__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.26/src/velocity_python.egg-info → velocity_python-0.1.27}/PKG-INFO +1 -1
- {velocity_python-0.1.26 → velocity_python-0.1.27}/pyproject.toml +1 -1
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/indexing.py +12 -2
- {velocity_python-0.1.26 → velocity_python-0.1.27/src/velocity_python.egg-info}/PKG-INFO +1 -1
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/SOURCES.txt +1 -0
- velocity_python-0.1.27/tests/test_asset_indexing.py +103 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/LICENSE +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/README.md +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/setup.cfg +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_observability.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_where_clause_validation.py +0 -0
|
@@ -76,7 +76,11 @@ def reconcile_form_builder_template_asset_usages(
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
def load_asset_usages(tx, *, source_table: str, source_sys_id: str) -> list[AssetUsage]:
|
|
79
|
-
|
|
79
|
+
usage_index = tx.table("asset_usage_index")
|
|
80
|
+
if not usage_index.exists():
|
|
81
|
+
return []
|
|
82
|
+
|
|
83
|
+
rows = usage_index.select(
|
|
80
84
|
where={
|
|
81
85
|
"source_table": source_table,
|
|
82
86
|
"source_sys_id": source_sys_id,
|
|
@@ -87,6 +91,9 @@ def load_asset_usages(tx, *, source_table: str, source_sys_id: str) -> list[Asse
|
|
|
87
91
|
|
|
88
92
|
def apply_asset_usage_reconciliation(tx, reconciliation: AssetUsageReconciliation) -> None:
|
|
89
93
|
table = tx.table("asset_usage_index")
|
|
94
|
+
if not table.exists():
|
|
95
|
+
return
|
|
96
|
+
|
|
90
97
|
for usage in reconciliation.to_create + reconciliation.to_refresh:
|
|
91
98
|
row = _asset_usage_to_row(usage)
|
|
92
99
|
table.upsert(
|
|
@@ -115,13 +122,16 @@ def resolve_asset_id_for_reference(tx, reference: AssetReference) -> str | None:
|
|
|
115
122
|
return reference.asset_id
|
|
116
123
|
|
|
117
124
|
images = tx.table("images")
|
|
125
|
+
if not images.exists():
|
|
126
|
+
return None
|
|
127
|
+
|
|
118
128
|
for candidate_key in _candidate_storage_keys(reference.storage_key):
|
|
119
129
|
row = images.find({"key": candidate_key})
|
|
120
130
|
asset_id = _extract_sys_id(row)
|
|
121
131
|
if asset_id:
|
|
122
132
|
return asset_id
|
|
123
133
|
|
|
124
|
-
if reference.url:
|
|
134
|
+
if reference.url and images.column("url").exists():
|
|
125
135
|
row = images.find({"url": reference.url})
|
|
126
136
|
asset_id = _extract_sys_id(row)
|
|
127
137
|
if asset_id:
|
|
@@ -145,6 +145,7 @@ src/velocity_python.egg-info/entry_points.txt
|
|
|
145
145
|
src/velocity_python.egg-info/requires.txt
|
|
146
146
|
src/velocity_python.egg-info/top_level.txt
|
|
147
147
|
tests/test_amplify_build.py
|
|
148
|
+
tests/test_asset_indexing.py
|
|
148
149
|
tests/test_asset_references.py
|
|
149
150
|
tests/test_assets_service.py
|
|
150
151
|
tests/test_async_support.py
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
from velocity.aws.assets.indexing import load_asset_usages, resolve_asset_id_for_reference
|
|
2
|
+
from velocity.aws.assets.references import AssetReference
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class FakeRow:
|
|
6
|
+
def __init__(self, data):
|
|
7
|
+
self._data = dict(data)
|
|
8
|
+
|
|
9
|
+
def to_dict(self):
|
|
10
|
+
return dict(self._data)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class FakeResult:
|
|
14
|
+
def __init__(self, rows):
|
|
15
|
+
self._rows = [dict(row) for row in rows]
|
|
16
|
+
|
|
17
|
+
def as_dict(self):
|
|
18
|
+
return self
|
|
19
|
+
|
|
20
|
+
def all(self):
|
|
21
|
+
return [dict(row) for row in self._rows]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class FakeImagesTable:
|
|
25
|
+
def __init__(self):
|
|
26
|
+
self.calls = []
|
|
27
|
+
self._columns = {"key"}
|
|
28
|
+
|
|
29
|
+
def exists(self):
|
|
30
|
+
return True
|
|
31
|
+
|
|
32
|
+
def column(self, name):
|
|
33
|
+
table = self
|
|
34
|
+
|
|
35
|
+
class FakeColumn:
|
|
36
|
+
def exists(self_nonlocal):
|
|
37
|
+
return name in table._columns
|
|
38
|
+
|
|
39
|
+
return FakeColumn()
|
|
40
|
+
|
|
41
|
+
def find(self, where):
|
|
42
|
+
self.calls.append(dict(where))
|
|
43
|
+
if where == {"key": "folder/banner.png"}:
|
|
44
|
+
return FakeRow({"sys_id": "img-123"})
|
|
45
|
+
if where == {"url": "https://example.com/banner.png"}:
|
|
46
|
+
raise AssertionError("url lookup should be skipped when the column is absent")
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class FakeUsageIndexTable:
|
|
51
|
+
def exists(self):
|
|
52
|
+
return False
|
|
53
|
+
|
|
54
|
+
def select(self, where=None):
|
|
55
|
+
raise AssertionError("select should be skipped when asset_usage_index is missing")
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class FakeTx:
|
|
59
|
+
def __init__(self, *, image_table_exists=True, image_columns=None, usage_index_exists=False):
|
|
60
|
+
self.images = FakeImagesTable()
|
|
61
|
+
self.images._exists = image_table_exists
|
|
62
|
+
self.images._columns = set(image_columns or {"key"})
|
|
63
|
+
self.usage_index = FakeUsageIndexTable()
|
|
64
|
+
self.usage_index._exists = usage_index_exists
|
|
65
|
+
|
|
66
|
+
def table(self, name):
|
|
67
|
+
if name == "images":
|
|
68
|
+
class ImagesTableProxy(FakeImagesTable):
|
|
69
|
+
pass
|
|
70
|
+
|
|
71
|
+
proxy = self.images
|
|
72
|
+
proxy.exists = lambda: proxy._exists
|
|
73
|
+
return proxy
|
|
74
|
+
if name == "asset_usage_index":
|
|
75
|
+
proxy = self.usage_index
|
|
76
|
+
proxy.exists = lambda: proxy._exists
|
|
77
|
+
return proxy
|
|
78
|
+
raise AssertionError(f"Unexpected table request: {name}")
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_load_asset_usages_returns_empty_when_usage_table_missing():
|
|
82
|
+
tx = FakeTx()
|
|
83
|
+
|
|
84
|
+
usages = load_asset_usages(tx, source_table="form_builder_template", source_sys_id="2680")
|
|
85
|
+
|
|
86
|
+
assert usages == []
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_resolve_asset_id_skips_url_lookup_when_images_url_column_missing():
|
|
90
|
+
tx = FakeTx(image_columns={"key"})
|
|
91
|
+
reference = AssetReference(
|
|
92
|
+
asset_id=None,
|
|
93
|
+
url="https://example.com/banner.png",
|
|
94
|
+
storage_key="folder/banner.png",
|
|
95
|
+
source_field="main_image_url",
|
|
96
|
+
source_field_type="image-widget",
|
|
97
|
+
raw_value="https://example.com/banner.png",
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
asset_id = resolve_asset_id_for_reference(tx, reference)
|
|
101
|
+
|
|
102
|
+
assert asset_id == "img-123"
|
|
103
|
+
assert tx.images.calls == [{"key": "folder/banner.png"}]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/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.26 → velocity_python-0.1.27}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/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
|
|
File without changes
|
{velocity_python-0.1.26 → velocity_python-0.1.27}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|