vgi-python 0.43.0__tar.gz → 0.43.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.43.0 → vgi_python-0.43.1}/CLAUDE.md +7 -3
- {vgi_python-0.43.0 → vgi_python-0.43.1}/PKG-INFO +1 -1
- {vgi_python-0.43.0 → vgi_python-0.43.1}/ci/run-integration.sh +8 -1
- {vgi_python-0.43.0 → vgi_python-0.43.1}/pyproject.toml +1 -1
- {vgi_python-0.43.0 → vgi_python-0.43.1}/scripts/run_all_tests.sh +4 -1
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_table_function_early_close.py +44 -10
- {vgi_python-0.43.0 → vgi_python-0.43.1}/uv.lock +1 -1
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/client.py +20 -3
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.dockerignore +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.gitattributes +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/dependabot.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/workflows/release.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.github/workflows/tailnet-integration.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.gitignore +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.python-version +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/.vale.ini +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/LICENSE +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/PROTOCOL.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/README.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/SECURITY.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/ci/README.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/README.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/and-too-few-children.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/delta-required-upsert.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/nested-runtime-filter.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/remove-with-expression.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/required-runtime-filter.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/snapshot-nonzero-revision.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/unknown-document-property.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/unknown-node.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/advisory-upsert-delta.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/boolean-column-predicate.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/empty-snapshot.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/nested-required-snapshot.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/remove-delta.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/runtime-filter-snapshot.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/filter-v2.schema.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/generate_runtime.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/manifest.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/run_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-multiply/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-multiply/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-multiply/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-negate/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-negate/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-negate/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-subtract/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-subtract/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-subtract/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/cast-integer-to-double/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/cast-integer-to-double/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/cast-integer-to-double/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-distinct_from/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-distinct_from/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-distinct_from/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-distinct_from/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-not_distinct_from/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/delta-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-atomic-multi-update/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/delta-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-1.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-2.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-upsert-remove-stale/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-cast-type-not-null/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-cast-type-not-null/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-index/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-index/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-name/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-name/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-contextual-cast-without-session/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-contextual-cast-without-session/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-duplicate-predicate-id/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-duplicate-predicate-id/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-index/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-index/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-index/join-keys-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-name/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-name/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-external-column-name/join-keys-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-field-non-struct/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-field-non-struct/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-in-payload-not-list/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-in-payload-not-list/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-in-payload-null-list/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-in-payload-null-list/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-invalid-overload/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-invalid-overload/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-missing-literal/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-missing-literal/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-non-boolean-root/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-non-boolean-root/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-unknown-standard-function/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-unknown-standard-function/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/external-in-nonzero-column/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/external-in-nonzero-column/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/external-in-nonzero-column/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/external-in-nonzero-column/join-keys-0.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/external-in-nonzero-column/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-contains/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-contains/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-contains/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-ends-with/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-ends-with/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-ends-with/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-list-contains/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-list-contains/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-list-contains/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-starts-with/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-starts-with/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-starts-with/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-empty/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-empty/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-empty/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-empty/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-with-null/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-with-null/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-with-null/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/in-with-null/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-not-null/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-not-null/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-not-null/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-not-null/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-null/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-null/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-null/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/is-null/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-and/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-and/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-and/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-not/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-not/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-not/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-or/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-or/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/kleene-or/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nan-comparison/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nan-comparison/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nan-comparison/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/negative-zero-membership/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/negative-zero-membership/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/negative-zero-membership/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nested-null-propagation/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nested-null-propagation/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/nested-null-propagation/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-empty/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-empty/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-empty/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-empty/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-with-null/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-with-null/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-with-null/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/not-in-with-null/worker-expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/session-integer-division/expected.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/session-integer-division/filter.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/session-integer-division/input.arrow +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime-manifest.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/arguments.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/auth.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/catalogs.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/client.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/exceptions.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/filters.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/functions.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/http.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/metadata.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/observability.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/storage.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/transactor.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/api/worker.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/argument-serialization.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/logo.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/social-card.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/assets/video-thumbnail.jpg +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/authentication.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/catalog-interface.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/cli.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/column-statistics.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/concepts/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/contributing-docs.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/generator-api.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/global-functions.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/iroh.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/how-to/tailnet.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/lifecycle.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/metadata.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/overrides/main.html +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-attach-tickets.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-catalog-query-pushdown-design.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-duckdb-filter-adapter.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-filter-encoding-v2-spec.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-opaque-data-sealing.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-protocol-proposed-changes.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/protocol/vgi-runtime-filter-artifacts.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/robots.txt +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/shared-storage.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/tutorial/index.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/tutorial/table.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/docs/vgi-logo.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/cache_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/calc_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/copy_format_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/filter_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/row_count_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/examples/sum_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/identity.png +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/mkdocs.yml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/scripts/gen_attach_ticket_vectors.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/scripts/hosted_protocols_conformance.sh +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/scripts/measure_startup.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/scripts/regen_generated.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/test-data/generate.sh +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/_hosted_protocols_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_catalog_contents.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_client_load_catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_aggregate_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_batch_metadata_callback.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_bind_and_join_keys.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_cli.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_copy_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_http_response_budget.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_iroh_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_scan_branches_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_split_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_time_travel_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_splits.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/conftest.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/bad_version.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/generate.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/manifest.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/stale_anchor.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/truncated.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/valid_sealed.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/data/split_tokens/valid_unsealed.bin +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/sdk_conformance/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/sdk_conformance/test_opaque_sealing.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/sdk_conformance/test_opaque_sealing_stdio.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/test_blended_exchange.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/table_in_out/test_table_buffering_empty_input.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/Dockerfile +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/compose.yaml +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/probe.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/run.sh +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/test_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/tailnet/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_attach_ticket.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_auth.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_cache_control.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_client_oauth.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_client_reflection.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_codegen_request_inventory.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_docstrings.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_dynamic_filter_http_turns.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_exceptions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_v2.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_v2_builder.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_v2_runtime_corpus.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_filter_v2_spec_schema.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_fixture_catalog_parity.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_shape_mismatch.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_protocol_name.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_csharp.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_go_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_java_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_java_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_rust_request_builders.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_rust_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_rust_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_generated_ts_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_grant_auth.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_hosted_protocols.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_import_side_effects.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_landing_discovery.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_launch_transport.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_metadata.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_otel.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_schema_paths_v2.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_serve.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_signing_key.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_split_token.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_subprocess_transport.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_union_argument.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_wire_record_schema_parity.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_worker_page.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/test_write_results.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_duckdb.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_redact.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/attach_ticket_vectors.json +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/catalog_contents.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/identity_fixture.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/secret_cache.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/splits.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/ticket_probe.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/argument_spec.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/arguments.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/attach_header.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/attach_ticket.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/auth.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/cache_control.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/aggregate.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/client/errors.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_protocol_name.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/csharp_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/csharp_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/go_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/java_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/java_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/rust_request_builders.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/rust_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/rust_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/codegen/ts_types.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/exceptions.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/filter_v2.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/filter_v2_builder.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/function_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/landing.html +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/vgi-client.js +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/invocation.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/logging_config.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/meta_worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/metadata.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/otel.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/profiling.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/protocol.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/py.typed +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/rpc_server.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/scalar_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/schema_path.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/schema_utils.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/secret_service.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/serve.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/split_token.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/table_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/transactor/client.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/transactor/server.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/worker.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/vgi/write_results.py +0 -0
- {vgi_python-0.43.0 → vgi_python-0.43.1}/wrangler.jsonc +0 -0
|
@@ -96,9 +96,13 @@ e.g. to pass an unusual filter to `unittest`):
|
|
|
96
96
|
```bash
|
|
97
97
|
cd ~/Development/vgi
|
|
98
98
|
VGI_TEST_WORKER="uv run --project ~/Development/vgi-python vgi-fixture-worker" \
|
|
99
|
-
./build/release/test/unittest "test/sql/integration/*"
|
|
99
|
+
./build/release/test/unittest --test-config test/configs/no_error_skip.json "test/sql/integration/*"
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
+
Always pass `--test-config test/configs/no_error_skip.json` to `unittest`: without
|
|
103
|
+
it, DuckDB's runner reports any error mentioning "HTTP" or "Unable to connect" as
|
|
104
|
+
a SKIP and exits 0.
|
|
105
|
+
|
|
102
106
|
**HTTP transport** (worker as an HTTP server):
|
|
103
107
|
```bash
|
|
104
108
|
cd ~/Development/vgi
|
|
@@ -142,7 +146,7 @@ with elapsed milliseconds. This helps identify slow queries and bottlenecks.
|
|
|
142
146
|
# Timing output goes to stderr, grep for the bracket-prefixed lines:
|
|
143
147
|
cd ~/Development/vgi
|
|
144
148
|
VGI_TEST_WORKER="uv run --project ~/Development/vgi-python vgi-fixture-worker" \
|
|
145
|
-
./build/release/test/unittest "test/sql/integration/table/writable_table*" \
|
|
149
|
+
./build/release/test/unittest --test-config test/configs/no_error_skip.json "test/sql/integration/table/writable_table*" \
|
|
146
150
|
2>&1 | grep "^\[stmt\|^\[query" | sort -t']' -k2 -rn
|
|
147
151
|
```
|
|
148
152
|
|
|
@@ -166,7 +170,7 @@ uv run coverage run -m pytest --no-cov -n auto
|
|
|
166
170
|
# 3. Run DuckDB subprocess integration tests with coverage
|
|
167
171
|
cd ~/Development/vgi
|
|
168
172
|
VGI_TEST_WORKER="/tmp/vgi-coverage-worker.sh" \
|
|
169
|
-
./build/release/test/unittest "test/sql/integration/*"
|
|
173
|
+
./build/release/test/unittest --test-config test/configs/no_error_skip.json "test/sql/integration/*"
|
|
170
174
|
|
|
171
175
|
# 4. Run DuckDB HTTP integration tests with coverage
|
|
172
176
|
cd ~/Development/vgi
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.43.
|
|
3
|
+
Version: 0.43.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
|
|
@@ -336,6 +336,13 @@ EOF
|
|
|
336
336
|
"$HAYBARN_UNITTEST" "test/_warm.test" >/dev/null 2>&1 || echo "::warning::extension warm step did not fully succeed"
|
|
337
337
|
rm -f "$STAGE/test/_warm.test"
|
|
338
338
|
|
|
339
|
+
# DuckDB's sqllogictest runner, given no --test-config, turns any error whose
|
|
340
|
+
# text contains "HTTP" or "Unable to connect" into a SKIP and exits 0. Over the
|
|
341
|
+
# http transport every worker error carries "HTTP", so real failures read as
|
|
342
|
+
# skips. The extension ships a config that disables that; every run below uses it.
|
|
343
|
+
TEST_CONFIG="$VGI_SRC/test/configs/no_error_skip.json"
|
|
344
|
+
[ -f "$TEST_CONFIG" ] || { echo "::error::missing $TEST_CONFIG (VGI_REF predates it?)"; exit 1; }
|
|
345
|
+
|
|
339
346
|
# Run the lane, streaming the native sqllogictest report (a progress line per
|
|
340
347
|
# file + the final "All tests passed (.. N assertions ..)" summary). Out-of-scope
|
|
341
348
|
# tests were dropped at staging; any failed assertion exits non-zero.
|
|
@@ -366,7 +373,7 @@ run_unittest() {
|
|
|
366
373
|
# `set +e` rather than `|| true`: the latter runs before PIPESTATUS is read and
|
|
367
374
|
# overwrites it with true's 0, silently swallowing every real test failure.
|
|
368
375
|
set +e
|
|
369
|
-
"$HAYBARN_UNITTEST" "$@" 2>&1 | tee "$log"
|
|
376
|
+
"$HAYBARN_UNITTEST" --test-config "$TEST_CONFIG" "$@" 2>&1 | tee "$log"
|
|
370
377
|
rc="${PIPESTATUS[0]}"
|
|
371
378
|
set -e
|
|
372
379
|
if grep -q 'due to a fatal error condition' "$log"; then
|
|
@@ -204,11 +204,14 @@ run_integration_job() {
|
|
|
204
204
|
return 2
|
|
205
205
|
;;
|
|
206
206
|
esac
|
|
207
|
+
# --test-config: without it the runner turns any error mentioning "HTTP" or
|
|
208
|
+
# "Unable to connect" into a SKIP, so a failure can pass as a skip.
|
|
207
209
|
# `~[.]` excludes Catch2-hidden tests, i.e. `*.test_slow` files. The
|
|
208
210
|
# launcher keeps one Python worker warm while unittest advances serially,
|
|
209
211
|
# avoiding both repeated startup and cross-test state contention.
|
|
210
212
|
VGI_TEST_WORKER="$worker" \
|
|
211
|
-
timeout 600 ./build/release/test/unittest
|
|
213
|
+
timeout 600 ./build/release/test/unittest --test-config test/configs/no_error_skip.json \
|
|
214
|
+
"test/sql/integration/*" "~[.]" >"$INT_LOG" 2>&1
|
|
212
215
|
local rc=$?
|
|
213
216
|
summarize_integration "$INT_LOG" "$INT_SUMMARY" "$INT_FAILURES"
|
|
214
217
|
echo "exit=$rc" >>"$INT_SUMMARY"
|
|
@@ -6,8 +6,15 @@
|
|
|
6
6
|
thread. Before the fix, closing the generator early left those threads reading,
|
|
7
7
|
and the ``Client.stop()`` that followed drained the same stream from the main
|
|
8
8
|
thread: two readers on one pipe, and whichever missed the end of stream blocked
|
|
9
|
-
forever (roughly one run in five). Each case here repeats the early close
|
|
10
|
-
|
|
9
|
+
forever (roughly one run in five). Each case here repeats the early close, each
|
|
10
|
+
repetition under its own watchdog, then checks the pooled worker still serves a
|
|
11
|
+
complete scan.
|
|
12
|
+
|
|
13
|
+
The watchdog bounds one scan, not the loop: a hang never finishes, so any bound
|
|
14
|
+
far above a healthy scan catches it, while a bound on the whole loop measures
|
|
15
|
+
throughput. A 24-way scan respawns the workers the pool could not keep idle
|
|
16
|
+
(``max_idle=8``), ~1.2 s idle and up to ~5.4 s with the host's CPUs
|
|
17
|
+
oversubscribed twice over; 25 of those overran a 120 s whole-loop budget.
|
|
11
18
|
"""
|
|
12
19
|
|
|
13
20
|
from __future__ import annotations
|
|
@@ -23,7 +30,8 @@ from vgi.arguments import Arguments
|
|
|
23
30
|
from vgi.client.client import Client, _default_pool
|
|
24
31
|
|
|
25
32
|
_ITERATIONS = 25
|
|
26
|
-
|
|
33
|
+
# Per scan. A healthy one takes ~1.5 s idle, ~6 s at worst under 2x CPU oversubscription.
|
|
34
|
+
_WATCHDOG_SECONDS = 60.0
|
|
27
35
|
|
|
28
36
|
|
|
29
37
|
def _run_with_watchdog(body: Callable[[], None]) -> None:
|
|
@@ -45,12 +53,11 @@ def _run_with_watchdog(body: Callable[[], None]) -> None:
|
|
|
45
53
|
|
|
46
54
|
|
|
47
55
|
def _close_after_first_batch(function_name: str, arguments: Arguments) -> None:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
scan.close()
|
|
56
|
+
with Client(SUBPROCESS_FIXTURE_WORKER, pool=_default_pool) as client:
|
|
57
|
+
scan = client.table_function(function_name=function_name, schema_path=["main"], arguments=arguments)
|
|
58
|
+
first = next(scan)
|
|
59
|
+
assert first.num_rows > 0
|
|
60
|
+
scan.close()
|
|
54
61
|
|
|
55
62
|
|
|
56
63
|
def _full_scan_still_works() -> None:
|
|
@@ -77,5 +84,32 @@ def _full_scan_still_works() -> None:
|
|
|
77
84
|
)
|
|
78
85
|
def test_early_close_does_not_hang(function_name: str, arguments: Arguments) -> None:
|
|
79
86
|
"""A scan closed after its first batch stops cleanly, and the worker pool stays usable."""
|
|
80
|
-
|
|
87
|
+
for _ in range(_ITERATIONS):
|
|
88
|
+
_run_with_watchdog(lambda: _close_after_first_batch(function_name, arguments))
|
|
81
89
|
_run_with_watchdog(_full_scan_still_works)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def test_secondary_workers_stop_concurrently(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
93
|
+
"""Secondary workers stop in parallel, and every one is stopped even when one fails.
|
|
94
|
+
|
|
95
|
+
Each stop can wait ~0.2 s on a process exit (its own, or a pool eviction's),
|
|
96
|
+
so stopping a 24-way scan's workers in turn spent ~4 s closing it.
|
|
97
|
+
"""
|
|
98
|
+
client = Client(SUBPROCESS_FIXTURE_WORKER, pool=_default_pool)
|
|
99
|
+
workers = [object() for _ in range(8)]
|
|
100
|
+
stopped: list[object] = []
|
|
101
|
+
barrier = threading.Barrier(len(workers), timeout=10)
|
|
102
|
+
|
|
103
|
+
def fake_stop(worker: object, *, force: bool = False) -> int:
|
|
104
|
+
barrier.wait() # breaks (and fails the test) unless all stops run at once
|
|
105
|
+
stopped.append(worker)
|
|
106
|
+
if worker is workers[3]:
|
|
107
|
+
raise RuntimeError("stop failed")
|
|
108
|
+
return 0
|
|
109
|
+
|
|
110
|
+
monkeypatch.setattr(client, "_stop_worker", fake_stop)
|
|
111
|
+
client._additional_workers = workers # type: ignore[assignment]
|
|
112
|
+
with pytest.raises(RuntimeError, match="stop failed"):
|
|
113
|
+
client._close_secondary_workers()
|
|
114
|
+
assert sorted(map(id, stopped)) == sorted(map(id, workers))
|
|
115
|
+
assert client._additional_workers == []
|
|
@@ -90,6 +90,7 @@ import subprocess
|
|
|
90
90
|
import sys
|
|
91
91
|
import threading
|
|
92
92
|
from collections.abc import Callable, Generator, Iterator, Sequence
|
|
93
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
93
94
|
from contextlib import AbstractContextManager
|
|
94
95
|
from dataclasses import dataclass, field, replace
|
|
95
96
|
from queue import Queue
|
|
@@ -1460,13 +1461,29 @@ class Client(CatalogClientMixin, AggregateClientMixin):
|
|
|
1460
1461
|
def _close_secondary_workers(self, *, force: bool = False) -> None:
|
|
1461
1462
|
"""Close and stop all secondary (additional) workers.
|
|
1462
1463
|
|
|
1464
|
+
The workers are stopped concurrently. Each stop can wait on a process
|
|
1465
|
+
exit: a direct worker's own, or, for a pooled worker, that of the idle
|
|
1466
|
+
worker the pool evicts to make room once it is past ``max_idle``. A
|
|
1467
|
+
graceful exit is mostly interpreter teardown (~0.2 s), so stopping a
|
|
1468
|
+
24-way scan one worker at a time spent ~4 s here.
|
|
1469
|
+
|
|
1463
1470
|
Args:
|
|
1464
1471
|
force: Kill direct subprocess workers rather than closing them gracefully
|
|
1465
1472
|
(see ``_stop_worker``).
|
|
1473
|
+
|
|
1474
|
+
Raises:
|
|
1475
|
+
Exception: The first error a stop raised, once every worker has been
|
|
1476
|
+
stopped.
|
|
1466
1477
|
"""
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1478
|
+
workers, self._additional_workers = self._additional_workers, []
|
|
1479
|
+
if len(workers) <= 1:
|
|
1480
|
+
for worker in workers:
|
|
1481
|
+
self._stop_worker(worker, force=force)
|
|
1482
|
+
return
|
|
1483
|
+
with ThreadPoolExecutor(max_workers=len(workers), thread_name_prefix="vgi-stop-worker") as executor:
|
|
1484
|
+
futures = [executor.submit(self._stop_worker, worker, force=force) for worker in workers]
|
|
1485
|
+
for future in futures:
|
|
1486
|
+
future.result()
|
|
1470
1487
|
|
|
1471
1488
|
def _join_threads(self, threads: list[threading.Thread]) -> None:
|
|
1472
1489
|
"""Wait for all threads to complete with timeout.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/negative/unknown-node.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/empty-snapshot.json
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/cases/positive/remove-delta.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-add/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-negate/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/arithmetic-negate/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-eq/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ge/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-gt/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-le/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-lt/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/comparison-ne/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/delta-0.arrow
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/delta-empty-noop/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/expected.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/empty-snapshot/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-index/input.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-name/filter.arrow
RENAMED
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/error-column-name/input.arrow
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.43.0 → vgi_python-0.43.1}/conformance/filter-v2/runtime/function-contains/filter.arrow
RENAMED
|
File without changes
|