vgi-python 0.45.0__tar.gz → 0.46.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.45.0 → vgi_python-0.46.1}/.github/workflows/integration.yml +13 -23
- {vgi_python-0.45.0 → vgi_python-0.46.1}/PKG-INFO +3 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/ci/README.md +43 -38
- {vgi_python-0.45.0 → vgi_python-0.46.1}/ci/run-integration.sh +27 -4
- vgi_python-0.46.1/docs/catalog_publication.md +171 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/packages/vgi-fixtures/pyproject.toml +1 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/pyproject.toml +4 -1
- vgi_python-0.46.1/scripts/catalog_publication_fixture.py +7 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_catalog_contents.py +46 -31
- vgi_python-0.46.1/tests/catalog/test_catalog_publication.py +643 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_declarative.py +1 -1
- vgi_python-0.46.1/tests/catalog/test_function_info_binary_dictionary.py +117 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_serialization.py +5 -5
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_protocol_version.py +3 -3
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_records.py +3 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_rust_types.py +1 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_ts_types.py +5 -4
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_http_demo_storage.py +6 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/uv.lock +7 -3
- vgi_python-0.46.1/vgi/_test_fixtures/catalog_publication.py +107 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/narrow_bind/worker.py +0 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/projection_repro/worker.py +0 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/writable/worker.py +0 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/catalog_interface.py +13 -6
- vgi_python-0.46.1/vgi/catalog/contents_codec.py +223 -0
- vgi_python-0.46.1/vgi/catalog/contract.py +22 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/descriptors.py +3 -1
- vgi_python-0.46.1/vgi/catalog/snapshot.py +680 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/catalog_mixin.py +7 -24
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/client.py +14 -16
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_protocol_version.py +5 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_records.py +5 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/csharp_types.py +7 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/go_schemas.py +5 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/java_registry.py +3 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/java_types.py +19 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/rust_schemas.py +5 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/ts_client.py +11 -8
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/ts_registry.py +2 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/ts_schemas.py +5 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/ts_types.py +2 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/demo_storage.py +2 -2
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/protocol.py +21 -27
- vgi_python-0.46.1/vgi/protocol_version.txt +1 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/worker.py +116 -72
- vgi_python-0.45.0/vgi/protocol_version.txt +0 -1
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.dockerignore +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.gitattributes +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/dependabot.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/workflows/release.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.github/workflows/tailnet-integration.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.gitignore +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.python-version +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/.vale.ini +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/CLAUDE.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/LICENSE +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/PROTOCOL.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/README.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/SECURITY.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/README.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/and-too-few-children.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/delta-required-upsert.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/nested-runtime-filter.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/remove-with-expression.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/required-runtime-filter.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/snapshot-nonzero-revision.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/unknown-document-property.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/negative/unknown-node.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/advisory-upsert-delta.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/boolean-column-predicate.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/empty-snapshot.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/nested-required-snapshot.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/remove-delta.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/cases/positive/runtime-filter-snapshot.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/filter-v2.schema.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/generate_runtime.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/manifest.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/run_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-add/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-add/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-add/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-multiply/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-multiply/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-multiply/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-negate/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-negate/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-negate/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-subtract/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-subtract/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/arithmetic-subtract/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/cast-integer-to-double/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/cast-integer-to-double/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/cast-integer-to-double/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-distinct_from/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-distinct_from/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-distinct_from/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-distinct_from/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-eq/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-eq/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-eq/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-eq/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ge/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ge/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ge/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ge/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-gt/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-gt/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-gt/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-gt/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-le/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-le/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-le/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-le/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-lt/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-lt/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-lt/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-lt/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ne/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ne/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ne/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-ne/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/delta-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-empty-noop/delta-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-empty-noop/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-empty-noop/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-empty-noop/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-1.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-2.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/empty-snapshot/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/empty-snapshot/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/empty-snapshot/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/empty-snapshot/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-cast-type-not-null/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-cast-type-not-null/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-column-index/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-column-index/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-column-name/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-column-name/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-contextual-cast-without-session/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-contextual-cast-without-session/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-duplicate-predicate-id/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-duplicate-predicate-id/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-index/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-index/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-index/join-keys-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-name/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-name/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-external-column-name/join-keys-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-field-non-struct/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-field-non-struct/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-in-payload-not-list/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-in-payload-not-list/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-in-payload-null-list/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-in-payload-null-list/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-invalid-overload/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-invalid-overload/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-missing-literal/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-missing-literal/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-non-boolean-root/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-non-boolean-root/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-unknown-standard-function/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/error-unknown-standard-function/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/external-in-nonzero-column/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/external-in-nonzero-column/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/external-in-nonzero-column/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/external-in-nonzero-column/join-keys-0.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/external-in-nonzero-column/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-contains/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-contains/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-contains/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-ends-with/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-ends-with/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-ends-with/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-list-contains/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-list-contains/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-list-contains/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-starts-with/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-starts-with/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/function-starts-with/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-empty/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-empty/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-empty/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-empty/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-with-null/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-with-null/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-with-null/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/in-with-null/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-not-null/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-not-null/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-not-null/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-not-null/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-null/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-null/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-null/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/is-null/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-and/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-and/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-and/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-not/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-not/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-not/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-or/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-or/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/kleene-or/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nan-comparison/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nan-comparison/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nan-comparison/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/negative-zero-membership/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/negative-zero-membership/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/negative-zero-membership/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nested-null-propagation/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nested-null-propagation/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/nested-null-propagation/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-empty/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-empty/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-empty/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-empty/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-with-null/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-with-null/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-with-null/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/not-in-with-null/worker-expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/session-integer-division/expected.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/session-integer-division/filter.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime/session-integer-division/input.arrow +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/conformance/filter-v2/runtime-manifest.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/arguments.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/auth.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/catalogs.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/client.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/exceptions.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/filters.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/functions.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/http.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/metadata.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/observability.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/storage.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/transactor.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/api/worker.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/argument-serialization.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/logo.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/social-card.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/assets/video-thumbnail.jpg +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/authentication.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/catalog-interface.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/cli.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/column-statistics.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/concepts/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/contributing-docs.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/IMPLEMENTATION.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/README.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/alerts.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/attach-tickets-plan.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/credentials.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/notify.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/prerequisites.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/render.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/reporting-protocols.html +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/reports.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/schedules.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/design/reporting-protocols/sql_tasks.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/generator-api.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/global-functions.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/iroh.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/how-to/tailnet.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/lifecycle.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/metadata.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/overrides/main.html +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-attach-tickets.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-catalog-query-pushdown-design.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-duckdb-filter-adapter.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-filter-encoding-v2-spec.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-opaque-data-sealing.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-protocol-proposed-changes.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-runtime-filter-artifacts.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/protocol/vgi-secrets.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/robots.txt +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/shared-storage.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/tutorial/index.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/tutorial/table.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/docs/vgi-logo.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/cache_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/calc_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/copy_format_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/filter_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/row_count_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/examples/sum_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/identity.png +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/mkdocs.yml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/build_reporting_protocols_html.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/gen_attach_ticket_vectors.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/hosted_protocols_conformance.sh +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/measure_startup.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/regen_generated.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/test-data/generate.sh +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/_hosted_protocols_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_client_load_catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_aggregate_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_batch_metadata_callback.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_bind_and_join_keys.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_cli.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_copy_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_http_response_budget.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_iroh_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_scan_branches_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_split_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_time_travel_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_splits.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/conftest.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/bad_version.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/generate.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/manifest.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/stale_anchor.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/truncated.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/valid_sealed.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/data/split_tokens/valid_unsealed.bin +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/sdk_conformance/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/sdk_conformance/test_opaque_sealing.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/sdk_conformance/test_opaque_sealing_stdio.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/test_blended_exchange.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/table_in_out/test_table_buffering_empty_input.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/Dockerfile +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/compose.yaml +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/probe.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/run.sh +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/test_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/tailnet/worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_attach_ticket.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_auth.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_cache_control.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_client_oauth.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_client_reflection.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_codegen_request_inventory.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_docstrings.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_dynamic_filter_http_turns.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_error_codes.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_exceptions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_v2.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_v2_builder.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_v2_runtime_corpus.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_filter_v2_spec_schema.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_fixture_catalog_parity.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_shape_mismatch.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_storage.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_function_subclass_check.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_protocol_name.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_csharp.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_go_types.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_java_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_java_types.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_rust_request_builders.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_rust_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_grant_auth.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_hosted_protocols.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_import_side_effects.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_landing_discovery.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_launch_transport.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_metadata.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_otel.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_schema_paths_v2.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_serve.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_signing_key.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_split_token.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_subprocess_transport.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_table_function_early_close.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_union_argument.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_wire_record_schema_parity.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_worker_page.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/test_write_results.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_duckdb.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_redact.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/attach_ticket_vectors.json +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/catalog_contents.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/identity_fixture.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/secret_cache.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/splits.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/ticket_probe.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/argument_spec.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/arguments.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/attach_header.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/attach_ticket.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/auth.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/cache_control.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/aggregate.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/client/errors.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/_registry_backend.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_protocol_name.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/csharp_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/csharp_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/go_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/go_types.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/java_schemas.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/rust_registry.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/rust_request_builders.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/codegen/rust_types.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/exceptions.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/filter_v2.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/filter_v2_builder.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/function_storage.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/landing.html +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/vgi-client.js +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/invocation.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/logging_config.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/meta_worker.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/metadata.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/otel.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/profiling.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/py.typed +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/rpc_server.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/scalar_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/schema_path.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/schema_utils.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/secret_service.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/serve.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/split_token.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/table_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/transactor/client.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/transactor/server.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/vgi/write_results.py +0 -0
- {vgi_python-0.45.0 → vgi_python-0.46.1}/wrangler.jsonc +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# Runs the canonical Query-farm/vgi integration sqllogictest suite against the
|
|
2
|
-
# Python example worker on every push / PR.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# + ci/preprocess-require.awk adapt them for the standalone runner. See ci/README.md.
|
|
2
|
+
# Python example worker on every push / PR. The native runner comes from the
|
|
3
|
+
# Query-farm/vgi Actions build of the same commit as the test suite and statically
|
|
4
|
+
# links the matching extension. Public package releases remain separate.
|
|
5
|
+
# ci/run-integration.sh also supports the published standalone runner locally.
|
|
7
6
|
#
|
|
8
7
|
# (The separate ci.yml covers lint / type-check / unit + conformance tests / docs.
|
|
9
8
|
# Those drive the pure-Python in-process Client; this workflow is the only place
|
|
10
|
-
# the worker is exercised through the real
|
|
9
|
+
# the worker is exercised through the real DuckDB extension over the wire.)
|
|
11
10
|
name: Integration suite
|
|
12
11
|
|
|
13
12
|
on:
|
|
@@ -19,20 +18,16 @@ on:
|
|
|
19
18
|
|
|
20
19
|
permissions:
|
|
21
20
|
contents: read
|
|
21
|
+
actions: read
|
|
22
22
|
|
|
23
23
|
concurrency:
|
|
24
24
|
group: integration-${{ github.ref }}
|
|
25
25
|
cancel-in-progress: true
|
|
26
26
|
|
|
27
27
|
env:
|
|
28
|
-
# The
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
# SHA here if/when reproducible, deliberate bumps are wanted (see ci/README.md).
|
|
32
|
-
VGI_REF: main
|
|
33
|
-
# The Haybarn release providing the prebuilt haybarn-unittest binary. Must be
|
|
34
|
-
# ABI-compatible with the community-published vgi extension.
|
|
35
|
-
HAYBARN_RELEASE: haybarn-v1.5.5-rc1
|
|
28
|
+
# The test suite and native Actions artifact must come from this exact ref.
|
|
29
|
+
# The downloader verifies its provenance against the checked-out commit.
|
|
30
|
+
VGI_REF: 3a2249f815ff6e2a8b5289a3e6284326084e3630
|
|
36
31
|
# CI is not a user: its ATTACHes should not land in Query.Farm's adoption data.
|
|
37
32
|
# The vgi extension fires a telemetry event per successful ATTACH, and this
|
|
38
33
|
# suite performs several hundred of them per lane, so opting out keeps the
|
|
@@ -81,18 +76,13 @@ jobs:
|
|
|
81
76
|
- name: Install dependencies (vgi + fixtures + all extras)
|
|
82
77
|
run: uv sync --all-extras --python 3.14
|
|
83
78
|
|
|
84
|
-
- name: Download
|
|
79
|
+
- name: Download the matching native integration runner
|
|
85
80
|
run: |
|
|
86
|
-
|
|
87
|
-
--
|
|
88
|
-
--pattern 'haybarn_unittest-linux-amd64.zip' \
|
|
89
|
-
--output /tmp/haybarn-unittest.zip --clobber
|
|
90
|
-
unzip -o -q /tmp/haybarn-unittest.zip -d /tmp/haybarn-unittest
|
|
91
|
-
UNITTEST=$(find /tmp/haybarn-unittest -name 'haybarn-unittest' -type f | head -1)
|
|
92
|
-
chmod +x "$UNITTEST"
|
|
93
|
-
echo "HAYBARN_UNITTEST=$UNITTEST" >> "$GITHUB_ENV"
|
|
81
|
+
python3 "$VGI_SRC/scripts/ci_fetch_native_runner.py" \
|
|
82
|
+
--source "$VGI_SRC" --output "$RUNNER_TEMP/vgi-native"
|
|
94
83
|
env:
|
|
95
84
|
GH_TOKEN: ${{ github.token }}
|
|
85
|
+
VGI_SRC: ${{ github.workspace }}/vgi-upstream
|
|
96
86
|
|
|
97
87
|
- name: Run integration suite (${{ matrix.lane }})
|
|
98
88
|
run: ci/run-integration.sh
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.46.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
|
|
@@ -189,6 +189,8 @@ Requires-Dist: vgi-rpc[otel]; extra == 'dev'
|
|
|
189
189
|
Requires-Dist: vgi-rpc[sentry]; extra == 'dev'
|
|
190
190
|
Provides-Extra: duckdb
|
|
191
191
|
Requires-Dist: duckdb==1.5.5; extra == 'duckdb'
|
|
192
|
+
Provides-Extra: external
|
|
193
|
+
Requires-Dist: vgi-rpc[external]; extra == 'external'
|
|
192
194
|
Provides-Extra: fixtures
|
|
193
195
|
Requires-Dist: vgi-fixtures; extra == 'fixtures'
|
|
194
196
|
Provides-Extra: granian
|
|
@@ -4,19 +4,18 @@
|
|
|
4
4
|
runs the canonical [Query-farm/vgi](https://github.com/Query-farm/vgi)
|
|
5
5
|
integration sqllogictest suite against this repo's Python example worker on
|
|
6
6
|
every push / PR. The same `.test` files run against the Python, Java, and Go
|
|
7
|
-
ports, so a green run here
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
ports, so a green run here verifies the worker through the native DuckDB
|
|
8
|
+
extension over the wire. The native runner and test suite come from the same
|
|
9
|
+
VGI commit. Public package releases remain separate from this development check.
|
|
10
10
|
|
|
11
11
|
(The separate [`ci.yml`](../.github/workflows/ci.yml) covers lint / mypy / unit
|
|
12
12
|
+ conformance tests / docs / LocalStack S3 offload.)
|
|
13
13
|
|
|
14
14
|
## How it works (no C++ build)
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
installs the **signed** vgi extension from the Haybarn community channel:
|
|
16
|
+
CI downloads the native integration runner built by Query-farm/vgi Actions.
|
|
17
|
+
It links vgi, httpfs, json and parquet, so the worker's wire contract is checked
|
|
18
|
+
against the matching client without waiting for a community extension release.
|
|
20
19
|
|
|
21
20
|
1. **Install the workers** — `uv sync --all-extras` installs the `vgi-fixtures`
|
|
22
21
|
workspace member, which puts the fixture console scripts
|
|
@@ -27,17 +26,27 @@ installs the **signed** vgi extension from the Haybarn community channel:
|
|
|
27
26
|
`--http`, and the launcher's `--unix`, so one install covers every lane.
|
|
28
27
|
2. **Checkout the test suite** — `Query-farm/vgi` at a pinned commit; its
|
|
29
28
|
`test/sql/integration/*.test` files are the suite.
|
|
30
|
-
3. **Download the runner** — `
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
3. **Download the runner** — the pinned checkout's `ci_fetch_native_runner.py`
|
|
30
|
+
retrieves its Actions artifact and checks its provenance against that exact
|
|
31
|
+
source commit. It exports `HAYBARN_UNITTEST`, `HAYBARN_CLI` and
|
|
32
|
+
`RUNNER_LINKS_EXTENSIONS=1` for the next step.
|
|
33
|
+
4. **Stage** — [`run-integration.sh`](run-integration.sh) copies the selected
|
|
34
|
+
tests unchanged when extensions are linked into the runner. Their normal
|
|
35
|
+
`require` gates load linked extensions; unavailable optional extensions keep
|
|
36
|
+
their normal skip behavior.
|
|
37
|
+
5. **Run** — the harness wires the `VGI_*_WORKER` environment variables to the
|
|
38
|
+
`.venv/bin` scripts for the selected transport and executes the suite, with
|
|
39
|
+
`simple_writable` in its own process. Native mode passes `--test-dir` so the
|
|
40
|
+
runner discovers the staged tree instead of its compiled source directory.
|
|
41
|
+
Failed assertions, empty runs, fatal signals and dead shared HTTP workers
|
|
42
|
+
fail the job. The no-error-skip configuration keeps HTTP errors from silently
|
|
43
|
+
skipping tests.
|
|
44
|
+
|
|
45
|
+
For local checks against the published extension, leave
|
|
46
|
+
`RUNNER_LINKS_EXTENSIONS` unset or set it to `0`. This preserves the standalone
|
|
47
|
+
runner path: [`preprocess-require.awk`](preprocess-require.awk) converts
|
|
48
|
+
`require` gates to signed `INSTALL` and `LOAD` statements, and the harness
|
|
49
|
+
warms the community/core extension cache before running.
|
|
41
50
|
|
|
42
51
|
The env wiring mirrors the vgi repo's Makefile `test_subprocess` / `test_shm` /
|
|
43
52
|
`test_launcher` / `test_http` targets — the canonical local way to run this
|
|
@@ -77,9 +86,9 @@ matrix; `stdio` remains available for local compatibility testing:
|
|
|
77
86
|
`test_launcher`), so those tests skip here; run the local stdio lane to cover
|
|
78
87
|
them. One deliberate divergence from `test_launcher`: see
|
|
79
88
|
`filter_echo_partitioned.test` below.
|
|
80
|
-
- **`http`** — the whole suite over the stateless HTTP transport.
|
|
81
|
-
injects `LOAD httpfs` before
|
|
82
|
-
|
|
89
|
+
- **`http`** — the whole suite over the stateless HTTP transport. The native
|
|
90
|
+
runner links httpfs; standalone mode injects `LOAD httpfs` before worker
|
|
91
|
+
attachments.
|
|
83
92
|
|
|
84
93
|
The `simple_writable/*.test` write-path tests (INSERT/UPDATE/DELETE/RETURNING)
|
|
85
94
|
run on **every** lane against `VGI_SIMPLE_WRITABLE_WORKER`
|
|
@@ -147,36 +156,32 @@ even though the fixture (`vgi-fixture-bad-enum-worker`) is installed.
|
|
|
147
156
|
```bash
|
|
148
157
|
uv sync --all-extras
|
|
149
158
|
VGI_SRC=~/Development/vgi \
|
|
150
|
-
HAYBARN_UNITTEST
|
|
159
|
+
HAYBARN_UNITTEST=~/Development/vgi/build/release/test/unittest \
|
|
160
|
+
RUNNER_LINKS_EXTENSIONS=1 \
|
|
151
161
|
TRANSPORT=stdio \
|
|
152
162
|
ci/run-integration.sh
|
|
153
163
|
```
|
|
154
164
|
|
|
155
|
-
|
|
165
|
+
To check the published extension instead, download `haybarn-unittest` for your
|
|
166
|
+
platform from a compatible Haybarn release and leave `RUNNER_LINKS_EXTENSIONS=0`:
|
|
156
167
|
|
|
157
168
|
```bash
|
|
158
169
|
gh release download "$HAYBARN_RELEASE" --repo Query-farm-haybarn/haybarn \
|
|
159
170
|
--pattern 'haybarn_unittest-*.zip'
|
|
160
171
|
```
|
|
161
172
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
`scripts/run_all_tests.sh` as described in `CLAUDE.md`; this harness exists for
|
|
165
|
-
CI, where building the extension from source is impractical.
|
|
173
|
+
The vgi repo's own targets (`make test_subprocess`, `make test_http`, …) and
|
|
174
|
+
`scripts/run_all_tests.sh` remain available as described in `CLAUDE.md`.
|
|
166
175
|
|
|
167
176
|
## Version pins (and their coupling)
|
|
168
177
|
|
|
169
|
-
|
|
178
|
+
The workflow's `VGI_REF` pins the test suite and the native Actions artifact:
|
|
170
179
|
|
|
171
180
|
| Pin | What | Why |
|
|
172
181
|
|-----|------|-----|
|
|
173
|
-
| `VGI_REF` | the `Query-farm/vgi`
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
worker against what users can install today. If `VGI_REF` points at a commit
|
|
180
|
-
whose tests exercise a protocol feature the published extension doesn't yet ship
|
|
181
|
-
(or vice-versa), that test can fail or skip — bump `VGI_REF` deliberately and
|
|
182
|
-
re-validate against the current community extension.
|
|
182
|
+
| `VGI_REF` | the `Query-farm/vgi` commit supplying the tests and native runner | the downloader requires an artifact built from that exact commit |
|
|
183
|
+
|
|
184
|
+
The optional standalone mode still installs the currently published community
|
|
185
|
+
extension. Use a compatible test suite and worker when checking that release;
|
|
186
|
+
an unreleased minor wire revision requires the matching native development
|
|
187
|
+
runner. Changing the CI pin does not publish an extension or an SDK package.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
# Copyright 2025, 2026 Query Farm LLC - https://query.farm
|
|
3
3
|
#
|
|
4
4
|
# Run the canonical Query-farm/vgi integration sqllogictest suite against the
|
|
5
|
-
# Python example worker, using a
|
|
6
|
-
#
|
|
5
|
+
# Python example worker, using either a native runner with linked extensions or
|
|
6
|
+
# standalone `haybarn-unittest` and the signed community extension. See ci/README.md.
|
|
7
7
|
#
|
|
8
8
|
# Ported from vgi-go's harness. The Python differences:
|
|
9
9
|
# * The "worker binaries" are console scripts installed into the project venv
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
# Optional:
|
|
30
30
|
# BIN_DIR dir holding the fixture console scripts (default: $REPO/.venv/bin)
|
|
31
31
|
# TRANSPORT stdio | shm | launch | http (default: launch)
|
|
32
|
+
# RUNNER_LINKS_EXTENSIONS 1 for a native runner linking vgi/httpfs/json/parquet;
|
|
33
|
+
# 0 for the published standalone runner (default)
|
|
32
34
|
# VGI_RPC_SHM_SIZE_BYTES shm side-channel segment size (the shm lane)
|
|
33
35
|
# STAGE scratch dir for the preprocessed test tree (default: mktemp)
|
|
34
36
|
set -euo pipefail
|
|
@@ -41,6 +43,7 @@ REPO="$(cd "$HERE/.." && pwd)"
|
|
|
41
43
|
BIN_DIR="${BIN_DIR:-$REPO/.venv/bin}"
|
|
42
44
|
STAGE="${STAGE:-$(mktemp -d)}"
|
|
43
45
|
TRANSPORT="${TRANSPORT:-launch}"
|
|
46
|
+
RUNNER_LINKS_EXTENSIONS="${RUNNER_LINKS_EXTENSIONS:-0}"
|
|
44
47
|
INTEGRATION="$VGI_SRC/test/sql/integration"
|
|
45
48
|
[ -d "$INTEGRATION" ] || { echo "::error::no test/sql/integration under VGI_SRC=$VGI_SRC"; exit 1; }
|
|
46
49
|
|
|
@@ -118,7 +121,11 @@ mkdir -p "$STAGE/test/sql/integration"
|
|
|
118
121
|
-not -name 'nested_type_combinations.test' \
|
|
119
122
|
"${EXTRA_SKIP[@]}" | while read -r f; do
|
|
120
123
|
mkdir -p "$STAGE/test/sql/integration/$(dirname "$f")"
|
|
121
|
-
|
|
124
|
+
if [ "$RUNNER_LINKS_EXTENSIONS" = "1" ]; then
|
|
125
|
+
cp "$f" "$STAGE/test/sql/integration/$f"
|
|
126
|
+
else
|
|
127
|
+
awk -v http="$AWK_HTTP" -f "$HERE/preprocess-require.awk" "$f" > "$STAGE/test/sql/integration/$f"
|
|
128
|
+
fi
|
|
122
129
|
done )
|
|
123
130
|
|
|
124
131
|
# Some integration cases package an executable from the upstream support tree.
|
|
@@ -310,6 +317,9 @@ esac
|
|
|
310
317
|
|
|
311
318
|
cd "$STAGE"
|
|
312
319
|
|
|
320
|
+
if [ "$RUNNER_LINKS_EXTENSIONS" = "1" ]; then
|
|
321
|
+
echo "Using extensions linked into the matching native runner."
|
|
322
|
+
else
|
|
313
323
|
echo "Warming the extension cache (vgi from community, deps from core) ..."
|
|
314
324
|
mkdir -p "$STAGE/test"
|
|
315
325
|
# FORCE INSTALL vgi re-downloads the currently-published community build,
|
|
@@ -335,6 +345,7 @@ INSTALL spatial FROM core;
|
|
|
335
345
|
EOF
|
|
336
346
|
"$HAYBARN_UNITTEST" "test/_warm.test" >/dev/null 2>&1 || echo "::warning::extension warm step did not fully succeed"
|
|
337
347
|
rm -f "$STAGE/test/_warm.test"
|
|
348
|
+
fi
|
|
338
349
|
|
|
339
350
|
# DuckDB's sqllogictest runner, given no --test-config, turns any error whose
|
|
340
351
|
# text contains "HTTP" or "Unable to connect" into a SKIP and exits 0. Over the
|
|
@@ -343,6 +354,14 @@ rm -f "$STAGE/test/_warm.test"
|
|
|
343
354
|
TEST_CONFIG="$VGI_SRC/test/configs/no_error_skip.json"
|
|
344
355
|
[ -f "$TEST_CONFIG" ] || { echo "::error::missing $TEST_CONFIG (VGI_REF predates it?)"; exit 1; }
|
|
345
356
|
|
|
357
|
+
# Native unittest defaults to its compiled source directory even after `cd`.
|
|
358
|
+
# Select the staged tree explicitly so discovery respects the exclusions above
|
|
359
|
+
# and spawned workers resolve relative fixture paths from the same directory.
|
|
360
|
+
RUNNER_ARGS=()
|
|
361
|
+
if [ "$RUNNER_LINKS_EXTENSIONS" = "1" ]; then
|
|
362
|
+
RUNNER_ARGS=(--test-dir "$STAGE")
|
|
363
|
+
fi
|
|
364
|
+
|
|
346
365
|
# Run the lane, streaming the native sqllogictest report (a progress line per
|
|
347
366
|
# file + the final "All tests passed (.. N assertions ..)" summary). Out-of-scope
|
|
348
367
|
# tests were dropped at staging; any failed assertion exits non-zero.
|
|
@@ -373,7 +392,7 @@ run_unittest() {
|
|
|
373
392
|
# `set +e` rather than `|| true`: the latter runs before PIPESTATUS is read and
|
|
374
393
|
# overwrites it with true's 0, silently swallowing every real test failure.
|
|
375
394
|
set +e
|
|
376
|
-
"$HAYBARN_UNITTEST" --test-config "$TEST_CONFIG" "$@" 2>&1 | tee "$log"
|
|
395
|
+
"$HAYBARN_UNITTEST" "${RUNNER_ARGS[@]}" --test-config "$TEST_CONFIG" "$@" 2>&1 | tee "$log"
|
|
377
396
|
rc="${PIPESTATUS[0]}"
|
|
378
397
|
set -e
|
|
379
398
|
if grep -q 'due to a fatal error condition' "$log"; then
|
|
@@ -382,6 +401,10 @@ run_unittest() {
|
|
|
382
401
|
"otherwise have passed. This is invisible to the exit code by construction."
|
|
383
402
|
rc=1
|
|
384
403
|
fi
|
|
404
|
+
if grep -Eq 'No tests ran|No test cases matched' "$log"; then
|
|
405
|
+
echo "::error::the runner did not execute the selected tests"
|
|
406
|
+
rc=1
|
|
407
|
+
fi
|
|
385
408
|
rm -f "$log"
|
|
386
409
|
return "$rc"
|
|
387
410
|
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Batched catalog contents and reusable publications
|
|
2
|
+
|
|
3
|
+
VGI wire revision **2.2.0** retains the `vgi.v2` route and replaces
|
|
4
|
+
`catalog_contents` with six catalog-wide Arrow IPC streams: schemas, tables,
|
|
5
|
+
views, functions, macros and indexes. Each stream can contain multiple batches.
|
|
6
|
+
Null means an empty category. Function and macro subtype fields remain intact.
|
|
7
|
+
Existing schema-level RPCs retain their previous collection encoding.
|
|
8
|
+
|
|
9
|
+
Function metadata stores `arguments`, `output_schema` and
|
|
10
|
+
`parameter_default_values` as `dictionary<int32, binary>` columns. Repeated
|
|
11
|
+
serialized schemas and typed defaults share dictionary entries by their byte
|
|
12
|
+
content. Python callers continue to use bytes for schemas and an optional
|
|
13
|
+
`RecordBatch` for defaults. Dictionary replacements across record batches are
|
|
14
|
+
supported; values remain opaque binary data rather than text.
|
|
15
|
+
Single-object and schema-level function RPCs use these same updated rows.
|
|
16
|
+
|
|
17
|
+
`SchemaInfo` no longer contains attachment data on the wire. Existing Python
|
|
18
|
+
authors may still pass `attach_opaque_data=` to its constructor during migration;
|
|
19
|
+
the argument is discarded. Use `CatalogAttachResult.attach_opaque_data` for
|
|
20
|
+
subsequent requests. Worker functions still receive their attachment state.
|
|
21
|
+
|
|
22
|
+
Every minor wire revision is an explicit contract boundary. The server checks
|
|
23
|
+
major and minor exactly, so clients and workers must both use 2.2. A patch bump
|
|
24
|
+
does not permit schema changes. Serving 2.1 and 2.2 during migration requires
|
|
25
|
+
separate deployment URLs or an explicit compatibility implementation.
|
|
26
|
+
|
|
27
|
+
## Enable publication
|
|
28
|
+
|
|
29
|
+
Publication is opt-in through `CatalogInterface.catalog_snapshot_policy`.
|
|
30
|
+
Ordinary delivery and the existing frozen-catalog response cache remain the
|
|
31
|
+
default. Published delivery uses the existing vgi-rpc `ExternalRef` mechanism;
|
|
32
|
+
clients resolve the external object on all transports, including subprocess.
|
|
33
|
+
|
|
34
|
+
Install `vgi-python[external]` on publishing workers and clients that resolve
|
|
35
|
+
publications; add `http` when serving or connecting over HTTP, for example
|
|
36
|
+
`pip install 'vgi-python[http,external]'`. The `external` extra supplies the RPC
|
|
37
|
+
HTTP downloader, retry and compression dependencies. Supply your own configured
|
|
38
|
+
S3 client and its SDK when using the S3 repository.
|
|
39
|
+
|
|
40
|
+
The catalog implementation uses APIs available in published **vgi-rpc 0.50.0**.
|
|
41
|
+
An isolated check against that release passed 157 functional catalog, client,
|
|
42
|
+
serialization, binary dictionary and publication tests. The package retains its
|
|
43
|
+
declared RPC minimum of 0.52.0 for Identity.v2 support; catalog publication does
|
|
44
|
+
not introduce a dependency on unpublished RPC APIs.
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
from vgi.catalog.snapshot import (
|
|
48
|
+
CatalogSnapshotPolicy,
|
|
49
|
+
S3CatalogPublicationRepository,
|
|
50
|
+
SnapshotIdentity,
|
|
51
|
+
)
|
|
52
|
+
from vgi_rpc.external import Compression
|
|
53
|
+
|
|
54
|
+
# s3 is your configured boto3-compatible S3/R2 client. The client must support
|
|
55
|
+
# conditional PutObject with IfNoneMatch and IfMatch.
|
|
56
|
+
repository = S3CatalogPublicationRepository(
|
|
57
|
+
s3,
|
|
58
|
+
bucket="catalog-snapshots",
|
|
59
|
+
profile="production-r2-gzip",
|
|
60
|
+
url_ttl_seconds=3600,
|
|
61
|
+
retention_seconds=86400,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
class MyCatalog(ExistingCatalog):
|
|
65
|
+
catalog_snapshot_policy = CatalogSnapshotPolicy(
|
|
66
|
+
delivery="published",
|
|
67
|
+
repository=repository,
|
|
68
|
+
identity=lambda request: SnapshotIdentity(
|
|
69
|
+
catalog_namespace="my-catalog",
|
|
70
|
+
source_revision=DEPLOYMENT_REVISION,
|
|
71
|
+
catalog_version=request.catalog_version,
|
|
72
|
+
# Omit this for the safe attachment-local default. Sharing requires
|
|
73
|
+
# an explicit guarantee that metadata is identical for this scope.
|
|
74
|
+
visibility_scope="public-default-options",
|
|
75
|
+
),
|
|
76
|
+
compression=Compression(algorithm="gzip"),
|
|
77
|
+
)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The identity hook must be cheap and must change `source_revision` whenever
|
|
81
|
+
metadata changes. A dynamic catalog can use a schema generation rather than a
|
|
82
|
+
deployment revision. Include options, resolved implementation/data versions,
|
|
83
|
+
tenant or principal, and any other metadata visibility differences in its scope.
|
|
84
|
+
Do not put credentials into names or scope strings. Omitting `visibility_scope`
|
|
85
|
+
isolates publications by a hash of the attachment envelope. Catalog version zero
|
|
86
|
+
still requires a meaningful source revision.
|
|
87
|
+
|
|
88
|
+
An optional `validator(request) -> str | None` can answer a matching ETag before
|
|
89
|
+
repository access or inventory construction. Every request unwraps and authorizes
|
|
90
|
+
its attachment first, even on a cache hit. The framework also checks that version
|
|
91
|
+
and source identity remain unchanged while it builds a publication.
|
|
92
|
+
|
|
93
|
+
## Publication lifecycle
|
|
94
|
+
|
|
95
|
+
The framework writes a complete unary RPC envelope with one `result: binary`
|
|
96
|
+
row. That binary contains the catalog response and its six nested streams.
|
|
97
|
+
The stored object is compressed according to the policy and includes a mandatory
|
|
98
|
+
SHA-256 over the raw envelope. Before committing its manifest, the framework
|
|
99
|
+
fetches the actual HTTP URL and validates the digest, envelope, nested schemas,
|
|
100
|
+
all rows/batches, schema membership, subtype fields and metadata equality.
|
|
101
|
+
Raw and stored byte limits apply before upload and during readback, including
|
|
102
|
+
when the caller supplies a custom fetch policy.
|
|
103
|
+
|
|
104
|
+
The repository stores small trusted manifests separately from immutable objects.
|
|
105
|
+
Keys include routing name, major/minor wire revision, generated canonical catalog
|
|
106
|
+
contract hash, codec revision, namespace, source revision, visibility scope,
|
|
107
|
+
catalog version, and storage/compression profile. A new worker process looks up
|
|
108
|
+
the manifest before collecting metadata, then validates it with one HTTP fetch.
|
|
109
|
+
A warm hit performs no inventory build, serialization, compression, upload or
|
|
110
|
+
object GET. A client receiving the pointer still downloads the result as needed.
|
|
111
|
+
|
|
112
|
+
`S3CatalogPublicationRepository` uses conditional manifest writes and tombstones
|
|
113
|
+
for invalidation. It can re-sign a retained object without rebuilding it.
|
|
114
|
+
Configure object lifecycle rules to retain objects for at least the declared
|
|
115
|
+
retention interval; keep manifest retention separate. Signed URLs in manifests
|
|
116
|
+
are credentials, so the manifest store must be access controlled. Newly changed
|
|
117
|
+
retrieval URLs are validated before serving them.
|
|
118
|
+
|
|
119
|
+
`MemoryCatalogPublicationRepository` supports a supplied RPC uploader for local
|
|
120
|
+
use. It requires an explicit URL lifetime or stable-location declaration.
|
|
121
|
+
It does not provide persistence across process restarts. A process coordinates
|
|
122
|
+
one build per key; conditional repository commit makes separate publishers
|
|
123
|
+
converge but can permit duplicate initial uploads across processes. Storage
|
|
124
|
+
lifecycle rules should collect unused losing uploads.
|
|
125
|
+
|
|
126
|
+
The manager bounds its in-memory manifest cache. URL or object-retention expiry
|
|
127
|
+
causes renewal or rebuilding. Recovery of a corrupt or missing object
|
|
128
|
+
conditionally invalidates that manifest and attempts a fresh publication.
|
|
129
|
+
Publication errors fail the RPC by default. Set
|
|
130
|
+
`on_publication_failure="ordinary"` to explicitly permit a newly validated
|
|
131
|
+
ordinary full response when publication fails.
|
|
132
|
+
|
|
133
|
+
Workers expose `warm_catalog_contents(attach_opaque_data)`,
|
|
134
|
+
`import_catalog_publication(attach_opaque_data, manifest)` and
|
|
135
|
+
`invalidate_catalog_publication(attach_opaque_data, manifest_id)` for authorized
|
|
136
|
+
operational use. Import uses the same HTTP validation as recovery. A failed client
|
|
137
|
+
download does not automatically notify the worker; use conditional invalidation
|
|
138
|
+
to repair a known bad publication without deleting a concurrent replacement.
|
|
139
|
+
|
|
140
|
+
## Validation
|
|
141
|
+
|
|
142
|
+
Run the focused Python checks with the project environment on `PATH`:
|
|
143
|
+
|
|
144
|
+
```sh
|
|
145
|
+
uv run pytest tests/catalog/test_catalog_contents.py \
|
|
146
|
+
tests/catalog/test_catalog_publication.py \
|
|
147
|
+
tests/catalog/test_client_load_catalog.py tests/catalog/test_serialization.py
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The publication tests use real HTTP object retrieval with uncompressed, gzip and
|
|
151
|
+
zstd results. They exercise restart recovery, singleflight, default attachment
|
|
152
|
+
isolation, corrupt publication, explicit fallback, authentication before cached
|
|
153
|
+
delivery, caps, generation changes, manifest import and conditional invalidation.
|
|
154
|
+
The S3 fixture verifies discovery and conditional writes across repository
|
|
155
|
+
instances. Configure a real S3/R2 bucket and deployment CORS before production
|
|
156
|
+
rollout; the in-memory conditional object fixture does not validate a vendor's
|
|
157
|
+
credentials, CORS settings or lifecycle configuration.
|
|
158
|
+
|
|
159
|
+
The installable native/browser fixture is:
|
|
160
|
+
|
|
161
|
+
```sh
|
|
162
|
+
python -m vgi._test_fixtures.catalog_publication
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
It accepts ordinary fixture worker options, including `--http`. Only
|
|
166
|
+
`contents_probe` uses publication; other standard fixture catalogs retain their
|
|
167
|
+
normal behavior. Set `VGI_CATALOG_PUBLICATION_PORT` to expose the local object
|
|
168
|
+
server at a predictable port; `/stats` reports uploads and object GETs. Its CORS
|
|
169
|
+
headers and preflight support permit browser conformance tests. This fixture is
|
|
170
|
+
intended for local testing and its object storage lasts only for the worker's
|
|
171
|
+
lifetime.
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# and the conformance suite import it by its normal `vgi._test_fixtures` path.
|
|
9
9
|
[project]
|
|
10
10
|
name = "vgi-fixtures"
|
|
11
|
-
version = "0.
|
|
11
|
+
version = "0.46.1"
|
|
12
12
|
description = "Example/test VGI worker modules and entry points (not for production use)"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
# Local copy of the repo-root LICENSE (kept in sync): the build can't reach
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "vgi-python"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.46.1"
|
|
4
4
|
description = "Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
keywords = [
|
|
@@ -58,6 +58,9 @@ dependencies = [
|
|
|
58
58
|
haybarn = ["haybarn==1.5.5rc1"]
|
|
59
59
|
duckdb = ["duckdb==1.5.5"]
|
|
60
60
|
http = ["vgi-rpc[http]"]
|
|
61
|
+
# Publishing and resolving immutable external catalog results needs the RPC
|
|
62
|
+
# download/compression dependencies on every transport, including subprocess.
|
|
63
|
+
external = ["vgi-rpc[external]"]
|
|
61
64
|
iroh = ["vgi-rpc[http,iroh]"]
|
|
62
65
|
# transport="launch": vgi_rpc.launcher imports filelock unconditionally at
|
|
63
66
|
# module level, which lives behind vgi-rpc's own `cli` extra (alongside
|