vgi-python 0.31.0__tar.gz → 0.31.1__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.0 → vgi_python-0.31.1}/PKG-INFO +1 -1
- {vgi_python-0.31.0 → vgi_python-0.31.1}/pyproject.toml +1 -1
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_metadata.py +68 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/arithmetic.py +4 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/catalog_interface.py +6 -3
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/metadata.py +16 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.gitattributes +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/dependabot.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.github/workflows/release.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.gitignore +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.python-version +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/.vale.ini +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/CLAUDE.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/LICENSE +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/README.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/SECURITY.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/ci/README.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/ci/run-integration.sh +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/arguments.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/auth.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/catalogs.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/client.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/exceptions.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/filters.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/functions.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/http.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/index.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/metadata.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/observability.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/storage.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/transactor.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/api/worker.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/argument-serialization.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/logo.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/assets/social-card.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/authentication.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/catalog-interface.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/cli.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/column-statistics.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/concepts/index.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/contributing-docs.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/generator-api.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/global-functions.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/index.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/index.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/lifecycle.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/metadata.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/overrides/main.html +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/robots.txt +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/shared-storage.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/tutorial/index.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/tutorial/table.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/docs/vgi-logo.png +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/cache_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/calc_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/copy_format_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/filter_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/row_count_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/examples/sum_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/mkdocs.yml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/scripts/measure_startup.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/test-data/generate.sh +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_aggregate_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_batch_metadata_callback.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_cli.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_copy_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_scan_branches_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_split_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_time_travel_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_splits.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/conftest.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/bad_version.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/generate.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/manifest.json +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/stale_anchor.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/truncated.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/valid_sealed.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/data/split_tokens/valid_unsealed.bin +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/test_blended_exchange.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_auth.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_cache_control.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_client_oauth.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_docstrings.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_exceptions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_fixture_catalog_parity.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_function_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_java_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_rust_request_builders.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_rust_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_launch_transport.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_otel.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_serve.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_signing_key.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_split_token.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_union_argument.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_wire_record_schema_parity.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/test_worker_page.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/uv.lock +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_duckdb.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/splits.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/argument_spec.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/arguments.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/attach_header.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/auth.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/cache_control.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/aggregate.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/client/errors.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/java_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/rust_request_builders.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/rust_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/exceptions.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/function_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/landing.html +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/vgi-client.js +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/invocation.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/logging_config.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/meta_worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/otel.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/profiling.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/protocol.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/py.typed +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/scalar_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/schema_utils.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/secret_service.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/serve.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/split_token.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/table_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/transactor/client.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/transactor/server.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/vgi/worker.py +0 -0
- {vgi_python-0.31.0 → vgi_python-0.31.1}/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.1
|
|
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
|
|
@@ -64,6 +64,32 @@ class TestResolveMetadata:
|
|
|
64
64
|
assert meta.categories == ["transform", "utility"]
|
|
65
65
|
assert meta.max_workers == 4
|
|
66
66
|
|
|
67
|
+
def test_comment_defaults_to_none(self) -> None:
|
|
68
|
+
"""Meta.comment is unset by default -- unlike description, no docstring fallback."""
|
|
69
|
+
|
|
70
|
+
class UndocumentedCommentFunction(TableInOutFunction): # type: ignore[type-arg]
|
|
71
|
+
"""A function with only a docstring, no Meta.comment."""
|
|
72
|
+
|
|
73
|
+
data: TableInput = Arg[TableInput](0, doc="Input table") # type: ignore[assignment]
|
|
74
|
+
|
|
75
|
+
meta = UndocumentedCommentFunction.get_metadata()
|
|
76
|
+
assert meta.comment is None
|
|
77
|
+
|
|
78
|
+
def test_function_with_comment(self) -> None:
|
|
79
|
+
"""Meta.comment is a short operator-facing note, distinct from description."""
|
|
80
|
+
|
|
81
|
+
class DeprecatedFunction(TableInOutFunction): # type: ignore[type-arg]
|
|
82
|
+
class Meta:
|
|
83
|
+
name = "deprecated_func"
|
|
84
|
+
description = "Does the thing"
|
|
85
|
+
comment = "deprecated, use deprecated_func_v2 instead"
|
|
86
|
+
|
|
87
|
+
data: TableInput = Arg[TableInput](0, doc="Input table") # type: ignore[assignment]
|
|
88
|
+
|
|
89
|
+
meta = DeprecatedFunction.get_metadata()
|
|
90
|
+
assert meta.description == "Does the thing"
|
|
91
|
+
assert meta.comment == "deprecated, use deprecated_func_v2 instead"
|
|
92
|
+
|
|
67
93
|
def test_name_auto_generation(self) -> None:
|
|
68
94
|
"""Function name is auto-generated from class name."""
|
|
69
95
|
|
|
@@ -727,3 +753,45 @@ class TestFunctionTags:
|
|
|
727
753
|
}
|
|
728
754
|
# Structured examples are carried separately from the tag-encoded ones.
|
|
729
755
|
assert [ex.sql for ex in info.examples] == ["SELECT * FROM dynamic_table()"]
|
|
756
|
+
|
|
757
|
+
def test_comment_flows_into_function_info(self) -> None:
|
|
758
|
+
"""Meta.comment reaches FunctionInfo.comment (the field every other catalog object already has)."""
|
|
759
|
+
from vgi.catalog.catalog_interface import (
|
|
760
|
+
FunctionInfo,
|
|
761
|
+
ReadOnlyCatalogInterface,
|
|
762
|
+
)
|
|
763
|
+
from vgi.table_function import ProcessParams, TableFunctionGenerator
|
|
764
|
+
|
|
765
|
+
class CommentedTable(TableFunctionGenerator): # type: ignore[type-arg]
|
|
766
|
+
class Meta:
|
|
767
|
+
name = "commented_table"
|
|
768
|
+
comment = "internal — do not call directly"
|
|
769
|
+
|
|
770
|
+
FIXED_SCHEMA = pa.schema([pa.field("id", pa.int64())])
|
|
771
|
+
|
|
772
|
+
@classmethod
|
|
773
|
+
def process(cls, params: ProcessParams[Any], state: None, out: OutputCollector) -> None:
|
|
774
|
+
out.emit(pa.record_batch({"id": [1]}))
|
|
775
|
+
out.finish()
|
|
776
|
+
|
|
777
|
+
class UncommentedTable(TableFunctionGenerator): # type: ignore[type-arg]
|
|
778
|
+
class Meta:
|
|
779
|
+
name = "uncommented_table"
|
|
780
|
+
|
|
781
|
+
FIXED_SCHEMA = pa.schema([pa.field("id", pa.int64())])
|
|
782
|
+
|
|
783
|
+
@classmethod
|
|
784
|
+
def process(cls, params: ProcessParams[Any], state: None, out: OutputCollector) -> None:
|
|
785
|
+
out.emit(pa.record_batch({"id": [1]}))
|
|
786
|
+
out.finish()
|
|
787
|
+
|
|
788
|
+
class Cat(ReadOnlyCatalogInterface):
|
|
789
|
+
catalog_name = "functions"
|
|
790
|
+
functions = [CommentedTable, UncommentedTable]
|
|
791
|
+
|
|
792
|
+
commented_info = Cat()._function_to_info(CommentedTable, "main")
|
|
793
|
+
assert isinstance(commented_info, FunctionInfo)
|
|
794
|
+
assert commented_info.comment == "internal — do not call directly"
|
|
795
|
+
|
|
796
|
+
uncommented_info = Cat()._function_to_info(UncommentedTable, "main")
|
|
797
|
+
assert uncommented_info.comment is None
|
|
@@ -37,6 +37,10 @@ class MultiplyFunction(ScalarFunction):
|
|
|
37
37
|
|
|
38
38
|
name = "multiply"
|
|
39
39
|
description = "Multiplies a value by a constant factor"
|
|
40
|
+
# Meta.comment fixture: a short operator-facing note distinct from
|
|
41
|
+
# `description` — exercised by test_multiply_function_comment and
|
|
42
|
+
# the C++ integration test function_arguments.test.
|
|
43
|
+
comment = "fixture function for scalar bind-parameter tests"
|
|
40
44
|
examples = [
|
|
41
45
|
FunctionExample(
|
|
42
46
|
sql="SELECT multiply(price, 2) FROM products",
|
|
@@ -649,8 +649,11 @@ class FunctionInfo(CatalogSchemaObject, ArrowSerializableDataclass):
|
|
|
649
649
|
null_handling: Scalar function behavior field (None for non-scalar
|
|
650
650
|
functions).
|
|
651
651
|
description: Intrinsic documentation from function metadata
|
|
652
|
-
(``Meta.description``).
|
|
653
|
-
|
|
652
|
+
(``Meta.description``). ``comment`` (inherited from the base
|
|
653
|
+
object) is a separate, shorter operator-facing note from
|
|
654
|
+
``Meta.comment`` — e.g. "deprecated, use v2". Both are static:
|
|
655
|
+
there is no ``COMMENT ON FUNCTION`` RPC, unlike tables/views,
|
|
656
|
+
whose ``comment`` is dynamically settable.
|
|
654
657
|
examples: Usage examples for the function.
|
|
655
658
|
categories: Category labels for the function.
|
|
656
659
|
projection_pushdown: Table-function capability (None for scalar
|
|
@@ -3389,7 +3392,7 @@ class ReadOnlyCatalogInterface(CatalogInterface):
|
|
|
3389
3392
|
function_type=func_type,
|
|
3390
3393
|
arguments=args_bytes,
|
|
3391
3394
|
output_schema=output_bytes,
|
|
3392
|
-
comment=
|
|
3395
|
+
comment=meta.comment, # Static, Meta-declared only — see Meta.comment
|
|
3393
3396
|
tags=meta.tags,
|
|
3394
3397
|
# Scalar/aggregate function behavior fields
|
|
3395
3398
|
stability=meta.stability if is_scalar else None,
|
|
@@ -360,6 +360,12 @@ class ResolvedMetadata:
|
|
|
360
360
|
function_type: The [`CatalogFunctionType`][] (scalar, table, aggregate,
|
|
361
361
|
or table-buffering).
|
|
362
362
|
description: Human-readable description of the function.
|
|
363
|
+
comment: Short operator-facing note (e.g. "deprecated, use v2" or
|
|
364
|
+
"internal — do not call directly"), distinct from `description`'s
|
|
365
|
+
intrinsic documentation. Mirrors the `comment` every other catalog
|
|
366
|
+
object (table/view/schema) already carries — functions only had
|
|
367
|
+
`description` until now. Static (Meta-declared) only; there is no
|
|
368
|
+
`COMMENT ON FUNCTION` RPC to change it at runtime.
|
|
363
369
|
examples: SQL usage examples for the function.
|
|
364
370
|
categories: Classification/category labels.
|
|
365
371
|
tags: Free-form key/value metadata tags.
|
|
@@ -430,6 +436,7 @@ class ResolvedMetadata:
|
|
|
430
436
|
|
|
431
437
|
# Documentation
|
|
432
438
|
description: str = ""
|
|
439
|
+
comment: str | None = None
|
|
433
440
|
examples: list[FunctionExample] = field(default_factory=list)
|
|
434
441
|
categories: list[str] = field(default_factory=list)
|
|
435
442
|
tags: dict[str, str] = field(default_factory=dict)
|
|
@@ -518,6 +525,7 @@ class ResolvedMetadata:
|
|
|
518
525
|
"class_name": self.class_name,
|
|
519
526
|
"function_type": self.function_type.name,
|
|
520
527
|
"description": self.description,
|
|
528
|
+
"comment": self.comment,
|
|
521
529
|
"examples": [ex.to_dict() for ex in self.examples],
|
|
522
530
|
"categories": self.categories,
|
|
523
531
|
"tags": self.tags,
|
|
@@ -558,6 +566,7 @@ class ResolvedMetadata:
|
|
|
558
566
|
class_name=d["class_name"],
|
|
559
567
|
function_type=CatalogFunctionType[d["function_type"]],
|
|
560
568
|
description=d.get("description", ""),
|
|
569
|
+
comment=d.get("comment"),
|
|
561
570
|
examples=[FunctionExample.from_dict(ex) for ex in d.get("examples", [])],
|
|
562
571
|
categories=d.get("categories", []),
|
|
563
572
|
tags=dict(d.get("tags", {})),
|
|
@@ -962,6 +971,7 @@ _VALID_META_ATTRIBUTES: frozenset[str] = frozenset(
|
|
|
962
971
|
# Common
|
|
963
972
|
"name",
|
|
964
973
|
"description",
|
|
974
|
+
"comment",
|
|
965
975
|
"examples",
|
|
966
976
|
"categories",
|
|
967
977
|
"tags",
|
|
@@ -1135,6 +1145,10 @@ def resolve_metadata(cls: type) -> ResolvedMetadata:
|
|
|
1135
1145
|
if not description and cls.__doc__:
|
|
1136
1146
|
description = cls.__doc__.strip().split("\n")[0]
|
|
1137
1147
|
|
|
1148
|
+
# comment has no docstring fallback (unlike description) — it's a
|
|
1149
|
+
# deliberate operator-facing opt-in, not something to infer.
|
|
1150
|
+
comment = attrs.get("comment")
|
|
1151
|
+
|
|
1138
1152
|
# Normalize examples
|
|
1139
1153
|
examples = _normalize_examples(attrs.get("examples", []))
|
|
1140
1154
|
|
|
@@ -1223,6 +1237,7 @@ def resolve_metadata(cls: type) -> ResolvedMetadata:
|
|
|
1223
1237
|
class_name=class_name,
|
|
1224
1238
|
function_type=function_type,
|
|
1225
1239
|
description=description,
|
|
1240
|
+
comment=comment,
|
|
1226
1241
|
examples=examples,
|
|
1227
1242
|
categories=attrs.get("categories", []),
|
|
1228
1243
|
tags=dict(attrs.get("tags", {})),
|
|
@@ -1399,6 +1414,7 @@ _METADATA_SCHEMA = pa.schema(
|
|
|
1399
1414
|
pa.field("class_name", pa.string()),
|
|
1400
1415
|
pa.field("function_type", pa.string()),
|
|
1401
1416
|
pa.field("description", pa.string()),
|
|
1417
|
+
pa.field("comment", pa.string(), nullable=True),
|
|
1402
1418
|
pa.field("examples", pa.list_(_EXAMPLE_STRUCT)),
|
|
1403
1419
|
pa.field("categories", pa.list_(pa.string())),
|
|
1404
1420
|
pa.field("tags", pa.map_(pa.string(), pa.string())),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|