vgi-python 0.31.1__tar.gz → 0.31.2__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.31.1 → vgi_python-0.31.2}/PKG-INFO +1 -1
- {vgi_python-0.31.1 → vgi_python-0.31.2}/pyproject.toml +1 -1
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_setting_secret_annotations.py +62 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/uv.lock +1 -1
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/client.py +16 -5
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.gitattributes +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/dependabot.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/release.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.gitignore +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.python-version +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/.vale.ini +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/CLAUDE.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/LICENSE +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/README.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/SECURITY.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/README.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/run-integration.sh +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/arguments.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/auth.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/catalogs.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/client.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/exceptions.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/filters.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/functions.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/http.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/index.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/metadata.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/observability.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/storage.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/transactor.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/worker.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/argument-serialization.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/logo.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/social-card.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/authentication.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/catalog-interface.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/cli.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/column-statistics.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/concepts/index.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/contributing-docs.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/generator-api.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/global-functions.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/index.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/index.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/lifecycle.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/metadata.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/overrides/main.html +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/robots.txt +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/shared-storage.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/index.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/table.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/vgi-logo.png +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/cache_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/calc_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/copy_format_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/filter_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/row_count_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/sum_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/mkdocs.yml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/scripts/measure_startup.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/test-data/generate.sh +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_aggregate_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_batch_metadata_callback.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_cli.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_copy_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_scan_branches_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_split_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_time_travel_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_splits.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conftest.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_version.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/generate.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/manifest.json +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/stale_anchor.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/truncated.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/valid_sealed.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/valid_unsealed.bin +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_blended_exchange.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_auth.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_cache_control.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_client_oauth.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_docstrings.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_exceptions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_fixture_catalog_parity.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_java_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_rust_request_builders.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_rust_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_launch_transport.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_metadata.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_otel.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_serve.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_signing_key.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_split_token.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_union_argument.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_wire_record_schema_parity.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker_page.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_duckdb.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/splits.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/argument_spec.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/arguments.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/attach_header.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/auth.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/cache_control.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/aggregate.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/errors.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/java_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/rust_request_builders.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/rust_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/exceptions.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/landing.html +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/vgi-client.js +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/invocation.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/logging_config.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/meta_worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/metadata.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/otel.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/profiling.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/protocol.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/py.typed +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/scalar_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/schema_utils.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/secret_service.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/serve.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/split_token.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/client.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/server.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/worker.py +0 -0
- {vgi_python-0.31.1 → vgi_python-0.31.2}/wrangler.jsonc +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.31.
|
|
3
|
+
Version: 0.31.2
|
|
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
|
|
@@ -237,6 +237,68 @@ class TestTableFunctionSettingAnnotations:
|
|
|
237
237
|
assert "details" in table.schema.names # verbose mode adds details column
|
|
238
238
|
assert table.column("greeting").to_pylist() == ["Hola", "Hola", "Hola"]
|
|
239
239
|
|
|
240
|
+
def test_secret_delivers_dict_of_scalars(self, fixture_worker: str) -> None:
|
|
241
|
+
"""SecretDemoFunction (table function) receives a client-supplied secret.
|
|
242
|
+
|
|
243
|
+
Regression for `Client.table_function` hardcoding `secrets=None` on
|
|
244
|
+
the wire — the same `vgi_example` secret shape already proven to work
|
|
245
|
+
for `ReturnSecretValueFunction` (scalar) above, now exercised through
|
|
246
|
+
the table-function path instead.
|
|
247
|
+
"""
|
|
248
|
+
from vgi.client import Client
|
|
249
|
+
|
|
250
|
+
# SecretDemoFunction resolves via `params.secrets.of_type("vgi_example")`
|
|
251
|
+
# (not the `Secret()`-annotation path `test_secret_delivers_dict_of_scalars`
|
|
252
|
+
# above uses), which filters on the secret payload's OWN `type` field —
|
|
253
|
+
# so, unlike that test's arbitrary `"type": "test"`, this one must be
|
|
254
|
+
# `"type": "vgi_example"` to match.
|
|
255
|
+
secret_value = {"type": "vgi_example", "provider": "config", "secret_string": "s3cr3t"}
|
|
256
|
+
|
|
257
|
+
with Client(fixture_worker) as client:
|
|
258
|
+
outputs = list(
|
|
259
|
+
client.table_function(
|
|
260
|
+
function_name="secret_demo",
|
|
261
|
+
schema_name="main",
|
|
262
|
+
secrets={"vgi_example": secret_value},
|
|
263
|
+
)
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
table = pa.Table.from_batches(outputs)
|
|
267
|
+
assert dict(zip(table.column("key").to_pylist(), table.column("value").to_pylist(), strict=True)) == {
|
|
268
|
+
"type": "vgi_example",
|
|
269
|
+
"provider": "config",
|
|
270
|
+
"secret_string": "s3cr3t",
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
def test_secret_delivers_to_table_in_out_function(self, fixture_worker: str) -> None:
|
|
274
|
+
"""SecretInOutFunction receives a client-supplied secret.
|
|
275
|
+
|
|
276
|
+
Regression for `Client.table_in_out_function` hardcoding `secrets=None`
|
|
277
|
+
on the wire — the fixture (`secret_in_out`) already existed but had no
|
|
278
|
+
test exercising it end to end, which is exactly how the bug went
|
|
279
|
+
unnoticed.
|
|
280
|
+
"""
|
|
281
|
+
from vgi.client import Client
|
|
282
|
+
|
|
283
|
+
# Same `of_type("vgi_example")` resolution as SecretDemoFunction above —
|
|
284
|
+
# the payload's own `type` field must equal the requested secret_type.
|
|
285
|
+
secret_value = {"type": "vgi_example", "provider": "config", "secret_string": "s3cr3t"}
|
|
286
|
+
batch = pa.RecordBatch.from_pydict({"n": [1, 2]})
|
|
287
|
+
|
|
288
|
+
with Client(fixture_worker) as client:
|
|
289
|
+
outputs = list(
|
|
290
|
+
client.table_in_out_function(
|
|
291
|
+
function_name="secret_in_out",
|
|
292
|
+
schema_name="main",
|
|
293
|
+
input=iter([batch]),
|
|
294
|
+
secrets={"vgi_example": secret_value},
|
|
295
|
+
)
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
table = pa.Table.from_batches(outputs)
|
|
299
|
+
assert table.column("n").to_pylist() == [1, 2]
|
|
300
|
+
assert table.column("secret_string").to_pylist() == ["s3cr3t", "s3cr3t"]
|
|
301
|
+
|
|
240
302
|
|
|
241
303
|
# ---------------------------------------------------------------------------
|
|
242
304
|
# Tests for auto-population of Meta.required_settings/required_secrets
|
|
@@ -2014,6 +2014,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2014
2014
|
projection_ids: list[int] | None = None,
|
|
2015
2015
|
pushdown_filters: bytes | None = None,
|
|
2016
2016
|
settings: dict[str, Any] | None = None,
|
|
2017
|
+
secrets: dict[str, Any] | None = None,
|
|
2017
2018
|
transaction_opaque_data: bytes | None = None,
|
|
2018
2019
|
parent_row_callback: Callable[[list[int]], None] | None = None,
|
|
2019
2020
|
has_finalize: bool = True,
|
|
@@ -2043,6 +2044,8 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2043
2044
|
to push down to the function.
|
|
2044
2045
|
settings: Optional dictionary of settings/pragmas to
|
|
2045
2046
|
pass to the function.
|
|
2047
|
+
secrets: Optional dictionary of secret name to value pairs.
|
|
2048
|
+
Values can be simple scalars or dicts (for struct-typed secrets).
|
|
2046
2049
|
transaction_opaque_data: Optional unique identifier for the DuckDB transaction.
|
|
2047
2050
|
parent_row_callback: Optional callback invoked once per yielded
|
|
2048
2051
|
output batch (before finalize), immediately before the yield,
|
|
@@ -2108,7 +2111,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2108
2111
|
function_type=FunctionType.TABLE,
|
|
2109
2112
|
input_schema=input_schema,
|
|
2110
2113
|
settings=settings,
|
|
2111
|
-
secrets=
|
|
2114
|
+
secrets=secrets,
|
|
2112
2115
|
transaction_opaque_data=transaction_opaque_data,
|
|
2113
2116
|
projection_ids=projection_ids,
|
|
2114
2117
|
pushdown_filters_batch=pushdown_filters_batch,
|
|
@@ -2173,6 +2176,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2173
2176
|
projection_ids: list[int] | None = None,
|
|
2174
2177
|
pushdown_filters: bytes | None = None,
|
|
2175
2178
|
settings: dict[str, Any] | None = None,
|
|
2179
|
+
secrets: dict[str, Any] | None = None,
|
|
2176
2180
|
transaction_opaque_data: bytes | None = None,
|
|
2177
2181
|
copy_to: CopyToContext | None = None,
|
|
2178
2182
|
input_schema: pa.Schema | None = None,
|
|
@@ -2215,6 +2219,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2215
2219
|
projection_ids: Optional column indices for projection.
|
|
2216
2220
|
pushdown_filters: Optional serialized filter predicates.
|
|
2217
2221
|
settings: Optional settings/pragmas to pass to the function.
|
|
2222
|
+
secrets: Optional dictionary of secret name to value pairs.
|
|
2218
2223
|
transaction_opaque_data: Optional DuckDB transaction identifier.
|
|
2219
2224
|
copy_to: Optional [`CopyToContext`][] marking this sink as a
|
|
2220
2225
|
``COPY ... TO`` write. A ``CopyToFunction`` returns no finalize
|
|
@@ -2261,7 +2266,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2261
2266
|
function_type=FunctionType.TABLE_BUFFERING,
|
|
2262
2267
|
input_schema=input_schema,
|
|
2263
2268
|
settings=settings,
|
|
2264
|
-
secrets=
|
|
2269
|
+
secrets=secrets,
|
|
2265
2270
|
transaction_opaque_data=transaction_opaque_data,
|
|
2266
2271
|
copy_to=copy_to,
|
|
2267
2272
|
)
|
|
@@ -2422,6 +2427,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2422
2427
|
projection_ids: list[int] | None = None,
|
|
2423
2428
|
pushdown_filters: bytes | None = None,
|
|
2424
2429
|
settings: dict[str, Any] | None = None,
|
|
2430
|
+
secrets: dict[str, Any] | None = None,
|
|
2425
2431
|
transaction_opaque_data: bytes | None = None,
|
|
2426
2432
|
target_split_bytes: int | None = None,
|
|
2427
2433
|
min_splits: int | None = None,
|
|
@@ -2460,6 +2466,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2460
2466
|
pushdown_filters: Optional byte string of filter predicates,
|
|
2461
2467
|
same wire format as :meth:`table_function`'s.
|
|
2462
2468
|
settings: Optional dictionary of settings/pragmas.
|
|
2469
|
+
secrets: Optional dictionary of secret name to value pairs.
|
|
2463
2470
|
transaction_opaque_data: Optional transaction identifier.
|
|
2464
2471
|
target_split_bytes: Requested split size — the primary sizing
|
|
2465
2472
|
lever; the client can't see per-split cost and will treat
|
|
@@ -2499,7 +2506,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2499
2506
|
arguments=arguments,
|
|
2500
2507
|
function_type=FunctionType.TABLE,
|
|
2501
2508
|
settings=settings,
|
|
2502
|
-
secrets=
|
|
2509
|
+
secrets=secrets,
|
|
2503
2510
|
transaction_opaque_data=transaction_opaque_data,
|
|
2504
2511
|
)
|
|
2505
2512
|
bind_response = self._do_bind(self._primary.proxy, bind_request, None)
|
|
@@ -2542,6 +2549,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2542
2549
|
projection_ids: list[int] | None = None,
|
|
2543
2550
|
pushdown_filters: bytes | None = None,
|
|
2544
2551
|
settings: dict[str, Any] | None = None,
|
|
2552
|
+
secrets: dict[str, Any] | None = None,
|
|
2545
2553
|
transaction_opaque_data: bytes | None = None,
|
|
2546
2554
|
copy_from: CopyFromContext | None = None,
|
|
2547
2555
|
split_tokens: list[bytes] | None = None,
|
|
@@ -2577,6 +2585,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2577
2585
|
to push down to the function.
|
|
2578
2586
|
settings: Optional dictionary of settings/pragmas to
|
|
2579
2587
|
pass to the function.
|
|
2588
|
+
secrets: Optional dictionary of secret name to value pairs.
|
|
2580
2589
|
transaction_opaque_data: Optional unique identifier for the DuckDB transaction.
|
|
2581
2590
|
copy_from: Optional [`CopyFromContext`][] marking this scan as a
|
|
2582
2591
|
``COPY ... FROM`` read. Prefer :meth:`copy_from`, which builds
|
|
@@ -2640,7 +2649,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2640
2649
|
function_type=FunctionType.TABLE,
|
|
2641
2650
|
input_schema=None,
|
|
2642
2651
|
settings=settings,
|
|
2643
|
-
secrets=
|
|
2652
|
+
secrets=secrets,
|
|
2644
2653
|
transaction_opaque_data=transaction_opaque_data,
|
|
2645
2654
|
projection_ids=projection_ids,
|
|
2646
2655
|
pushdown_filters_batch=pushdown_filters_batch,
|
|
@@ -2678,6 +2687,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2678
2687
|
projection_ids: list[int] | None = None,
|
|
2679
2688
|
pushdown_filters: bytes | None = None,
|
|
2680
2689
|
settings: dict[str, Any] | None = None,
|
|
2690
|
+
secrets: dict[str, Any] | None = None,
|
|
2681
2691
|
transaction_opaque_data: bytes | None = None,
|
|
2682
2692
|
resume_token: bytes | None = None,
|
|
2683
2693
|
) -> ResumableTableScan:
|
|
@@ -2703,6 +2713,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2703
2713
|
pushdown). ``None`` selects all columns.
|
|
2704
2714
|
pushdown_filters: Optional serialized filter-pushdown payload.
|
|
2705
2715
|
settings: Optional DuckDB settings to apply for the scan.
|
|
2716
|
+
secrets: Optional dictionary of secret name to value pairs.
|
|
2706
2717
|
transaction_opaque_data: Optional catalog transaction handle.
|
|
2707
2718
|
resume_token: Continuation token from a prior batch to resume from;
|
|
2708
2719
|
must be paired with the same ``function_name``/projection/
|
|
@@ -2737,7 +2748,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
2737
2748
|
function_type=FunctionType.TABLE,
|
|
2738
2749
|
input_schema=None,
|
|
2739
2750
|
settings=settings,
|
|
2740
|
-
secrets=
|
|
2751
|
+
secrets=secrets,
|
|
2741
2752
|
transaction_opaque_data=transaction_opaque_data,
|
|
2742
2753
|
)
|
|
2743
2754
|
bind_response = self._do_bind(self._primary.proxy, bind_request, 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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|