vgi-python 0.29.5__tar.gz → 0.29.6__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.
- {vgi_python-0.29.5 → vgi_python-0.29.6}/PKG-INFO +1 -1
- {vgi_python-0.29.5 → vgi_python-0.29.6}/pyproject.toml +1 -1
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/test_blended_exchange.py +42 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/uv.lock +1 -1
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/client.py +23 -1
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.gitattributes +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/dependabot.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.github/workflows/release.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.gitignore +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.python-version +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/.vale.ini +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/CLAUDE.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/LICENSE +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/README.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/SECURITY.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/ci/README.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/ci/run-integration.sh +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/arguments.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/auth.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/catalogs.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/client.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/exceptions.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/filters.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/functions.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/http.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/index.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/metadata.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/observability.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/storage.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/transactor.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/api/worker.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/argument-serialization.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/logo.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/assets/social-card.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/authentication.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/catalog-interface.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/cli.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/column-statistics.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/concepts/index.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/contributing-docs.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/generator-api.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/global-functions.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/index.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/index.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/lifecycle.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/metadata.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/overrides/main.html +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/robots.txt +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/shared-storage.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/tutorial/index.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/tutorial/table.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/docs/vgi-logo.png +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/cache_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/calc_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/copy_format_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/filter_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/row_count_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/examples/sum_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/mkdocs.yml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/scripts/measure_startup.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/test-data/generate.sh +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_aggregate_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_batch_metadata_callback.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_cli.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_copy_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_scan_branches_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_split_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_time_travel_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_splits.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/conftest.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/bad_version.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/generate.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/manifest.json +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/stale_anchor.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/truncated.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/valid_sealed.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/data/split_tokens/valid_unsealed.bin +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_auth.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_cache_control.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_docstrings.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_exceptions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_fixture_catalog_parity.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_function_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_java_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_rust_request_builders.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_rust_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_launch_transport.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_metadata.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_otel.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_serve.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_signing_key.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_split_token.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_union_argument.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_wire_record_schema_parity.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/test_worker_page.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_duckdb.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/splits.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/argument_spec.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/arguments.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/attach_header.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/auth.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/cache_control.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/aggregate.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/client/errors.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/java_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/rust_request_builders.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/rust_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/exceptions.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/function_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/landing.html +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/vgi-client.js +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/invocation.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/logging_config.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/meta_worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/metadata.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/otel.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/profiling.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/protocol.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/py.typed +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/scalar_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/schema_utils.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/secret_service.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/serve.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/split_token.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/table_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/transactor/client.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/transactor/server.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/vgi/worker.py +0 -0
- {vgi_python-0.29.5 → vgi_python-0.29.6}/wrangler.jsonc +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.6
|
|
4
4
|
Summary: Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow
|
|
5
5
|
Project-URL: Homepage, https://query.farm
|
|
6
6
|
Project-URL: Repository, https://github.com/Query-farm/vgi-python
|
|
@@ -238,3 +238,45 @@ class TestBlendedArityAndVarargs:
|
|
|
238
238
|
|
|
239
239
|
assert len(results) == 1
|
|
240
240
|
assert results[0].column("row_sum").to_pylist() == [3.0, 5.0]
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class TestHasFinalizeSkip:
|
|
244
|
+
"""`has_finalize=False` skips the FINALIZE `init()` entirely for a no-finalize function.
|
|
245
|
+
|
|
246
|
+
Real interop bug found live against a non-Python worker SDK: the client
|
|
247
|
+
unconditionally sent a FINALIZE-phase init() for every table-in-out call,
|
|
248
|
+
which the Python fixture worker happens to no-op gracefully but a
|
|
249
|
+
TypeScript-SDK worker rejects outright ("a blended row-transform function
|
|
250
|
+
has no FINALIZE phase"). `has_finalize=False` avoids sending that init()
|
|
251
|
+
at all rather than depending on every SDK tolerating an unexpected one.
|
|
252
|
+
Output must be identical either way for a function that has no finalize
|
|
253
|
+
stage (there is nothing to skip yielding) -- this is the equivalence this
|
|
254
|
+
suite can prove locally; the cross-SDK rejection itself is TypeScript-only.
|
|
255
|
+
"""
|
|
256
|
+
|
|
257
|
+
def test_output_identical_with_and_without_has_finalize(self, client_transport: Any) -> None:
|
|
258
|
+
"""Same output whether the FINALIZE init() is sent or skipped, both transports."""
|
|
259
|
+
input_schema = make_schema([pa.field("n", pa.int64())])
|
|
260
|
+
batch = pa.RecordBatch.from_pydict({"n": [0, 1, 3, 2]}, schema=input_schema)
|
|
261
|
+
|
|
262
|
+
with client_transport() as client:
|
|
263
|
+
with_finalize = list(
|
|
264
|
+
client.table_in_out_function(
|
|
265
|
+
function_name="blended_explode",
|
|
266
|
+
schema_name="main",
|
|
267
|
+
input=iter([batch]),
|
|
268
|
+
)
|
|
269
|
+
)
|
|
270
|
+
with client_transport() as client:
|
|
271
|
+
without_finalize = list(
|
|
272
|
+
client.table_in_out_function(
|
|
273
|
+
function_name="blended_explode",
|
|
274
|
+
schema_name="main",
|
|
275
|
+
input=iter([batch]),
|
|
276
|
+
has_finalize=False,
|
|
277
|
+
)
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
assert len(with_finalize) == 1
|
|
281
|
+
assert len(without_finalize) == 1
|
|
282
|
+
assert with_finalize[0].column("i").to_pylist() == without_finalize[0].column("i").to_pylist()
|
|
@@ -1915,6 +1915,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
1915
1915
|
settings: dict[str, Any] | None = None,
|
|
1916
1916
|
transaction_opaque_data: bytes | None = None,
|
|
1917
1917
|
parent_row_callback: Callable[[list[int]], None] | None = None,
|
|
1918
|
+
has_finalize: bool = True,
|
|
1918
1919
|
) -> Generator[pa.RecordBatch]:
|
|
1919
1920
|
"""Invoke a table-in-out function on the worker and stream results.
|
|
1920
1921
|
|
|
@@ -1956,6 +1957,20 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
1956
1957
|
`FunctionInfo.input_from_args`); leave unset for ordinary
|
|
1957
1958
|
table-in-out functions, which have no provenance concept and
|
|
1958
1959
|
may legitimately change row count.
|
|
1960
|
+
has_finalize: Whether this function declares a FINALIZE stage
|
|
1961
|
+
(`FunctionInfo.has_finalize`). Defaults to `True` — every
|
|
1962
|
+
caller before this parameter existed got a FINALIZE-phase
|
|
1963
|
+
`init()` unconditionally, so this preserves that exactly.
|
|
1964
|
+
Pass `False` for a function known to have no finalize (every
|
|
1965
|
+
blended `RowTransformFunction` — `has_finalize` is always
|
|
1966
|
+
false for those, enforced at `resolve_metadata()`) to skip
|
|
1967
|
+
the FINALIZE `init()` entirely, not just send one expecting
|
|
1968
|
+
an empty reply. Confirmed load-bearing, not cosmetic: some
|
|
1969
|
+
worker SDKs (e.g. the TypeScript one) actively reject an
|
|
1970
|
+
unexpected FINALIZE `init()` for a function that never
|
|
1971
|
+
advertised `has_finalize`, rather than silently no-op'ing
|
|
1972
|
+
it — the C++ DuckDB extension avoids this the same way, by
|
|
1973
|
+
conditionally registering `in_out_function_final` at all.
|
|
1959
1974
|
|
|
1960
1975
|
Yields:
|
|
1961
1976
|
Output `RecordBatch`es from the function. In single-worker mode, output
|
|
@@ -2019,7 +2034,14 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2019
2034
|
# Close secondary workers
|
|
2020
2035
|
self._close_secondary_workers()
|
|
2021
2036
|
|
|
2022
|
-
# Finalize on primary worker
|
|
2037
|
+
# Finalize on primary worker — skipped entirely (not just
|
|
2038
|
+
# sent expecting an empty reply) when the function has no
|
|
2039
|
+
# finalize stage. See has_finalize's docstring: some worker
|
|
2040
|
+
# SDKs reject an unadvertised FINALIZE init() outright.
|
|
2041
|
+
if not has_finalize:
|
|
2042
|
+
_logger.debug("skipping_finalize_no_finalize_stage")
|
|
2043
|
+
return
|
|
2044
|
+
|
|
2023
2045
|
_logger.debug("finalizing_primary_worker")
|
|
2024
2046
|
yield from self._finalize_primary_worker(
|
|
2025
2047
|
bind_request,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_constant_columns_function.py
RENAMED
|
File without changes
|
{vgi_python-0.29.5 → vgi_python-0.29.6}/tests/table/generator/test_double_sequence_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|