velocity-python 0.1.33__tar.gz → 0.1.35__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.33/src/velocity_python.egg-info → velocity_python-0.1.35}/PKG-INFO +1 -1
- {velocity_python-0.1.33 → velocity_python-0.1.35}/pyproject.toml +1 -1
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/data_service.py +62 -37
- {velocity_python-0.1.33 → velocity_python-0.1.35/src/velocity_python.egg-info}/PKG-INFO +1 -1
- {velocity_python-0.1.33 → velocity_python-0.1.35}/LICENSE +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/README.md +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/setup.cfg +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_observability.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.33 → velocity_python-0.1.35}/tests/test_where_clause_validation.py +0 -0
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
@@ -336,7 +336,7 @@ class DataServiceMixin:
|
|
|
336
336
|
"message": message,
|
|
337
337
|
"missing": missing,
|
|
338
338
|
}
|
|
339
|
-
_file_export_formats_early = {"excel", "csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "
|
|
339
|
+
_file_export_formats_early = {"excel", "csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "ods"}
|
|
340
340
|
if result_format in _file_export_formats_early:
|
|
341
341
|
return {
|
|
342
342
|
"headers": payload.get("headers", []),
|
|
@@ -359,7 +359,7 @@ class DataServiceMixin:
|
|
|
359
359
|
if swallowed_error:
|
|
360
360
|
tx._last_return_default_error = None
|
|
361
361
|
|
|
362
|
-
_file_export_formats = {"excel", "csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "
|
|
362
|
+
_file_export_formats = {"excel", "csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "ods"}
|
|
363
363
|
|
|
364
364
|
if result_format in _file_export_formats:
|
|
365
365
|
data = {
|
|
@@ -654,6 +654,15 @@ class DataServiceMixin:
|
|
|
654
654
|
md = "\n".join([header_row, separator] + data_rows)
|
|
655
655
|
return md.encode("utf-8"), f"{filename_base}.md", "text/markdown"
|
|
656
656
|
|
|
657
|
+
if result_format == "excel":
|
|
658
|
+
buf = BytesIO()
|
|
659
|
+
export.create_spreadsheet(headers, rows, buf)
|
|
660
|
+
return (
|
|
661
|
+
buf.getvalue(),
|
|
662
|
+
f"{filename_base}.xlsx",
|
|
663
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
664
|
+
)
|
|
665
|
+
|
|
657
666
|
if result_format == "xlsx":
|
|
658
667
|
try:
|
|
659
668
|
from openpyxl import Workbook
|
|
@@ -672,42 +681,58 @@ class DataServiceMixin:
|
|
|
672
681
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
673
682
|
)
|
|
674
683
|
|
|
675
|
-
if result_format == "parquet":
|
|
676
|
-
try:
|
|
677
|
-
import pyarrow as pa
|
|
678
|
-
import pyarrow.parquet as pq
|
|
679
|
-
except ImportError:
|
|
680
|
-
raise ImportError("pyarrow is required for parquet export (install velocity-python[parquet])")
|
|
681
|
-
table = pa.table({h: [row[i] for row in rows] for i, h in enumerate(headers)})
|
|
682
|
-
buf = BytesIO()
|
|
683
|
-
pq.write_table(table, buf)
|
|
684
|
-
return buf.getvalue(), f"{filename_base}.parquet", "application/octet-stream"
|
|
685
|
-
|
|
686
684
|
if result_format == "ods":
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
685
|
+
# Build ODS directly as a ZIP+XML — avoids odfpy's DOM approach
|
|
686
|
+
# which creates a Python object per cell and hangs on large datasets.
|
|
687
|
+
import zipfile
|
|
688
|
+
|
|
689
|
+
def _ods_escape(v):
|
|
690
|
+
s = "" if v is None else str(v)
|
|
691
|
+
return s.replace("&", "&").replace("<", "<").replace(">", ">")
|
|
692
|
+
|
|
693
|
+
def _ods_row(values):
|
|
694
|
+
cells = "".join(
|
|
695
|
+
f'<table:table-cell office:value-type="string">'
|
|
696
|
+
f'<text:p>{_ods_escape(v)}</text:p>'
|
|
697
|
+
f'</table:table-cell>'
|
|
698
|
+
for v in values
|
|
699
|
+
)
|
|
700
|
+
return f"<table:table-row>{cells}</table:table-row>"
|
|
701
|
+
|
|
702
|
+
content_xml = (
|
|
703
|
+
'<?xml version="1.0" encoding="UTF-8"?>'
|
|
704
|
+
'<office:document-content'
|
|
705
|
+
' xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"'
|
|
706
|
+
' xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"'
|
|
707
|
+
' xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"'
|
|
708
|
+
' office:version="1.2">'
|
|
709
|
+
'<office:body><office:spreadsheet>'
|
|
710
|
+
'<table:table table:name="Sheet1">'
|
|
711
|
+
+ _ods_row(headers)
|
|
712
|
+
+ "".join(_ods_row(row) for row in rows)
|
|
713
|
+
+ '</table:table></office:spreadsheet></office:body>'
|
|
714
|
+
'</office:document-content>'
|
|
715
|
+
).encode("utf-8")
|
|
716
|
+
manifest_xml = (
|
|
717
|
+
'<?xml version="1.0" encoding="UTF-8"?>'
|
|
718
|
+
'<manifest:manifest'
|
|
719
|
+
' xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"'
|
|
720
|
+
' manifest:version="1.2">'
|
|
721
|
+
'<manifest:file-entry'
|
|
722
|
+
' manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"'
|
|
723
|
+
' manifest:full-path="/"/>'
|
|
724
|
+
'<manifest:file-entry'
|
|
725
|
+
' manifest:media-type="text/xml"'
|
|
726
|
+
' manifest:full-path="content.xml"/>'
|
|
727
|
+
'</manifest:manifest>'
|
|
728
|
+
).encode("utf-8")
|
|
709
729
|
buf = BytesIO()
|
|
710
|
-
|
|
730
|
+
with zipfile.ZipFile(buf, "w", compression=zipfile.ZIP_DEFLATED) as zf:
|
|
731
|
+
# mimetype must be first and stored uncompressed per ODS spec
|
|
732
|
+
zf.writestr(zipfile.ZipInfo("mimetype"),
|
|
733
|
+
"application/vnd.oasis.opendocument.spreadsheet")
|
|
734
|
+
zf.writestr("META-INF/manifest.xml", manifest_xml)
|
|
735
|
+
zf.writestr("content.xml", content_xml)
|
|
711
736
|
return (
|
|
712
737
|
buf.getvalue(),
|
|
713
738
|
f"{filename_base}.ods",
|
|
@@ -743,7 +768,7 @@ class DataServiceMixin:
|
|
|
743
768
|
)
|
|
744
769
|
return
|
|
745
770
|
|
|
746
|
-
if result_format in ("csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "
|
|
771
|
+
if result_format in ("csv", "tsv", "json", "jsonl", "xml", "html", "markdown", "xlsx", "ods"):
|
|
747
772
|
filename_base = payload.get("filename_base") or table
|
|
748
773
|
built = self._build_export_buffer(result_format, data.get("headers", []), data.get("rows", []), filename_base)
|
|
749
774
|
if built is not None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/operators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_mirror.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/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.33 → velocity_python-0.1.35}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|