vgi-python 0.43.0__tar.gz → 0.44.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (725) hide show
  1. {vgi_python-0.43.0 → vgi_python-0.44.0}/CLAUDE.md +7 -3
  2. {vgi_python-0.43.0 → vgi_python-0.44.0}/PKG-INFO +2 -2
  3. {vgi_python-0.43.0 → vgi_python-0.44.0}/ci/run-integration.sh +8 -1
  4. vgi_python-0.44.0/docs/api/exceptions.md +35 -0
  5. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/catalog-interface.md +29 -26
  6. vgi_python-0.44.0/docs/design/reporting-protocols/IMPLEMENTATION.md +198 -0
  7. vgi_python-0.44.0/docs/design/reporting-protocols/README.md +401 -0
  8. vgi_python-0.44.0/docs/design/reporting-protocols/alerts.md +245 -0
  9. vgi_python-0.44.0/docs/design/reporting-protocols/attach-tickets-plan.md +203 -0
  10. vgi_python-0.44.0/docs/design/reporting-protocols/credentials.md +177 -0
  11. vgi_python-0.44.0/docs/design/reporting-protocols/notify.md +105 -0
  12. vgi_python-0.44.0/docs/design/reporting-protocols/prerequisites.md +370 -0
  13. vgi_python-0.44.0/docs/design/reporting-protocols/render.md +60 -0
  14. vgi_python-0.44.0/docs/design/reporting-protocols/reporting-protocols.html +3753 -0
  15. vgi_python-0.44.0/docs/design/reporting-protocols/reports.md +118 -0
  16. vgi_python-0.44.0/docs/design/reporting-protocols/schedules.md +243 -0
  17. vgi_python-0.44.0/docs/design/reporting-protocols/sql_tasks.md +292 -0
  18. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/index.md +2 -1
  19. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-catalog-query-pushdown-design.md +396 -139
  20. vgi_python-0.44.0/docs/protocol/vgi-secrets.md +131 -0
  21. {vgi_python-0.43.0 → vgi_python-0.44.0}/mkdocs.yml +1 -0
  22. {vgi_python-0.43.0 → vgi_python-0.44.0}/pyproject.toml +2 -2
  23. vgi_python-0.44.0/scripts/build_reporting_protocols_html.py +154 -0
  24. {vgi_python-0.43.0 → vgi_python-0.44.0}/scripts/regen_generated.py +19 -1
  25. {vgi_python-0.43.0 → vgi_python-0.44.0}/scripts/run_all_tests.sh +4 -1
  26. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_writable_table.py +3 -3
  27. vgi_python-0.44.0/tests/test_error_codes.py +130 -0
  28. vgi_python-0.44.0/tests/test_function_subclass_check.py +151 -0
  29. vgi_python-0.44.0/tests/test_generated_cpp_records.py +125 -0
  30. vgi_python-0.44.0/tests/test_generated_registry.py +176 -0
  31. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_setting_secret_annotations.py +148 -38
  32. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_table_function_early_close.py +44 -10
  33. {vgi_python-0.43.0 → vgi_python-0.44.0}/uv.lock +5 -5
  34. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/dynamic.py +3 -1
  35. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/_common.py +2 -2
  36. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/arguments.py +9 -4
  37. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/attach_option.py +3 -0
  38. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/catalog_interface.py +37 -37
  39. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/aggregate.py +4 -6
  40. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/client.py +20 -3
  41. vgi_python-0.44.0/vgi/codegen/_registry.py +521 -0
  42. vgi_python-0.44.0/vgi/codegen/_registry_backend.py +328 -0
  43. vgi_python-0.44.0/vgi/codegen/cpp_records.py +677 -0
  44. vgi_python-0.44.0/vgi/codegen/cpp_registry.py +414 -0
  45. vgi_python-0.44.0/vgi/codegen/csharp_registry.py +379 -0
  46. vgi_python-0.44.0/vgi/codegen/go_registry.py +578 -0
  47. vgi_python-0.44.0/vgi/codegen/java_registry.py +452 -0
  48. vgi_python-0.44.0/vgi/codegen/rust_registry.py +425 -0
  49. vgi_python-0.44.0/vgi/codegen/ts_registry.py +587 -0
  50. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/exceptions.py +62 -1
  51. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/filter_v2.py +4 -4
  52. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/function.py +14 -0
  53. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/meta_worker.py +12 -11
  54. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/scalar_function.py +12 -22
  55. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/table_function.py +166 -164
  56. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/worker.py +16 -11
  57. vgi_python-0.43.0/docs/api/exceptions.md +0 -8
  58. {vgi_python-0.43.0 → vgi_python-0.44.0}/.dockerignore +0 -0
  59. {vgi_python-0.43.0 → vgi_python-0.44.0}/.gitattributes +0 -0
  60. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/dependabot.yml +0 -0
  61. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
  62. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/workflows/ci.yml +0 -0
  63. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/workflows/docs.yml +0 -0
  64. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/workflows/integration.yml +0 -0
  65. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/workflows/release.yml +0 -0
  66. {vgi_python-0.43.0 → vgi_python-0.44.0}/.github/workflows/tailnet-integration.yml +0 -0
  67. {vgi_python-0.43.0 → vgi_python-0.44.0}/.gitignore +0 -0
  68. {vgi_python-0.43.0 → vgi_python-0.44.0}/.python-version +0 -0
  69. {vgi_python-0.43.0 → vgi_python-0.44.0}/.vale.ini +0 -0
  70. {vgi_python-0.43.0 → vgi_python-0.44.0}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
  71. {vgi_python-0.43.0 → vgi_python-0.44.0}/DOCS_REVIEW_RUBRIC.md +0 -0
  72. {vgi_python-0.43.0 → vgi_python-0.44.0}/DOCS_USABILITY_TEST.md +0 -0
  73. {vgi_python-0.43.0 → vgi_python-0.44.0}/LICENSE +0 -0
  74. {vgi_python-0.43.0 → vgi_python-0.44.0}/PROTOCOL.md +0 -0
  75. {vgi_python-0.43.0 → vgi_python-0.44.0}/README.md +0 -0
  76. {vgi_python-0.43.0 → vgi_python-0.44.0}/RELEASE-RUNBOOK.md +0 -0
  77. {vgi_python-0.43.0 → vgi_python-0.44.0}/SECURITY.md +0 -0
  78. {vgi_python-0.43.0 → vgi_python-0.44.0}/ci/README.md +0 -0
  79. {vgi_python-0.43.0 → vgi_python-0.44.0}/ci/preprocess-require.awk +0 -0
  80. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/README.md +0 -0
  81. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/and-too-few-children.json +0 -0
  82. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/delta-required-upsert.json +0 -0
  83. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/nested-runtime-filter.json +0 -0
  84. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/remove-with-expression.json +0 -0
  85. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/required-runtime-filter.json +0 -0
  86. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/snapshot-nonzero-revision.json +0 -0
  87. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/unknown-document-property.json +0 -0
  88. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/negative/unknown-node.json +0 -0
  89. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/advisory-upsert-delta.json +0 -0
  90. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/boolean-column-predicate.json +0 -0
  91. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/empty-snapshot.json +0 -0
  92. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/nested-required-snapshot.json +0 -0
  93. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/remove-delta.json +0 -0
  94. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/cases/positive/runtime-filter-snapshot.json +0 -0
  95. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/filter-v2.schema.json +0 -0
  96. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/generate_runtime.py +0 -0
  97. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/manifest.json +0 -0
  98. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/run_worker.py +0 -0
  99. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-add/expected.arrow +0 -0
  100. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-add/filter.arrow +0 -0
  101. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-add/input.arrow +0 -0
  102. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-multiply/expected.arrow +0 -0
  103. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-multiply/filter.arrow +0 -0
  104. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-multiply/input.arrow +0 -0
  105. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-negate/expected.arrow +0 -0
  106. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-negate/filter.arrow +0 -0
  107. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-negate/input.arrow +0 -0
  108. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-subtract/expected.arrow +0 -0
  109. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-subtract/filter.arrow +0 -0
  110. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/arithmetic-subtract/input.arrow +0 -0
  111. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/cast-integer-to-double/expected.arrow +0 -0
  112. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/cast-integer-to-double/filter.arrow +0 -0
  113. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/cast-integer-to-double/input.arrow +0 -0
  114. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-distinct_from/expected.arrow +0 -0
  115. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-distinct_from/filter.arrow +0 -0
  116. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-distinct_from/input.arrow +0 -0
  117. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-distinct_from/worker-expected.arrow +0 -0
  118. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-eq/expected.arrow +0 -0
  119. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-eq/filter.arrow +0 -0
  120. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-eq/input.arrow +0 -0
  121. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-eq/worker-expected.arrow +0 -0
  122. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ge/expected.arrow +0 -0
  123. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ge/filter.arrow +0 -0
  124. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ge/input.arrow +0 -0
  125. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ge/worker-expected.arrow +0 -0
  126. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-gt/expected.arrow +0 -0
  127. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-gt/filter.arrow +0 -0
  128. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-gt/input.arrow +0 -0
  129. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-gt/worker-expected.arrow +0 -0
  130. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-le/expected.arrow +0 -0
  131. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-le/filter.arrow +0 -0
  132. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-le/input.arrow +0 -0
  133. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-le/worker-expected.arrow +0 -0
  134. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-lt/expected.arrow +0 -0
  135. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-lt/filter.arrow +0 -0
  136. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-lt/input.arrow +0 -0
  137. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-lt/worker-expected.arrow +0 -0
  138. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ne/expected.arrow +0 -0
  139. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ne/filter.arrow +0 -0
  140. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ne/input.arrow +0 -0
  141. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-ne/worker-expected.arrow +0 -0
  142. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-not_distinct_from/expected.arrow +0 -0
  143. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-not_distinct_from/filter.arrow +0 -0
  144. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-not_distinct_from/input.arrow +0 -0
  145. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/comparison-not_distinct_from/worker-expected.arrow +0 -0
  146. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-atomic-multi-update/delta-0.arrow +0 -0
  147. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-atomic-multi-update/expected.arrow +0 -0
  148. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-atomic-multi-update/filter.arrow +0 -0
  149. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-atomic-multi-update/input.arrow +0 -0
  150. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-empty-noop/delta-0.arrow +0 -0
  151. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-empty-noop/expected.arrow +0 -0
  152. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-empty-noop/filter.arrow +0 -0
  153. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-empty-noop/input.arrow +0 -0
  154. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-0.arrow +0 -0
  155. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-1.arrow +0 -0
  156. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/delta-2.arrow +0 -0
  157. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/expected.arrow +0 -0
  158. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/filter.arrow +0 -0
  159. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/delta-upsert-remove-stale/input.arrow +0 -0
  160. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/empty-snapshot/expected.arrow +0 -0
  161. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/empty-snapshot/filter.arrow +0 -0
  162. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/empty-snapshot/input.arrow +0 -0
  163. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/empty-snapshot/worker-expected.arrow +0 -0
  164. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-cast-type-not-null/filter.arrow +0 -0
  165. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-cast-type-not-null/input.arrow +0 -0
  166. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-column-index/filter.arrow +0 -0
  167. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-column-index/input.arrow +0 -0
  168. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-column-name/filter.arrow +0 -0
  169. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-column-name/input.arrow +0 -0
  170. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-contextual-cast-without-session/filter.arrow +0 -0
  171. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-contextual-cast-without-session/input.arrow +0 -0
  172. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-duplicate-predicate-id/filter.arrow +0 -0
  173. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-duplicate-predicate-id/input.arrow +0 -0
  174. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-index/filter.arrow +0 -0
  175. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-index/input.arrow +0 -0
  176. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-index/join-keys-0.arrow +0 -0
  177. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-name/filter.arrow +0 -0
  178. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-name/input.arrow +0 -0
  179. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-external-column-name/join-keys-0.arrow +0 -0
  180. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-field-non-struct/filter.arrow +0 -0
  181. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-field-non-struct/input.arrow +0 -0
  182. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-in-payload-not-list/filter.arrow +0 -0
  183. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-in-payload-not-list/input.arrow +0 -0
  184. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-in-payload-null-list/filter.arrow +0 -0
  185. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-in-payload-null-list/input.arrow +0 -0
  186. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-invalid-overload/filter.arrow +0 -0
  187. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-invalid-overload/input.arrow +0 -0
  188. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-missing-literal/filter.arrow +0 -0
  189. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-missing-literal/input.arrow +0 -0
  190. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-non-boolean-root/filter.arrow +0 -0
  191. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-non-boolean-root/input.arrow +0 -0
  192. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-unknown-standard-function/filter.arrow +0 -0
  193. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/error-unknown-standard-function/input.arrow +0 -0
  194. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/external-in-nonzero-column/expected.arrow +0 -0
  195. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/external-in-nonzero-column/filter.arrow +0 -0
  196. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/external-in-nonzero-column/input.arrow +0 -0
  197. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/external-in-nonzero-column/join-keys-0.arrow +0 -0
  198. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/external-in-nonzero-column/worker-expected.arrow +0 -0
  199. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-contains/expected.arrow +0 -0
  200. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-contains/filter.arrow +0 -0
  201. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-contains/input.arrow +0 -0
  202. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-ends-with/expected.arrow +0 -0
  203. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-ends-with/filter.arrow +0 -0
  204. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-ends-with/input.arrow +0 -0
  205. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-list-contains/expected.arrow +0 -0
  206. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-list-contains/filter.arrow +0 -0
  207. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-list-contains/input.arrow +0 -0
  208. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-starts-with/expected.arrow +0 -0
  209. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-starts-with/filter.arrow +0 -0
  210. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/function-starts-with/input.arrow +0 -0
  211. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-empty/expected.arrow +0 -0
  212. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-empty/filter.arrow +0 -0
  213. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-empty/input.arrow +0 -0
  214. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-empty/worker-expected.arrow +0 -0
  215. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-with-null/expected.arrow +0 -0
  216. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-with-null/filter.arrow +0 -0
  217. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-with-null/input.arrow +0 -0
  218. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/in-with-null/worker-expected.arrow +0 -0
  219. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-not-null/expected.arrow +0 -0
  220. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-not-null/filter.arrow +0 -0
  221. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-not-null/input.arrow +0 -0
  222. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-not-null/worker-expected.arrow +0 -0
  223. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-null/expected.arrow +0 -0
  224. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-null/filter.arrow +0 -0
  225. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-null/input.arrow +0 -0
  226. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/is-null/worker-expected.arrow +0 -0
  227. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-and/expected.arrow +0 -0
  228. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-and/filter.arrow +0 -0
  229. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-and/input.arrow +0 -0
  230. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-not/expected.arrow +0 -0
  231. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-not/filter.arrow +0 -0
  232. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-not/input.arrow +0 -0
  233. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-or/expected.arrow +0 -0
  234. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-or/filter.arrow +0 -0
  235. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/kleene-or/input.arrow +0 -0
  236. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nan-comparison/expected.arrow +0 -0
  237. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nan-comparison/filter.arrow +0 -0
  238. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nan-comparison/input.arrow +0 -0
  239. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/negative-zero-membership/expected.arrow +0 -0
  240. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/negative-zero-membership/filter.arrow +0 -0
  241. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/negative-zero-membership/input.arrow +0 -0
  242. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nested-null-propagation/expected.arrow +0 -0
  243. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nested-null-propagation/filter.arrow +0 -0
  244. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/nested-null-propagation/input.arrow +0 -0
  245. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-empty/expected.arrow +0 -0
  246. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-empty/filter.arrow +0 -0
  247. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-empty/input.arrow +0 -0
  248. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-empty/worker-expected.arrow +0 -0
  249. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-with-null/expected.arrow +0 -0
  250. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-with-null/filter.arrow +0 -0
  251. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-with-null/input.arrow +0 -0
  252. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/not-in-with-null/worker-expected.arrow +0 -0
  253. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/session-integer-division/expected.arrow +0 -0
  254. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/session-integer-division/filter.arrow +0 -0
  255. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime/session-integer-division/input.arrow +0 -0
  256. {vgi_python-0.43.0 → vgi_python-0.44.0}/conformance/filter-v2/runtime-manifest.json +0 -0
  257. {vgi_python-0.43.0 → vgi_python-0.44.0}/dist-vgi/.gitignore +0 -0
  258. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/aggregate-functions.md +0 -0
  259. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/arguments.md +0 -0
  260. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/auth.md +0 -0
  261. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/catalogs.md +0 -0
  262. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/client.md +0 -0
  263. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/filters.md +0 -0
  264. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/functions.md +0 -0
  265. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/http.md +0 -0
  266. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/index.md +0 -0
  267. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/metadata.md +0 -0
  268. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/observability.md +0 -0
  269. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/storage.md +0 -0
  270. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/transactor.md +0 -0
  271. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/api/worker.md +0 -0
  272. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/argument-serialization.md +0 -0
  273. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/apple-touch-icon.png +0 -0
  274. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/favicon-16x16.png +0 -0
  275. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/favicon-32x32.png +0 -0
  276. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/favicon.ico +0 -0
  277. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/kinds/aggregate.svg +0 -0
  278. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/kinds/buffering.svg +0 -0
  279. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/kinds/scalar.svg +0 -0
  280. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/kinds/table-in-out.svg +0 -0
  281. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/kinds/table.svg +0 -0
  282. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/logo.png +0 -0
  283. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/social-card.png +0 -0
  284. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/assets/video-thumbnail.jpg +0 -0
  285. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/authentication.md +0 -0
  286. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/cli.md +0 -0
  287. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/column-statistics.md +0 -0
  288. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/concepts/index.md +0 -0
  289. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/contributing-docs.md +0 -0
  290. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/filter-pushdown.md +0 -0
  291. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/generator-api.md +0 -0
  292. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/global-functions.md +0 -0
  293. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/catalogs.md +0 -0
  294. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/function-patterns.md +0 -0
  295. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/http-auth.md +0 -0
  296. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/index.md +0 -0
  297. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/iroh.md +0 -0
  298. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/pushdown-and-statistics.md +0 -0
  299. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/state-storage.md +0 -0
  300. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/how-to/tailnet.md +0 -0
  301. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/index.md +0 -0
  302. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/lifecycle.md +0 -0
  303. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/metadata.md +0 -0
  304. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/overrides/main.html +0 -0
  305. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-attach-tickets.md +0 -0
  306. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-duckdb-filter-adapter.md +0 -0
  307. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-filter-encoding-v2-spec.md +0 -0
  308. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-opaque-data-sealing.md +0 -0
  309. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-protocol-proposed-changes.md +0 -0
  310. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/protocol/vgi-runtime-filter-artifacts.md +0 -0
  311. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/robots.txt +0 -0
  312. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/shared-storage.md +0 -0
  313. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/stylesheets/extra.css +0 -0
  314. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/tutorial/index.md +0 -0
  315. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/tutorial/scalar.md +0 -0
  316. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/tutorial/table.md +0 -0
  317. {vgi_python-0.43.0 → vgi_python-0.44.0}/docs/vgi-logo.png +0 -0
  318. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/batch_index_worker.py +0 -0
  319. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/cache_worker.py +0 -0
  320. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/calc_scalar_worker.py +0 -0
  321. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/calc_worker.py +0 -0
  322. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/copy_format_worker.py +0 -0
  323. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/filter_worker.py +0 -0
  324. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/greeting_scalar_worker.py +0 -0
  325. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/row_count_worker.py +0 -0
  326. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/series_streaming_worker.py +0 -0
  327. {vgi_python-0.43.0 → vgi_python-0.44.0}/examples/sum_worker.py +0 -0
  328. {vgi_python-0.43.0 → vgi_python-0.44.0}/identity.png +0 -0
  329. {vgi_python-0.43.0 → vgi_python-0.44.0}/packages/vgi-fixtures/LICENSE +0 -0
  330. {vgi_python-0.43.0 → vgi_python-0.44.0}/packages/vgi-fixtures/README.md +0 -0
  331. {vgi_python-0.43.0 → vgi_python-0.44.0}/packages/vgi-fixtures/docker/Dockerfile +0 -0
  332. {vgi_python-0.43.0 → vgi_python-0.44.0}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
  333. {vgi_python-0.43.0 → vgi_python-0.44.0}/packages/vgi-fixtures/pyproject.toml +0 -0
  334. {vgi_python-0.43.0 → vgi_python-0.44.0}/scripts/gen_attach_ticket_vectors.py +0 -0
  335. {vgi_python-0.43.0 → vgi_python-0.44.0}/scripts/hosted_protocols_conformance.sh +0 -0
  336. {vgi_python-0.43.0 → vgi_python-0.44.0}/scripts/measure_startup.py +0 -0
  337. {vgi_python-0.43.0 → vgi_python-0.44.0}/test-data/generate.sh +0 -0
  338. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/__init__.py +0 -0
  339. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/_hosted_protocols_worker.py +0 -0
  340. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/_http_fixtures.py +0 -0
  341. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/__init__.py +0 -0
  342. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_attach_option.py +0 -0
  343. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_catalog_contents.py +0 -0
  344. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_catalog_interface.py +0 -0
  345. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_client_catalog.py +0 -0
  346. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_client_load_catalog.py +0 -0
  347. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_column_statistics.py +0 -0
  348. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_declarative.py +0 -0
  349. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_example_worker_catalog.py +0 -0
  350. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_integration.py +0 -0
  351. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_required_filters.py +0 -0
  352. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_scan_branches.py +0 -0
  353. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_serialization.py +0 -0
  354. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_setting.py +0 -0
  355. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_storage.py +0 -0
  356. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/catalog/test_time_travel.py +0 -0
  357. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/__init__.py +0 -0
  358. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_aggregate_client.py +0 -0
  359. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_batch_metadata_callback.py +0 -0
  360. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_bind_and_join_keys.py +0 -0
  361. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_broken_pipe.py +0 -0
  362. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_cli.py +0 -0
  363. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_cli_catalog_functions.py +0 -0
  364. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_copy_client.py +0 -0
  365. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_http_response_budget.py +0 -0
  366. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_iroh_client.py +0 -0
  367. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_scan_branches_client.py +0 -0
  368. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_split_client.py +0 -0
  369. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_stop_force.py +0 -0
  370. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_table_column_statistics.py +0 -0
  371. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_time_travel_client.py +0 -0
  372. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/client/test_worker_debug.py +0 -0
  373. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/__init__.py +0 -0
  374. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/_stub.py +0 -0
  375. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/conftest.py +0 -0
  376. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_accumulate.py +0 -0
  377. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_aggregate.py +0 -0
  378. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_attach.py +0 -0
  379. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_bearer_auth.py +0 -0
  380. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_const_param_enforcement.py +0 -0
  381. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_container.py +0 -0
  382. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_copy_from.py +0 -0
  383. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_copy_to.py +0 -0
  384. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_directory_parity.py +0 -0
  385. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_function_inventory.py +0 -0
  386. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_github.py +0 -0
  387. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_http_client.py +0 -0
  388. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_http_external_location.py +0 -0
  389. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_http_upload_url.py +0 -0
  390. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_macro.py +0 -0
  391. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_overload.py +0 -0
  392. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_protocol_inventory.py +0 -0
  393. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_protocol_version.py +0 -0
  394. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_resumable_scan.py +0 -0
  395. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_scalar.py +0 -0
  396. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
  397. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_secret.py +0 -0
  398. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_settings.py +0 -0
  399. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_splits.py +0 -0
  400. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_table.py +0 -0
  401. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_table_in_out.py +0 -0
  402. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_view.py +0 -0
  403. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conformance/test_writable.py +0 -0
  404. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/conftest.py +0 -0
  405. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
  406. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
  407. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
  408. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/bad_version.bin +0 -0
  409. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/generate.py +0 -0
  410. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/manifest.json +0 -0
  411. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
  412. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/stale_anchor.bin +0 -0
  413. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/truncated.bin +0 -0
  414. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/valid_sealed.bin +0 -0
  415. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/data/split_tokens/valid_unsealed.bin +0 -0
  416. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/__init__.py +0 -0
  417. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_bernoulli_function.py +0 -0
  418. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_binary_packet_function.py +0 -0
  419. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_client.py +0 -0
  420. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_conditional_message_function.py +0 -0
  421. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_hash_seed_function.py +0 -0
  422. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_multiply_by_setting_function.py +0 -0
  423. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_multiply_function.py +0 -0
  424. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_random_bytes_function.py +0 -0
  425. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/scalar/test_return_secret_value_function.py +0 -0
  426. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/sdk_conformance/__init__.py +0 -0
  427. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/sdk_conformance/test_opaque_sealing.py +0 -0
  428. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/sdk_conformance/test_opaque_sealing_stdio.py +0 -0
  429. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/__init__.py +0 -0
  430. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/__init__.py +0 -0
  431. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_constant_columns_function.py +0 -0
  432. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_double_sequence_function.py +0 -0
  433. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_exception_function.py +0 -0
  434. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_filter_echo_function.py +0 -0
  435. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_logging_function.py +0 -0
  436. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_nested_sequence_function.py +0 -0
  437. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_partitioned_function.py +0 -0
  438. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_projected_data_function.py +0 -0
  439. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_sequence_function.py +0 -0
  440. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_settings_function.py +0 -0
  441. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_struct_settings_function.py +0 -0
  442. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/generator/test_ten_thousand_function.py +0 -0
  443. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table/test_wide_columns.py +0 -0
  444. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/__init__.py +0 -0
  445. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/__init__.py +0 -0
  446. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
  447. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_echo_function.py +0 -0
  448. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_exception_functions.py +0 -0
  449. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
  450. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
  451. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
  452. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
  453. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/test_blended_exchange.py +0 -0
  454. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/test_blended_metadata.py +0 -0
  455. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/test_client.py +0 -0
  456. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/table_in_out/test_table_buffering_empty_input.py +0 -0
  457. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/Dockerfile +0 -0
  458. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/__init__.py +0 -0
  459. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/compose.yaml +0 -0
  460. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/probe.py +0 -0
  461. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/run.sh +0 -0
  462. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/test_worker.py +0 -0
  463. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/tailnet/worker.py +0 -0
  464. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_access_log_audit.py +0 -0
  465. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_aggregate_function.py +0 -0
  466. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_argument_spec.py +0 -0
  467. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_attach_ticket.py +0 -0
  468. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_auth.py +0 -0
  469. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_bind_exceptions.py +0 -0
  470. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_bind_request_at_clause.py +0 -0
  471. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_bound_storage_conformance.py +0 -0
  472. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_cache_control.py +0 -0
  473. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_call_state_attach.py +0 -0
  474. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_catalog_auth_binding.py +0 -0
  475. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_client_oauth.py +0 -0
  476. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_client_reflection.py +0 -0
  477. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_codegen_request_inventory.py +0 -0
  478. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_copy_from_function.py +0 -0
  479. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_copy_to_function.py +0 -0
  480. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_docstrings.py +0 -0
  481. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_documentation_examples.py +0 -0
  482. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_dynamic_filter_http_turns.py +0 -0
  483. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_example_function_arg_types.py +0 -0
  484. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_examples_workers.py +0 -0
  485. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_exception_handling.py +0 -0
  486. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_exceptions.py +0 -0
  487. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_pushdown.py +0 -0
  488. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_pushdown_extension.py +0 -0
  489. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_v2.py +0 -0
  490. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_v2_builder.py +0 -0
  491. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_v2_runtime_corpus.py +0 -0
  492. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_filter_v2_spec_schema.py +0 -0
  493. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_fixture_catalog_parity.py +0 -0
  494. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_shape_mismatch.py +0 -0
  495. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_storage.py +0 -0
  496. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_storage_azure_sql.py +0 -0
  497. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_storage_cf_do.py +0 -0
  498. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_storage_cf_do_integration.py +0 -0
  499. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_function_storage_conformance.py +0 -0
  500. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_constants.py +0 -0
  501. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_protocol_name.py +0 -0
  502. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_protocol_version.py +0 -0
  503. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_request_builders.py +0 -0
  504. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_schemas.py +0 -0
  505. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_cpp_secret.py +0 -0
  506. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_csharp.py +0 -0
  507. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_go_schemas.py +0 -0
  508. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_go_types.py +0 -0
  509. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_java_schemas.py +0 -0
  510. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_java_types.py +0 -0
  511. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_protocol_version.py +0 -0
  512. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_rust_request_builders.py +0 -0
  513. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_rust_schemas.py +0 -0
  514. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_rust_types.py +0 -0
  515. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_schemas_cross_lang.py +0 -0
  516. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_ts_client.py +0 -0
  517. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_ts_schemas.py +0 -0
  518. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_generated_ts_types.py +0 -0
  519. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_grant_auth.py +0 -0
  520. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_hosted_protocols.py +0 -0
  521. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_http_demo_storage.py +0 -0
  522. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_http_s3_offload_input.py +0 -0
  523. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_http_s3_offload_output.py +0 -0
  524. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_import_side_effects.py +0 -0
  525. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_landing_discovery.py +0 -0
  526. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_launch_transport.py +0 -0
  527. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_metadata.py +0 -0
  528. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_mypy_consolidated.py +0 -0
  529. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_nest_tensor.py +0 -0
  530. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_otel.py +0 -0
  531. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_projection_enforcement.py +0 -0
  532. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_projection_repro.py +0 -0
  533. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_protocol_classes.py +0 -0
  534. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_resolved_secrets.py +0 -0
  535. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_schema_paths_v2.py +0 -0
  536. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_schema_scoped_functions.py +0 -0
  537. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_schema_utils.py +0 -0
  538. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_serve.py +0 -0
  539. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_signing_key.py +0 -0
  540. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_split_token.py +0 -0
  541. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_subprocess_transport.py +0 -0
  542. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_table_buffering_function.py +0 -0
  543. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_table_function_dynamic_to_string.py +0 -0
  544. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_tcp_transport.py +0 -0
  545. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_type_bounds.py +0 -0
  546. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_union_argument.py +0 -0
  547. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_wire_record_schema_parity.py +0 -0
  548. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_worker.py +0 -0
  549. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_worker_cli.py +0 -0
  550. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_worker_page.py +0 -0
  551. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/test_write_results.py +0 -0
  552. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/transactor/__init__.py +0 -0
  553. {vgi_python-0.43.0 → vgi_python-0.44.0}/tests/transactor/test_transactor.py +0 -0
  554. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/__init__.py +0 -0
  555. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_duckdb.py +0 -0
  556. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_redact.py +0 -0
  557. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_storage_profile.py +0 -0
  558. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/__init__.py +0 -0
  559. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
  560. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/accumulate/worker.py +0 -0
  561. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
  562. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/_common.py +0 -0
  563. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/basic.py +0 -0
  564. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/generic.py +0 -0
  565. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
  566. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
  567. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
  568. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
  569. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
  570. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
  571. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/aggregate/window.py +0 -0
  572. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/attach_options.py +0 -0
  573. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/attach_ticket_vectors.json +0 -0
  574. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/bad_enum.py +0 -0
  575. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/bad_protocol.py +0 -0
  576. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/cancellable.py +0 -0
  577. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/catalog.py +0 -0
  578. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/catalog_contents.py +0 -0
  579. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/companion.py +0 -0
  580. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/copy_from.py +0 -0
  581. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/copy_to.py +0 -0
  582. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/global_functions.py +0 -0
  583. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/http_server.py +0 -0
  584. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/identity_fixture.py +0 -0
  585. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
  586. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
  587. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/nest_tensor.py +0 -0
  588. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/orchard_catalog.py +0 -0
  589. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
  590. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
  591. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/__init__.py +0 -0
  592. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
  593. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
  594. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/binary.py +0 -0
  595. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/formatting.py +0 -0
  596. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/geo.py +0 -0
  597. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
  598. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
  599. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/same_name.py +0 -0
  600. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
  601. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/scalar/type_info.py +0 -0
  602. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
  603. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
  604. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/secret_cache.py +0 -0
  605. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/simple_writable.py +0 -0
  606. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/__init__.py +0 -0
  607. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/_common.py +0 -0
  608. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/batch_index.py +0 -0
  609. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
  610. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/cache.py +0 -0
  611. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
  612. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/filters.py +0 -0
  613. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/late_materialization.py +0 -0
  614. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/make_series.py +0 -0
  615. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/misc.py +0 -0
  616. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/order_modes.py +0 -0
  617. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/pairs.py +0 -0
  618. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/partition_columns.py +0 -0
  619. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
  620. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/profiling_example.py +0 -0
  621. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/required_filters.py +0 -0
  622. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
  623. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
  624. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/sequence.py +0 -0
  625. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/settings.py +0 -0
  626. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/splits.py +0 -0
  627. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
  628. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
  629. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/typed_probe.py +0 -0
  630. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/versioned.py +0 -0
  631. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table/wide.py +0 -0
  632. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table_in_out.py +0 -0
  633. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
  634. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/ticket_probe.py +0 -0
  635. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/twin_catalogs.py +0 -0
  636. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/versioned.py +0 -0
  637. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/versioned_tables.py +0 -0
  638. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/worker.py +0 -0
  639. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/writable/__init__.py +0 -0
  640. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/writable/generic.py +0 -0
  641. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/writable/table.py +0 -0
  642. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/_test_fixtures/writable/worker.py +0 -0
  643. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/aggregate_function.py +0 -0
  644. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/argument_spec.py +0 -0
  645. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/attach_header.py +0 -0
  646. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/attach_ticket.py +0 -0
  647. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/auth.py +0 -0
  648. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/cache_control.py +0 -0
  649. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/__init__.py +0 -0
  650. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/_descriptor_spec.py +0 -0
  651. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/descriptors.py +0 -0
  652. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/duckdb_statistics.py +0 -0
  653. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/secret_type.py +0 -0
  654. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/setting.py +0 -0
  655. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/catalog/storage.py +0 -0
  656. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/__init__.py +0 -0
  657. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/catalog_mixin.py +0 -0
  658. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli.py +0 -0
  659. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_catalog.py +0 -0
  660. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_schema.py +0 -0
  661. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_table.py +0 -0
  662. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_transaction.py +0 -0
  663. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_utils.py +0 -0
  664. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/cli_view.py +0 -0
  665. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/client/errors.py +0 -0
  666. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/__init__.py +0 -0
  667. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/_common.py +0 -0
  668. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_constants.py +0 -0
  669. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_protocol_name.py +0 -0
  670. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_protocol_version.py +0 -0
  671. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_request_builders.py +0 -0
  672. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_schemas.py +0 -0
  673. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
  674. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_secret_request_builders.py +0 -0
  675. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/cpp_secret_schemas.py +0 -0
  676. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/csharp_schemas.py +0 -0
  677. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/csharp_types.py +0 -0
  678. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/go_schemas.py +0 -0
  679. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/go_types.py +0 -0
  680. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/java_schemas.py +0 -0
  681. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/java_types.py +0 -0
  682. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/protocol_version.py +0 -0
  683. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/rust_request_builders.py +0 -0
  684. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/rust_schemas.py +0 -0
  685. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/rust_types.py +0 -0
  686. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/ts_client.py +0 -0
  687. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/ts_schemas.py +0 -0
  688. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/codegen/ts_types.py +0 -0
  689. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/copy_from_function.py +0 -0
  690. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/copy_to_function.py +0 -0
  691. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/filter_v2_builder.py +0 -0
  692. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/function_storage.py +0 -0
  693. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/function_storage_azure_sql.py +0 -0
  694. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/function_storage_cf_do.py +0 -0
  695. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/__init__.py +0 -0
  696. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/demo_storage.py +0 -0
  697. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/landing.html +0 -0
  698. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/landing_page.py +0 -0
  699. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/vgi-client.js +0 -0
  700. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/http/worker_page.py +0 -0
  701. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/invocation.py +0 -0
  702. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/logging_config.py +0 -0
  703. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/metadata.py +0 -0
  704. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/otel.py +0 -0
  705. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/profiling.py +0 -0
  706. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/protocol.py +0 -0
  707. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/protocol_version.txt +0 -0
  708. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/py.typed +0 -0
  709. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/rpc_server.py +0 -0
  710. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/schema_path.py +0 -0
  711. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/schema_utils.py +0 -0
  712. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/secret_protocol.py +0 -0
  713. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/secret_service.py +0 -0
  714. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/serve.py +0 -0
  715. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/split_token.py +0 -0
  716. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/table_buffering_function.py +0 -0
  717. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/table_filter_pushdown.py +0 -0
  718. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/table_in_out_function.py +0 -0
  719. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/transactor/__init__.py +0 -0
  720. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/transactor/_duckdb_compat.py +0 -0
  721. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/transactor/client.py +0 -0
  722. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/transactor/protocol.py +0 -0
  723. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/transactor/server.py +0 -0
  724. {vgi_python-0.43.0 → vgi_python-0.44.0}/vgi/write_results.py +0 -0
  725. {vgi_python-0.43.0 → vgi_python-0.44.0}/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.0
3
+ Version: 0.44.0
4
4
  Summary: Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow
5
5
  Project-URL: Homepage, https://query.farm
6
6
  Project-URL: Repository, https://github.com/Query-farm/vgi-python
@@ -162,7 +162,7 @@ Requires-Dist: httpx2>=2.12.0
162
162
  Requires-Dist: platformdirs
163
163
  Requires-Dist: pyarrow
164
164
  Requires-Dist: typer>=0.9
165
- Requires-Dist: vgi-rpc>=0.50.0
165
+ Requires-Dist: vgi-rpc>=0.51.1
166
166
  Provides-Extra: azure
167
167
  Requires-Dist: azure-identity>=1.16.0; extra == 'azure'
168
168
  Requires-Dist: pymssql>=2.3.0; extra == 'azure'
@@ -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
@@ -0,0 +1,35 @@
1
+ # Exceptions
2
+
3
+ VGI raises typed exceptions for binding, catalog, schema, and execution errors. Several
4
+ validation errors also live alongside the features they guard (see
5
+ [Arguments](arguments.md#vgi.arguments.ArgumentValidationError) and
6
+ [Metadata](metadata.md)).
7
+
8
+ ## Error codes
9
+
10
+ Errors cross the wire with a gRPC-style `error_code` from vgi-rpc's error model
11
+ (`vgi_rpc.errors.Code`). An exception class declares its code with an
12
+ `error_code` class attribute; one without it is sent as `UNKNOWN`. The SDK codes
13
+ its own errors so a client can tell bad input from a worker bug:
14
+
15
+ | Code | Raised for |
16
+ |------|------------|
17
+ | `INVALID_ARGUMENT` | `ArgumentValidationError`, `ArgumentTypeError` (failed `type_bound`), `TypeMismatchError` on an input parameter, `InvalidArgumentError` (no matching overload, ambiguous call, wrong call shape), `MissingAttachOptionsError` |
18
+ | `NOT_FOUND` | `NotFoundError` (unknown function, catalog, or table) |
19
+ | `FAILED_PRECONDITION` | `CatalogReadOnlyError` |
20
+ | `UNIMPLEMENTED` | `UnsupportedOperationError` (catalog operations a catalog does not implement) |
21
+ | `UNKNOWN` | everything else, including `SchemaValidationError` on a worker's output and `TypeMismatchError` on a return value -- those are worker bugs |
22
+
23
+ Your own exceptions can declare a code the same way:
24
+
25
+ ```python
26
+ from typing import ClassVar
27
+
28
+ from vgi_rpc.errors import Code
29
+
30
+
31
+ class QuotaExceededError(Exception):
32
+ error_code: ClassVar[Code] = Code.RESOURCE_EXHAUSTED
33
+ ```
34
+
35
+ ::: vgi.exceptions
@@ -214,37 +214,40 @@ class MyCatalog(CatalogInterface):
214
214
 
215
215
  | Category | Method | Default Behavior |
216
216
  |----------|--------|------------------|
217
- | **Catalog** | `catalog_create()` | `NotImplementedError` |
218
- | | `catalog_drop()` | `NotImplementedError` |
217
+ | **Catalog** | `catalog_create()` | `UnsupportedOperationError` |
218
+ | | `catalog_drop()` | `UnsupportedOperationError` |
219
219
  | | `catalog_detach()` | No-op |
220
220
  | | `catalog_version()` | Returns `0` |
221
- | **Transaction** | `catalog_transaction_begin()` | `NotImplementedError` |
222
- | | `catalog_transaction_commit()` | `NotImplementedError` |
223
- | | `catalog_transaction_rollback()` | `NotImplementedError` |
221
+ | **Transaction** | `catalog_transaction_begin()` | `UnsupportedOperationError` |
222
+ | | `catalog_transaction_commit()` | `UnsupportedOperationError` |
223
+ | | `catalog_transaction_rollback()` | `UnsupportedOperationError` |
224
224
  | **Schema** | `schemas()` | Returns `["main"]` |
225
- | | `schema_create()` | `NotImplementedError` |
226
- | | `schema_drop()` | `NotImplementedError` |
227
- | | `schema_contents()` | `NotImplementedError` |
228
- | **Table** | `table_create()` | `NotImplementedError` |
229
- | | `table_drop()` | `NotImplementedError` |
230
- | | `table_rename()` | `NotImplementedError` |
231
- | | `table_comment_set()` | `NotImplementedError` |
232
- | | `table_column_add()` | `NotImplementedError` |
233
- | | `table_column_drop()` | `NotImplementedError` |
234
- | | `table_column_rename()` | `NotImplementedError` |
235
- | | `table_column_type_change()` | `NotImplementedError` |
236
- | | `table_column_default_set()` | `NotImplementedError` |
237
- | | `table_column_default_drop()` | `NotImplementedError` |
238
- | | `table_not_null_set()` | `NotImplementedError` |
239
- | | `table_not_null_drop()` | `NotImplementedError` |
240
- | | `table_scan_function_get()` | `NotImplementedError` |
241
- | **View** | `view_create()` | `NotImplementedError` |
242
- | | `view_drop()` | `NotImplementedError` |
243
- | | `view_rename()` | `NotImplementedError` |
244
- | | `view_comment_set()` | `NotImplementedError` |
225
+ | | `schema_create()` | `UnsupportedOperationError` |
226
+ | | `schema_drop()` | `UnsupportedOperationError` |
227
+ | | `schema_contents()` | `UnsupportedOperationError` |
228
+ | **Table** | `table_create()` | `UnsupportedOperationError` |
229
+ | | `table_drop()` | `UnsupportedOperationError` |
230
+ | | `table_rename()` | `UnsupportedOperationError` |
231
+ | | `table_comment_set()` | `UnsupportedOperationError` |
232
+ | | `table_column_add()` | `UnsupportedOperationError` |
233
+ | | `table_column_drop()` | `UnsupportedOperationError` |
234
+ | | `table_column_rename()` | `UnsupportedOperationError` |
235
+ | | `table_column_type_change()` | `UnsupportedOperationError` |
236
+ | | `table_column_default_set()` | `UnsupportedOperationError` |
237
+ | | `table_column_default_drop()` | `UnsupportedOperationError` |
238
+ | | `table_not_null_set()` | `UnsupportedOperationError` |
239
+ | | `table_not_null_drop()` | `UnsupportedOperationError` |
240
+ | | `table_scan_function_get()` | `UnsupportedOperationError` |
241
+ | **View** | `view_create()` | `UnsupportedOperationError` |
242
+ | | `view_drop()` | `UnsupportedOperationError` |
243
+ | | `view_rename()` | `UnsupportedOperationError` |
244
+ | | `view_comment_set()` | `UnsupportedOperationError` |
245
245
  | **Observability** | `loggable_attach_options()` | Returns `{}` (no options logged — see below) |
246
246
  | **Bulk load** | `catalog_contents()` | Composes `schemas()` + `schema_contents()` per kind; no etag (see below) |
247
247
 
248
+ `UnsupportedOperationError` (from `vgi.exceptions`) subclasses `NotImplementedError` and is
249
+ sent to the client with error code `UNIMPLEMENTED`.
250
+
248
251
  ---
249
252
 
250
253
  ## Loading the Whole Catalog: `catalog_contents`
@@ -847,7 +850,7 @@ Errors are returned as exceptions that propagate through the VGI protocol:
847
850
  | Error | When Raised |
848
851
  |-------|-------------|
849
852
  | `ValueError` | Invalid arguments, object not found |
850
- | `NotImplementedError` | Method not supported |
853
+ | `UnsupportedOperationError` | Method not supported |
851
854
  | `CatalogReadOnlyError` | DDL on read-only catalog |
852
855
 
853
856
  Example error handling:
@@ -0,0 +1,198 @@
1
+ # Implementing the reporting protocols
2
+
3
+ The build plan for the protocols in this directory, written so an agent with no
4
+ other context can pick up where the last one stopped. Read this file, then the
5
+ [README](README.md), [credentials.md](credentials.md) and the spec of the phase
6
+ you're on. **Update the status table when a phase lands**, in the same commit.
7
+
8
+ ## Status
9
+
10
+ | Phase | Status | Landed in |
11
+ | --- | --- | --- |
12
+ | P0 Specs committed, HTML builder in the repo | done | this commit |
13
+ | P1 Unlimited default grant lifetime | not started | |
14
+ | P2 SQL-binding framework (vgi-python) | not started | |
15
+ | P3 `vgi.reports.v1` | not started | |
16
+ | P4 `vgi.delegations.v1` | not started | |
17
+ | P5 Run engine and `vgi.schedules.v1` (`run_query`) | not started | |
18
+ | P6 `vgi.sql_tasks.v1` | not started | |
19
+ | P7 `vgi.notify.v1` reference and deliveries | not started | |
20
+ | P8 `vgi.alerts.v1` | not started | |
21
+ | P9 `vgi.report_render.v1` and `render_report` | not started | |
22
+ | P10 Cupola client | not started (can start after P3) | |
23
+
24
+ Already shipped and not part of this plan: multi-protocol hosting, the gRPC
25
+ error model, `Identity.v1`, grants as bearers, attach tickets
26
+ (`vgi.attach_tickets.v1`, `vgi_export_session()`, the `attach_ticket` ATTACH
27
+ option), full `vgi.v2` parity across the seven SDKs.
28
+
29
+ ## Decisions
30
+
31
+ Settled; don't reopen them without the user. The README's Decisions table has
32
+ the protocol-level ones; these are the build-level ones and late changes.
33
+
34
+ | # | Decision |
35
+ | --- | --- |
36
+ | D1 | The protocol is the unit of optionality; every method is required. |
37
+ | D2 | `vgi.delegations.v1` (not "held attachments"): `Delegation`, `put_delegations`, `list_delegations`, `revoke_delegation`. |
38
+ | D3 | `vgi.sql_tasks.v1` is its own protocol on the shared run engine, for SQL that changes data. Both destination kinds (`catalog`, `host`) and both watermark kinds (`derived`, `stored`). Scripts run statements in one transaction by default; `CALL` is a statement. |
39
+ | D4 | `vgi.schedules.v1`'s `run_query` stays as specified (it may write). The overlap with SQL tasks is accepted. |
40
+ | D5 | The delegation field stays `grant`. DuckDB accepts it unquoted (the extension's `attach_ticket/round_trip.test` does `SELECT grant FROM …`). |
41
+ | D6 | The SQL binding is normative and **derived** from the RPC definition by a generic adapter plus a per-protocol annotation; never hand-written ([README](README.md#sql-binding)). |
42
+ | D7 | Protocol-table writes are refused inside an explicit multi-statement transaction (each row is an RPC that `ROLLBACK` can't undo). Revisit only if a real use needs it. |
43
+ | D8 | Specs stay in `docs/design/reporting-protocols/` until each protocol ships; a shipped protocol's spec then moves to `docs/protocol/`. |
44
+ | D9 | These are service protocols. The reference implementation is Python; other SDKs implement one only when someone wants to host it natively. The extension tests the SQL bindings cross-language. |
45
+ | D10 | Build order is by dependency, P1 to P9. Each phase ends usable, with conformance over both surfaces. |
46
+
47
+ ## Working rules
48
+
49
+ **Where work happens**
50
+
51
+ - Build and test on the EC2 host `ec2-user@13.217.25.2` in a directory you
52
+ create and own, not the shared Mac. Debug builds, no LTO, at most 8 jobs.
53
+ Kill only processes you started, by PID; never a broad `pkill`.
54
+ - Never edit `~/Development/vgi` or `~/Development/vgi-typescript` in place;
55
+ use a git worktree. vgi-python's main checkout may hold the user's
56
+ uncommitted files: never stage what you didn't write.
57
+ - Implement, never skip: missing SDK functionality is ported, not excluded
58
+ from a cross-SDK test.
59
+
60
+ **Testing**
61
+
62
+ - vgi-python: `uv run ruff check --fix . && uv run ruff format . && uv run mypy vgi/`,
63
+ then `uv run pytest -n auto`.
64
+ - Feature tests that cross languages go in the extension as sqllogictests
65
+ (`~/Development/vgi/test/sql/integration/<protocol>/`). Every local
66
+ `unittest` run passes `--test-dir <tree>` (otherwise it silently runs its
67
+ compiled-in tree) and `--test-config test/configs/no_error_skip.json`
68
+ (otherwise HTTP-lane errors become skips).
69
+ - Anything a test starts in the background, the test stops: record PIDs in the
70
+ parent shell, never inside `$( … )`.
71
+
72
+ **Commits and releases**
73
+
74
+ - Agents commit on a branch and report; they don't push or tag.
75
+ - Docs and script-only changes go straight to `main`, no PR.
76
+ - A package release is CI-gated: push the release commit to `main`, wait for
77
+ **every** push-triggered workflow on that SHA to succeed (zero runs is a
78
+ failure: check the repo name from `git remote`), then create the GitHub
79
+ release or push the tag, whichever that repo publishes on. Retry GitHub 5xx.
80
+ - Commit messages are findings-style (what was wrong or missing, how it was
81
+ found, what changed, how it was verified) and end with the session's
82
+ `Co-Authored-By` trailer.
83
+
84
+ ## Phases
85
+
86
+ ### P0 Specs committed (done)
87
+
88
+ `docs/design/reporting-protocols/` committed, with
89
+ `scripts/build_reporting_protocols_html.py`, which regenerates
90
+ `reporting-protocols.html` from the markdown. Rerun it after editing a spec.
91
+
92
+ ### P1 Unlimited default grant lifetime
93
+
94
+ The design says a grant's lifetime is the issuing worker's policy and unlimited
95
+ unless set. vgi-rpc still defaults to 7 days (`DEFAULT_MAX_TTL_SECONDS` in
96
+ `vgi_rpc/grants.py`), so every unattended job would stop a week after its
97
+ owner's last login.
98
+
99
+ - Decide the wire form of "no expiry" in the grant spec first (an absent or
100
+ zero `exp`), with test vectors.
101
+ - Unset `VGI_RPC_GRANT_MAX_TTL_SECONDS` means no maximum, in vgi-rpc and all
102
+ six ports. Attach tickets follow the worker's grant maximum, so check the
103
+ SDKs' ticket expiry the same way.
104
+ - **Done when** the shared vectors pass in every port, `expires_at` is `+inf`
105
+ (or `NULL` in `vgi_export_session()`) for an unlimited worker, and the ports
106
+ are released.
107
+
108
+ P1 doesn't block P2 to P4; development can set an explicit TTL meanwhile.
109
+
110
+ ### P2 SQL-binding framework (vgi-python)
111
+
112
+ The generic adapter that serves a hosted RPC protocol as a VGI catalog schema,
113
+ built before any protocol so each ships both surfaces.
114
+
115
+ - Protocol classes for every protocol: Arrow-typed records and the `Protocol`
116
+ class, plus the SQL annotation (tables, get methods for fetched columns, DML
117
+ methods). Proposed home `vgi/reporting/`; adjust if the codebase suggests
118
+ better.
119
+ - The adapter, implementing the [README's derivation rules](README.md#derivation-rules)
120
+ 1 to 9 and the semantics (conflict, `request_id`, autocommit, error text).
121
+ - `scripts/regen_generated.py --check` renders each spec's SQL-binding table
122
+ from the annotations.
123
+ - **Done when** each derivation rule and semantic has a test against a toy
124
+ protocol, and a protocol with an annotation that names a missing method or a
125
+ column the row lacks fails at startup.
126
+
127
+ ### P3 `vgi.reports.v1`
128
+
129
+ - The store on `FunctionStorage`, `AccessPolicy` (by principal: grant callers
130
+ have no claims), `ReadOnlyReportStore`, `vgi-report-serve`.
131
+ - Pin every row schema in [reports.md](reports.md) exactly; the SQL binding
132
+ makes them a contract.
133
+ - A conformance suite that runs against any implementation over RPC and over
134
+ SQL.
135
+ - Extension sqllogictests `test/sql/integration/reports/` against the Python
136
+ service.
137
+ - **Done when** the conformance suite passes over both surfaces and Cupola
138
+ could save, list, publish and read history with no localStorage.
139
+
140
+ ### P4 `vgi.delegations.v1`
141
+
142
+ - `put_delegations`, `list_delegations`, `revoke_delegation`; grants and tickets
143
+ encrypted under a key outside the store, never returned.
144
+ - **Done when** this round trip passes as a sqllogictest: `vgi_export_session()`,
145
+ `INSERT INTO … delegations BY NAME …`, then a runner reattaches each source
146
+ with `ATTACH … (bearer_token, attach_ticket)` from the stored delegation and
147
+ reads data, and `revoke_delegation` makes the next reattach fail.
148
+
149
+ ### P5 Run engine and `vgi.schedules.v1`
150
+
151
+ - The shared engine from [schedules.md](schedules.md#reference-scheduler-non-normative):
152
+ `tick` / `advance_run`, `vgi.scheduler_driver.v1` (allowlisted), leases,
153
+ idempotent steps, hardened per-run sessions built from delegations.
154
+ - `vgi.schedules.v1` with `run_query`; deliveries wait for P7.
155
+ - **Done when** a schedule runs as its owner from delegations, runs are unique
156
+ on `(schedule_id, scheduled_for)` across two replicas, overlap is `skipped`,
157
+ and a missing delegation is `grant_required`.
158
+
159
+ ### P6 `vgi.sql_tasks.v1`
160
+
161
+ - `load` (four modes), `script` (three transaction kinds), both watermark
162
+ kinds, `lookback`, the `host` store (DuckLake by default), health and
163
+ transition notifications (deliveries once P7 lands).
164
+ - **Done when** `derived` loads exactly once across a crash injected between
165
+ write and commit, `stored` replays at most the last window, a script that
166
+ writes two databases in `single` fails with `transaction_failed`, and
167
+ `test_run` leaves the target untouched.
168
+
169
+ ### P7 `vgi.notify.v1` reference and deliveries
170
+
171
+ - A reference service with a recording fake channel and a webhook channel;
172
+ destination policy and suppression list. Wire schedule deliveries and task
173
+ notifications to it. The production service is the separate `vgi-notify`
174
+ repo, later.
175
+
176
+ ### P8 `vgi.alerts.v1`
177
+
178
+ - Rules, instances and states, notifications on transitions, acknowledge,
179
+ snooze, subscriptions, on the shared engine. Pin the instance row schema
180
+ (it's loose in [alerts.md](alerts.md) today).
181
+
182
+ ### P9 `vgi.report_render.v1` and `render_report`
183
+
184
+ - Depends on a headless Cupola renderer. Then enable the `render_report`
185
+ schedule action.
186
+
187
+ ### P10 Cupola client
188
+
189
+ - Starts after P3: reports client and migration off localStorage, then
190
+ delegation on save and renewal on login (P4), schedule and task editors (P5,
191
+ P6), "Alert me when…" (P8). TypeScript types and clients come from codegen.
192
+
193
+ ## Known gaps to close while building
194
+
195
+ - Row schemas are prose in places ("instances with state and times"). Each
196
+ phase pins its protocol's rows; the regen check keeps the spec in step.
197
+ - `get_*_info` limits (sizes, minimum intervals) have no values yet; choose
198
+ them in the phase and record them in the spec.