velocity-python 0.1.34__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.34/src/velocity_python.egg-info → velocity_python-0.1.35}/PKG-INFO +1 -1
- {velocity_python-0.1.34 → velocity_python-0.1.35}/pyproject.toml +1 -1
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/data_service.py +59 -23
- {velocity_python-0.1.34 → velocity_python-0.1.35/src/velocity_python.egg-info}/PKG-INFO +1 -1
- {velocity_python-0.1.34 → velocity_python-0.1.35}/LICENSE +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/README.md +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/setup.cfg +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_asset_references.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_assets_service.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_observability.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_pdf.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_row_dirty_tracking.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_table_alter.py +0 -0
- {velocity_python-0.1.34 → velocity_python-0.1.35}/tests/test_where_clause_validation.py +0 -0
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
@@ -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
|
|
@@ -673,30 +682,57 @@ class DataServiceMixin:
|
|
|
673
682
|
)
|
|
674
683
|
|
|
675
684
|
if result_format == "ods":
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
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")
|
|
698
729
|
buf = BytesIO()
|
|
699
|
-
|
|
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)
|
|
700
736
|
return (
|
|
701
737
|
buf.getvalue(),
|
|
702
738
|
f"{filename_base}.ods",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/lambda_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → 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.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlite/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → 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.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → 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.34 → velocity_python-0.1.35}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{velocity_python-0.1.34 → velocity_python-0.1.35}/src/velocity_python.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.34 → 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.34 → 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.34 → velocity_python-0.1.35}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|