vgi-python 0.12.0__tar.gz → 0.14.0__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.12.0 → vgi_python-0.14.0}/PKG-INFO +2 -2
- {vgi_python-0.12.0 → vgi_python-0.14.0}/ci/run-integration.sh +5 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/pyproject.toml +2 -2
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_directory_parity.py +9 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/landing/describe.expected.json +294 -2
- vgi_python-0.14.0/tests/landing/describe.schema.json +402 -0
- vgi_python-0.14.0/tests/test_cache_control.py +222 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/uv.lock +5 -5
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/http_server.py +26 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/__init__.py +40 -0
- vgi_python-0.14.0/vgi/_test_fixtures/table/cache.py +1525 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/worker.py +149 -8
- vgi_python-0.14.0/vgi/cache_control.py +150 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/describe_json.py +4 -1
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/landing.html +81 -30
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/protocol.py +54 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/table_function.py +16 -0
- vgi_python-0.12.0/tests/landing/describe.schema.json +0 -166
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.gitattributes +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/dependabot.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.github/workflows/release.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.gitignore +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.python-version +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/.vale.ini +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/CLAUDE.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/LICENSE +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/README.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/SECURITY.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/ci/README.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/arguments.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/auth.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/catalogs.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/client.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/exceptions.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/filters.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/functions.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/http.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/index.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/metadata.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/observability.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/storage.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/transactor.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/api/worker.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/argument-serialization.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/logo.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/assets/social-card.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/authentication.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/catalog-interface.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/cli.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/column-statistics.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/concepts/index.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/contributing-docs.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/generator-api.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/index.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/index.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/lifecycle.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/metadata.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/overrides/main.html +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/robots.txt +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/shared-storage.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/tutorial/index.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/tutorial/table.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/docs/vgi-logo.png +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/calc_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/filter_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/row_count_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/examples/sum_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/mkdocs.yml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/scripts/measure_startup.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/test-data/generate.sh +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_required_field_filter_paths.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/client/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/client/test_cli.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/conftest.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/landing/_checker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_auth.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_docstrings.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_exceptions.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_function_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_landing_conformance.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_metadata.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_otel.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_serve.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_union_argument.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/test_worker_page.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_duckdb.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/argument_spec.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/arguments.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/auth.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/client/client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/exceptions.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/function_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/invocation.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/logging_config.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/meta_worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/metadata.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/otel.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/py.typed +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/scalar_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/schema_utils.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/secret_service.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/serve.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/transactor/client.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/transactor/server.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/vgi/worker.py +0 -0
- {vgi_python-0.12.0 → vgi_python-0.14.0}/wrangler.jsonc +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
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
|
|
@@ -162,7 +162,7 @@ Requires-Dist: httpx>=0.24
|
|
|
162
162
|
Requires-Dist: platformdirs
|
|
163
163
|
Requires-Dist: pyarrow
|
|
164
164
|
Requires-Dist: typer>=0.9
|
|
165
|
-
Requires-Dist: vgi-rpc>=0.
|
|
165
|
+
Requires-Dist: vgi-rpc>=0.24.0
|
|
166
166
|
Provides-Extra: azure
|
|
167
167
|
Requires-Dist: azure-identity>=1.16.0; extra == 'azure'
|
|
168
168
|
Requires-Dist: pymssql>=2.3.0; extra == 'azure'
|
|
@@ -73,6 +73,11 @@ if [ "$TRANSPORT" = "http" ]; then
|
|
|
73
73
|
# * buffer_input/sizes.test — input buffering semantics differ over HTTP
|
|
74
74
|
# (same known limitation). (scale.test_slow is a .test_slow file and is
|
|
75
75
|
# never staged below, which only finds *.test.)
|
|
76
|
+
# cache/revalidate.test now runs on http too: HTTP conditional revalidation is
|
|
77
|
+
# implemented (C++ /init-request validators + vgi-rpc >=0.24.0 surfacing them to
|
|
78
|
+
# the producer's first process()). It needs a community vgi extension carrying
|
|
79
|
+
# that C++ change; if the http lane fails on it, the community extension predates
|
|
80
|
+
# the change and needs republishing.
|
|
76
81
|
EXTRA_SKIP=(
|
|
77
82
|
-not -name 'projection_pushdown_repro.test'
|
|
78
83
|
-not -name 'dynamic_filter.test'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "vgi-python"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.14.0"
|
|
4
4
|
description = "Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
keywords = [
|
|
@@ -40,7 +40,7 @@ dependencies = [
|
|
|
40
40
|
"pyarrow",
|
|
41
41
|
"typer>=0.9",
|
|
42
42
|
"platformdirs",
|
|
43
|
-
"vgi-rpc>=0.
|
|
43
|
+
"vgi-rpc>=0.24.0",
|
|
44
44
|
"httpx>=0.24",
|
|
45
45
|
]
|
|
46
46
|
|
|
@@ -33,6 +33,15 @@ _EXEMPTIONS: dict[str, str] = {
|
|
|
33
33
|
"lifecycle/schema/table surfaces are mirrored by test_attach.py, "
|
|
34
34
|
"test_table.py, test_view.py, and test_macro.py."
|
|
35
35
|
),
|
|
36
|
+
"cache": (
|
|
37
|
+
"The table-function result cache lives entirely in the C++ extension "
|
|
38
|
+
"(key/eligibility, in-memory + content-addressed disk tiers, serve/"
|
|
39
|
+
"capture, conditional revalidation). The Python worker's only role is "
|
|
40
|
+
"advertising vgi.cache.* metadata + answering 304 not_modified, which is "
|
|
41
|
+
"unit-tested by tests/test_cache_control.py (rendering, the emit merge "
|
|
42
|
+
"path, ProcessParams.if_none_match threading, and the revalidatable "
|
|
43
|
+
"fixture's 304 behavior)."
|
|
44
|
+
),
|
|
36
45
|
"filter_pushdown": (
|
|
37
46
|
"Per-type filter-pushdown coverage is mirrored by tests/test_filter_pushdown.py "
|
|
38
47
|
"and tests/test_filter_pushdown_extension.py, which drive the same predicate "
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
{
|
|
4
4
|
"attach_options": [],
|
|
5
5
|
"counts": {
|
|
6
|
-
"functions":
|
|
6
|
+
"functions": 183,
|
|
7
7
|
"schemas": 2,
|
|
8
|
-
"tables":
|
|
8
|
+
"tables": 58,
|
|
9
9
|
"views": 3
|
|
10
10
|
},
|
|
11
11
|
"data_version_spec": null,
|
|
@@ -14,9 +14,80 @@
|
|
|
14
14
|
"name": "example",
|
|
15
15
|
"schemas": [
|
|
16
16
|
{
|
|
17
|
+
"doc": "Example tables backed by functions",
|
|
17
18
|
"functions": [],
|
|
18
19
|
"name": "data",
|
|
19
20
|
"tables": [
|
|
21
|
+
{
|
|
22
|
+
"cols": 1,
|
|
23
|
+
"comment": "Large multi-batch cacheable result (advertises vgi.cache.ttl)",
|
|
24
|
+
"name": "cache_big"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"cols": 1,
|
|
28
|
+
"comment": "Cacheable first batch then an unresolvable external-location pointer",
|
|
29
|
+
"name": "cache_external_fail"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"cols": 1,
|
|
33
|
+
"comment": "Cacheable sequence with static filter pushdown (filter_bytes keying)",
|
|
34
|
+
"name": "cache_filtered"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"cols": 3,
|
|
38
|
+
"comment": "Multi-column cacheable result (projection-coverage reuse)",
|
|
39
|
+
"name": "cache_multicol"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"cols": 1,
|
|
43
|
+
"comment": "Advertises vgi.cache.no_store — must never be cached",
|
|
44
|
+
"name": "cache_no_store"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"cols": 1,
|
|
48
|
+
"comment": "One-row cacheable result whose value changes per real invocation",
|
|
49
|
+
"name": "cache_nonce"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"cols": 1,
|
|
53
|
+
"comment": "Multi-worker order-sensitive cacheable result (batch_index; parallel capture, ordered serve)",
|
|
54
|
+
"name": "cache_ordered"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"cols": 1,
|
|
58
|
+
"comment": "Cacheable first batch then a mid-stream error (never-partial check)",
|
|
59
|
+
"name": "cache_poison"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"cols": 3,
|
|
63
|
+
"comment": "Projection-pushdown cacheable result (SELECT a vs b are distinct keys)",
|
|
64
|
+
"name": "cache_projection"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"cols": 1,
|
|
68
|
+
"comment": "Always-revalidate result (304 not_modified reuses stored bytes)",
|
|
69
|
+
"name": "cache_revalidatable"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"cols": 2,
|
|
73
|
+
"comment": "Advertises vgi.cache.scope=transaction",
|
|
74
|
+
"name": "cache_scoped_txn"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"cols": 1,
|
|
78
|
+
"comment": "Version-specific cacheable rows (AT-keyed cache isolation)",
|
|
79
|
+
"name": "cache_versioned"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"cols": 1,
|
|
83
|
+
"comment": "Cacheable result echoing the caller's auth principal (identity-scoped)",
|
|
84
|
+
"name": "cache_whoami"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"cols": 1,
|
|
88
|
+
"comment": "Cacheable 10-row result advertising vgi.cache.ttl",
|
|
89
|
+
"name": "cacheable_numbers"
|
|
90
|
+
},
|
|
20
91
|
{
|
|
21
92
|
"cols": 1,
|
|
22
93
|
"comment": "Function-backed table with inlined cardinality (10000 rows)",
|
|
@@ -248,6 +319,7 @@
|
|
|
248
319
|
]
|
|
249
320
|
},
|
|
250
321
|
{
|
|
322
|
+
"doc": "Example functions for testing VGI",
|
|
251
323
|
"functions": [
|
|
252
324
|
{
|
|
253
325
|
"args": [
|
|
@@ -1254,6 +1326,226 @@
|
|
|
1254
1326
|
"name": "broken_partition_values_no_annotation",
|
|
1255
1327
|
"type": "table"
|
|
1256
1328
|
},
|
|
1329
|
+
{
|
|
1330
|
+
"args": [
|
|
1331
|
+
{
|
|
1332
|
+
"desc": "Number of rows to generate",
|
|
1333
|
+
"name": "rows",
|
|
1334
|
+
"type": "int64"
|
|
1335
|
+
}
|
|
1336
|
+
],
|
|
1337
|
+
"doc": "Emits `rows` int64 rows (positional arg); cacheable — scaling bench fixture",
|
|
1338
|
+
"name": "cache_bench",
|
|
1339
|
+
"type": "table"
|
|
1340
|
+
},
|
|
1341
|
+
{
|
|
1342
|
+
"args": [
|
|
1343
|
+
{
|
|
1344
|
+
"default": "5000",
|
|
1345
|
+
"desc": "Number of rows to generate",
|
|
1346
|
+
"name": "rows",
|
|
1347
|
+
"named": true,
|
|
1348
|
+
"type": "int64"
|
|
1349
|
+
}
|
|
1350
|
+
],
|
|
1351
|
+
"doc": "Emits many small batches totaling `rows` rows; cacheable",
|
|
1352
|
+
"name": "cache_big",
|
|
1353
|
+
"type": "table"
|
|
1354
|
+
},
|
|
1355
|
+
{
|
|
1356
|
+
"args": [],
|
|
1357
|
+
"doc": "Cacheable first batch then an unresolvable external-location pointer",
|
|
1358
|
+
"name": "cache_external_fail",
|
|
1359
|
+
"type": "table"
|
|
1360
|
+
},
|
|
1361
|
+
{
|
|
1362
|
+
"args": [
|
|
1363
|
+
{
|
|
1364
|
+
"default": "100",
|
|
1365
|
+
"desc": "Total number of rows to generate",
|
|
1366
|
+
"name": "rows",
|
|
1367
|
+
"named": true,
|
|
1368
|
+
"type": "int64"
|
|
1369
|
+
}
|
|
1370
|
+
],
|
|
1371
|
+
"doc": "Cacheable sequence with static filter pushdown (filter_bytes keying)",
|
|
1372
|
+
"name": "cache_filtered",
|
|
1373
|
+
"type": "table"
|
|
1374
|
+
},
|
|
1375
|
+
{
|
|
1376
|
+
"args": [
|
|
1377
|
+
{
|
|
1378
|
+
"desc": "Total number of rows to generate",
|
|
1379
|
+
"name": "rows",
|
|
1380
|
+
"type": "int64"
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
"default": "20000",
|
|
1384
|
+
"desc": "Rows per partition",
|
|
1385
|
+
"name": "chunk_size",
|
|
1386
|
+
"named": true,
|
|
1387
|
+
"type": "int64"
|
|
1388
|
+
}
|
|
1389
|
+
],
|
|
1390
|
+
"doc": "Parallel batch_index-tagged cacheable sequence; cache serve reassembles order",
|
|
1391
|
+
"name": "cache_interleaved",
|
|
1392
|
+
"type": "table"
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"args": [
|
|
1396
|
+
{
|
|
1397
|
+
"default": "10",
|
|
1398
|
+
"desc": "Number of rows to generate",
|
|
1399
|
+
"name": "n",
|
|
1400
|
+
"named": true,
|
|
1401
|
+
"type": "int64"
|
|
1402
|
+
}
|
|
1403
|
+
],
|
|
1404
|
+
"doc": "Emits n rows but advertises no_store (never cached)",
|
|
1405
|
+
"name": "cache_no_store",
|
|
1406
|
+
"type": "table"
|
|
1407
|
+
},
|
|
1408
|
+
{
|
|
1409
|
+
"args": [],
|
|
1410
|
+
"doc": "Emits one row with a per-invocation nonce; cacheable",
|
|
1411
|
+
"name": "cache_nonce",
|
|
1412
|
+
"type": "table"
|
|
1413
|
+
},
|
|
1414
|
+
{
|
|
1415
|
+
"args": [
|
|
1416
|
+
{
|
|
1417
|
+
"default": "1000",
|
|
1418
|
+
"desc": "Rows per partition",
|
|
1419
|
+
"name": "chunk_size",
|
|
1420
|
+
"named": true,
|
|
1421
|
+
"type": "int64"
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"default": "200000",
|
|
1425
|
+
"desc": "Total number of rows to generate",
|
|
1426
|
+
"name": "rows",
|
|
1427
|
+
"named": true,
|
|
1428
|
+
"type": "int64"
|
|
1429
|
+
}
|
|
1430
|
+
],
|
|
1431
|
+
"doc": "Multi-worker order-sensitive cacheable sequence (batch_index); order-preservation cache fixture",
|
|
1432
|
+
"name": "cache_ordered",
|
|
1433
|
+
"type": "table"
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
"args": [
|
|
1437
|
+
{
|
|
1438
|
+
"desc": "Total number of rows to generate",
|
|
1439
|
+
"name": "rows",
|
|
1440
|
+
"type": "int64"
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"default": "24000",
|
|
1444
|
+
"desc": "Rows per output batch",
|
|
1445
|
+
"name": "batch_size",
|
|
1446
|
+
"named": true,
|
|
1447
|
+
"type": "int64"
|
|
1448
|
+
}
|
|
1449
|
+
],
|
|
1450
|
+
"doc": "Multi-worker cacheable sequence (one substream per worker); parallel-capture fixture",
|
|
1451
|
+
"name": "cache_parallel",
|
|
1452
|
+
"type": "table"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"args": [
|
|
1456
|
+
{
|
|
1457
|
+
"desc": "Rows per country partition",
|
|
1458
|
+
"name": "rows_per_country",
|
|
1459
|
+
"type": "int64"
|
|
1460
|
+
}
|
|
1461
|
+
],
|
|
1462
|
+
"doc": "Cacheable single-value-partitioned result (partition_values through the spill blob)",
|
|
1463
|
+
"name": "cache_partitioned",
|
|
1464
|
+
"type": "table"
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"args": [],
|
|
1468
|
+
"doc": "Cacheable first batch then a mid-stream error (never-partial check)",
|
|
1469
|
+
"name": "cache_poison",
|
|
1470
|
+
"type": "table"
|
|
1471
|
+
},
|
|
1472
|
+
{
|
|
1473
|
+
"args": [],
|
|
1474
|
+
"doc": "3-column projection-pushdown generator; cacheable",
|
|
1475
|
+
"name": "cache_projection",
|
|
1476
|
+
"type": "table"
|
|
1477
|
+
},
|
|
1478
|
+
{
|
|
1479
|
+
"args": [],
|
|
1480
|
+
"doc": "Emits one nonce row; always-revalidate (304 not_modified)",
|
|
1481
|
+
"name": "cache_revalidatable",
|
|
1482
|
+
"type": "table"
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"args": [
|
|
1486
|
+
{
|
|
1487
|
+
"default": "10",
|
|
1488
|
+
"desc": "Number of rows to generate",
|
|
1489
|
+
"name": "n",
|
|
1490
|
+
"named": true,
|
|
1491
|
+
"type": "int64"
|
|
1492
|
+
}
|
|
1493
|
+
],
|
|
1494
|
+
"doc": "Emits n rows and advertises scope=transaction",
|
|
1495
|
+
"name": "cache_scoped_txn",
|
|
1496
|
+
"type": "table"
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
"args": [
|
|
1500
|
+
{
|
|
1501
|
+
"desc": "Total number of rows to generate",
|
|
1502
|
+
"name": "rows",
|
|
1503
|
+
"type": "int64"
|
|
1504
|
+
}
|
|
1505
|
+
],
|
|
1506
|
+
"doc": "Nested/wide/NULL cacheable result (STRUCT/LIST/DECIMAL/TIMESTAMP + NULLs)",
|
|
1507
|
+
"name": "cache_types",
|
|
1508
|
+
"type": "table"
|
|
1509
|
+
},
|
|
1510
|
+
{
|
|
1511
|
+
"args": [
|
|
1512
|
+
{
|
|
1513
|
+
"desc": "Data version, resolved from the AT clause by the catalog",
|
|
1514
|
+
"name": "version",
|
|
1515
|
+
"type": "int64"
|
|
1516
|
+
}
|
|
1517
|
+
],
|
|
1518
|
+
"doc": "Version-specific rows; cacheable (AT-keyed)",
|
|
1519
|
+
"name": "cache_versioned_scan",
|
|
1520
|
+
"type": "table"
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
"args": [],
|
|
1524
|
+
"doc": "Emits the caller's auth principal; cacheable (identity-scoped)",
|
|
1525
|
+
"name": "cache_whoami",
|
|
1526
|
+
"type": "table"
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
"args": [
|
|
1530
|
+
{
|
|
1531
|
+
"default": "10",
|
|
1532
|
+
"desc": "Number of rows to generate",
|
|
1533
|
+
"name": "n",
|
|
1534
|
+
"named": true,
|
|
1535
|
+
"type": "int64"
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"default": "300",
|
|
1539
|
+
"desc": "Cache TTL in seconds",
|
|
1540
|
+
"name": "ttl",
|
|
1541
|
+
"named": true,
|
|
1542
|
+
"type": "int64"
|
|
1543
|
+
}
|
|
1544
|
+
],
|
|
1545
|
+
"doc": "Emits n rows [0..n) and advertises a cache TTL",
|
|
1546
|
+
"name": "cacheable_numbers",
|
|
1547
|
+
"type": "table"
|
|
1548
|
+
},
|
|
1257
1549
|
{
|
|
1258
1550
|
"args": [],
|
|
1259
1551
|
"doc": "Scan colors table (ENUM column)",
|