vgi-python 0.31.1__tar.gz → 0.31.2__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 (443) hide show
  1. {vgi_python-0.31.1 → vgi_python-0.31.2}/PKG-INFO +1 -1
  2. {vgi_python-0.31.1 → vgi_python-0.31.2}/pyproject.toml +1 -1
  3. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_setting_secret_annotations.py +62 -0
  4. {vgi_python-0.31.1 → vgi_python-0.31.2}/uv.lock +1 -1
  5. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/client.py +16 -5
  6. {vgi_python-0.31.1 → vgi_python-0.31.2}/.gitattributes +0 -0
  7. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/dependabot.yml +0 -0
  8. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
  9. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/ci.yml +0 -0
  10. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/docs.yml +0 -0
  11. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/integration.yml +0 -0
  12. {vgi_python-0.31.1 → vgi_python-0.31.2}/.github/workflows/release.yml +0 -0
  13. {vgi_python-0.31.1 → vgi_python-0.31.2}/.gitignore +0 -0
  14. {vgi_python-0.31.1 → vgi_python-0.31.2}/.python-version +0 -0
  15. {vgi_python-0.31.1 → vgi_python-0.31.2}/.vale.ini +0 -0
  16. {vgi_python-0.31.1 → vgi_python-0.31.2}/CLAUDE.md +0 -0
  17. {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
  18. {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_REVIEW_RUBRIC.md +0 -0
  19. {vgi_python-0.31.1 → vgi_python-0.31.2}/DOCS_USABILITY_TEST.md +0 -0
  20. {vgi_python-0.31.1 → vgi_python-0.31.2}/LICENSE +0 -0
  21. {vgi_python-0.31.1 → vgi_python-0.31.2}/README.md +0 -0
  22. {vgi_python-0.31.1 → vgi_python-0.31.2}/RELEASE-RUNBOOK.md +0 -0
  23. {vgi_python-0.31.1 → vgi_python-0.31.2}/SECURITY.md +0 -0
  24. {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/README.md +0 -0
  25. {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/preprocess-require.awk +0 -0
  26. {vgi_python-0.31.1 → vgi_python-0.31.2}/ci/run-integration.sh +0 -0
  27. {vgi_python-0.31.1 → vgi_python-0.31.2}/dist-vgi/.gitignore +0 -0
  28. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/aggregate-functions.md +0 -0
  29. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/arguments.md +0 -0
  30. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/auth.md +0 -0
  31. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/catalogs.md +0 -0
  32. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/client.md +0 -0
  33. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/exceptions.md +0 -0
  34. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/filters.md +0 -0
  35. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/functions.md +0 -0
  36. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/http.md +0 -0
  37. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/index.md +0 -0
  38. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/metadata.md +0 -0
  39. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/observability.md +0 -0
  40. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/storage.md +0 -0
  41. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/transactor.md +0 -0
  42. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/api/worker.md +0 -0
  43. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/argument-serialization.md +0 -0
  44. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/apple-touch-icon.png +0 -0
  45. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon-16x16.png +0 -0
  46. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon-32x32.png +0 -0
  47. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/favicon.ico +0 -0
  48. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/aggregate.svg +0 -0
  49. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/buffering.svg +0 -0
  50. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/scalar.svg +0 -0
  51. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/table-in-out.svg +0 -0
  52. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/kinds/table.svg +0 -0
  53. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/logo.png +0 -0
  54. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/assets/social-card.png +0 -0
  55. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/authentication.md +0 -0
  56. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/catalog-interface.md +0 -0
  57. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/cli.md +0 -0
  58. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/column-statistics.md +0 -0
  59. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/concepts/index.md +0 -0
  60. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/contributing-docs.md +0 -0
  61. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/filter-pushdown.md +0 -0
  62. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/generator-api.md +0 -0
  63. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/global-functions.md +0 -0
  64. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/catalogs.md +0 -0
  65. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/function-patterns.md +0 -0
  66. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/http-auth.md +0 -0
  67. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/index.md +0 -0
  68. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/pushdown-and-statistics.md +0 -0
  69. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/how-to/state-storage.md +0 -0
  70. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/index.md +0 -0
  71. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/lifecycle.md +0 -0
  72. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/metadata.md +0 -0
  73. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/overrides/main.html +0 -0
  74. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/robots.txt +0 -0
  75. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/shared-storage.md +0 -0
  76. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/stylesheets/extra.css +0 -0
  77. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/index.md +0 -0
  78. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/scalar.md +0 -0
  79. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/tutorial/table.md +0 -0
  80. {vgi_python-0.31.1 → vgi_python-0.31.2}/docs/vgi-logo.png +0 -0
  81. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/batch_index_worker.py +0 -0
  82. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/cache_worker.py +0 -0
  83. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/calc_scalar_worker.py +0 -0
  84. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/calc_worker.py +0 -0
  85. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/copy_format_worker.py +0 -0
  86. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/filter_worker.py +0 -0
  87. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/greeting_scalar_worker.py +0 -0
  88. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/row_count_worker.py +0 -0
  89. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/series_streaming_worker.py +0 -0
  90. {vgi_python-0.31.1 → vgi_python-0.31.2}/examples/sum_worker.py +0 -0
  91. {vgi_python-0.31.1 → vgi_python-0.31.2}/mkdocs.yml +0 -0
  92. {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/LICENSE +0 -0
  93. {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/README.md +0 -0
  94. {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/docker/Dockerfile +0 -0
  95. {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
  96. {vgi_python-0.31.1 → vgi_python-0.31.2}/packages/vgi-fixtures/pyproject.toml +0 -0
  97. {vgi_python-0.31.1 → vgi_python-0.31.2}/scripts/measure_startup.py +0 -0
  98. {vgi_python-0.31.1 → vgi_python-0.31.2}/scripts/run_all_tests.sh +0 -0
  99. {vgi_python-0.31.1 → vgi_python-0.31.2}/test-data/generate.sh +0 -0
  100. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/__init__.py +0 -0
  101. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/_http_fixtures.py +0 -0
  102. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/__init__.py +0 -0
  103. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_attach_option.py +0 -0
  104. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_catalog_interface.py +0 -0
  105. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_client_catalog.py +0 -0
  106. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_column_statistics.py +0 -0
  107. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_declarative.py +0 -0
  108. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_example_worker_catalog.py +0 -0
  109. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_integration.py +0 -0
  110. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_required_filters.py +0 -0
  111. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_scan_branches.py +0 -0
  112. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_serialization.py +0 -0
  113. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_setting.py +0 -0
  114. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_storage.py +0 -0
  115. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_time_travel.py +0 -0
  116. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/catalog/test_writable_table.py +0 -0
  117. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/__init__.py +0 -0
  118. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_aggregate_client.py +0 -0
  119. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_batch_metadata_callback.py +0 -0
  120. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_broken_pipe.py +0 -0
  121. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_cli.py +0 -0
  122. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_cli_catalog_functions.py +0 -0
  123. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_copy_client.py +0 -0
  124. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_scan_branches_client.py +0 -0
  125. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_split_client.py +0 -0
  126. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_stop_force.py +0 -0
  127. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_table_column_statistics.py +0 -0
  128. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_time_travel_client.py +0 -0
  129. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/client/test_worker_debug.py +0 -0
  130. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/__init__.py +0 -0
  131. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/_stub.py +0 -0
  132. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/conftest.py +0 -0
  133. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_accumulate.py +0 -0
  134. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_aggregate.py +0 -0
  135. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_attach.py +0 -0
  136. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_bearer_auth.py +0 -0
  137. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_const_param_enforcement.py +0 -0
  138. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_container.py +0 -0
  139. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_copy_from.py +0 -0
  140. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_copy_to.py +0 -0
  141. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_directory_parity.py +0 -0
  142. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_function_inventory.py +0 -0
  143. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_github.py +0 -0
  144. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_client.py +0 -0
  145. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_external_location.py +0 -0
  146. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_http_upload_url.py +0 -0
  147. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_macro.py +0 -0
  148. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_overload.py +0 -0
  149. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_protocol_inventory.py +0 -0
  150. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_protocol_version.py +0 -0
  151. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_resumable_scan.py +0 -0
  152. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_scalar.py +0 -0
  153. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
  154. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_secret.py +0 -0
  155. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_settings.py +0 -0
  156. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_splits.py +0 -0
  157. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_table.py +0 -0
  158. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_table_in_out.py +0 -0
  159. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_view.py +0 -0
  160. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conformance/test_writable.py +0 -0
  161. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/conftest.py +0 -0
  162. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/anchor_len_overrun.bin +0 -0
  163. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_fingerprint.bin +0 -0
  164. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_flags_unsealed_but_key_present.bin +0 -0
  165. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/bad_version.bin +0 -0
  166. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/generate.py +0 -0
  167. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/manifest.json +0 -0
  168. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/reserved_flag_bit.bin +0 -0
  169. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/stale_anchor.bin +0 -0
  170. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/truncated.bin +0 -0
  171. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/valid_sealed.bin +0 -0
  172. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/data/split_tokens/valid_unsealed.bin +0 -0
  173. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/__init__.py +0 -0
  174. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_bernoulli_function.py +0 -0
  175. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_binary_packet_function.py +0 -0
  176. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_client.py +0 -0
  177. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_conditional_message_function.py +0 -0
  178. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_hash_seed_function.py +0 -0
  179. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_multiply_by_setting_function.py +0 -0
  180. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_multiply_function.py +0 -0
  181. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_random_bytes_function.py +0 -0
  182. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/scalar/test_return_secret_value_function.py +0 -0
  183. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/__init__.py +0 -0
  184. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/__init__.py +0 -0
  185. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_constant_columns_function.py +0 -0
  186. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_double_sequence_function.py +0 -0
  187. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_exception_function.py +0 -0
  188. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_filter_echo_function.py +0 -0
  189. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_logging_function.py +0 -0
  190. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_nested_sequence_function.py +0 -0
  191. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_partitioned_function.py +0 -0
  192. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_projected_data_function.py +0 -0
  193. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_sequence_function.py +0 -0
  194. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_settings_function.py +0 -0
  195. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_struct_settings_function.py +0 -0
  196. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/generator/test_ten_thousand_function.py +0 -0
  197. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table/test_wide_columns.py +0 -0
  198. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/__init__.py +0 -0
  199. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/__init__.py +0 -0
  200. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
  201. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_echo_function.py +0 -0
  202. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_exception_functions.py +0 -0
  203. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
  204. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
  205. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
  206. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
  207. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_blended_exchange.py +0 -0
  208. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_blended_metadata.py +0 -0
  209. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/table_in_out/test_client.py +0 -0
  210. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_access_log_audit.py +0 -0
  211. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_aggregate_function.py +0 -0
  212. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_argument_spec.py +0 -0
  213. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_auth.py +0 -0
  214. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bind_exceptions.py +0 -0
  215. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bind_request_at_clause.py +0 -0
  216. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_bound_storage_conformance.py +0 -0
  217. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_cache_control.py +0 -0
  218. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_call_state_attach.py +0 -0
  219. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_catalog_auth_binding.py +0 -0
  220. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_client_oauth.py +0 -0
  221. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_copy_from_function.py +0 -0
  222. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_copy_to_function.py +0 -0
  223. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_docstrings.py +0 -0
  224. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_documentation_examples.py +0 -0
  225. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_example_function_arg_types.py +0 -0
  226. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_examples_workers.py +0 -0
  227. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_exception_handling.py +0 -0
  228. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_exceptions.py +0 -0
  229. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_filter_pushdown.py +0 -0
  230. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_filter_pushdown_extension.py +0 -0
  231. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_fixture_catalog_parity.py +0 -0
  232. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage.py +0 -0
  233. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_azure_sql.py +0 -0
  234. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_cf_do.py +0 -0
  235. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_cf_do_integration.py +0 -0
  236. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_function_storage_conformance.py +0 -0
  237. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_constants.py +0 -0
  238. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_protocol_version.py +0 -0
  239. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_request_builders.py +0 -0
  240. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_schemas.py +0 -0
  241. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_cpp_secret.py +0 -0
  242. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_go_schemas.py +0 -0
  243. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_java_schemas.py +0 -0
  244. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_protocol_version.py +0 -0
  245. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_rust_request_builders.py +0 -0
  246. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_rust_schemas.py +0 -0
  247. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_schemas_cross_lang.py +0 -0
  248. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_ts_client.py +0 -0
  249. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_generated_ts_schemas.py +0 -0
  250. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_demo_storage.py +0 -0
  251. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_s3_offload_input.py +0 -0
  252. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_http_s3_offload_output.py +0 -0
  253. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_launch_transport.py +0 -0
  254. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_metadata.py +0 -0
  255. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_mypy_consolidated.py +0 -0
  256. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_nest_tensor.py +0 -0
  257. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_otel.py +0 -0
  258. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_projection_enforcement.py +0 -0
  259. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_projection_repro.py +0 -0
  260. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_protocol_classes.py +0 -0
  261. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_resolved_secrets.py +0 -0
  262. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_schema_scoped_functions.py +0 -0
  263. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_schema_utils.py +0 -0
  264. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_serve.py +0 -0
  265. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_signing_key.py +0 -0
  266. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_split_token.py +0 -0
  267. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_table_buffering_function.py +0 -0
  268. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_table_function_dynamic_to_string.py +0 -0
  269. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_tcp_transport.py +0 -0
  270. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_type_bounds.py +0 -0
  271. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_union_argument.py +0 -0
  272. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_wire_record_schema_parity.py +0 -0
  273. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker.py +0 -0
  274. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker_cli.py +0 -0
  275. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/test_worker_page.py +0 -0
  276. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/transactor/__init__.py +0 -0
  277. {vgi_python-0.31.1 → vgi_python-0.31.2}/tests/transactor/test_transactor.py +0 -0
  278. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/__init__.py +0 -0
  279. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_duckdb.py +0 -0
  280. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_storage_profile.py +0 -0
  281. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/__init__.py +0 -0
  282. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
  283. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/accumulate/worker.py +0 -0
  284. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
  285. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/_common.py +0 -0
  286. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/basic.py +0 -0
  287. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
  288. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/generic.py +0 -0
  289. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
  290. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
  291. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
  292. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
  293. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
  294. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
  295. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/aggregate/window.py +0 -0
  296. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/attach_options.py +0 -0
  297. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/bad_enum.py +0 -0
  298. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/bad_protocol.py +0 -0
  299. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/cancellable.py +0 -0
  300. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/catalog.py +0 -0
  301. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/companion.py +0 -0
  302. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/copy_from.py +0 -0
  303. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/copy_to.py +0 -0
  304. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/global_functions.py +0 -0
  305. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/http_server.py +0 -0
  306. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
  307. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
  308. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/nest_tensor.py +0 -0
  309. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/orchard_catalog.py +0 -0
  310. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
  311. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
  312. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/__init__.py +0 -0
  313. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/_common.py +0 -0
  314. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
  315. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
  316. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/binary.py +0 -0
  317. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/formatting.py +0 -0
  318. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/geo.py +0 -0
  319. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
  320. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
  321. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/same_name.py +0 -0
  322. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
  323. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/scalar/type_info.py +0 -0
  324. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
  325. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
  326. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/simple_writable.py +0 -0
  327. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/__init__.py +0 -0
  328. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/_common.py +0 -0
  329. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/batch_index.py +0 -0
  330. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
  331. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/cache.py +0 -0
  332. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
  333. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/filters.py +0 -0
  334. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/late_materialization.py +0 -0
  335. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/make_series.py +0 -0
  336. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/misc.py +0 -0
  337. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/order_modes.py +0 -0
  338. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/pairs.py +0 -0
  339. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/partition_columns.py +0 -0
  340. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
  341. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/profiling_example.py +0 -0
  342. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/required_filters.py +0 -0
  343. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
  344. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/same_name_schemas.py +0 -0
  345. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/sequence.py +0 -0
  346. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/settings.py +0 -0
  347. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/splits.py +0 -0
  348. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
  349. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
  350. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/typed_probe.py +0 -0
  351. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/versioned.py +0 -0
  352. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table/wide.py +0 -0
  353. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table_in_out.py +0 -0
  354. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
  355. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/twin_catalogs.py +0 -0
  356. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/versioned.py +0 -0
  357. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/versioned_tables.py +0 -0
  358. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/worker.py +0 -0
  359. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/__init__.py +0 -0
  360. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/generic.py +0 -0
  361. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/table.py +0 -0
  362. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/_test_fixtures/writable/worker.py +0 -0
  363. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/aggregate_function.py +0 -0
  364. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/argument_spec.py +0 -0
  365. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/arguments.py +0 -0
  366. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/attach_header.py +0 -0
  367. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/auth.py +0 -0
  368. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/cache_control.py +0 -0
  369. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/__init__.py +0 -0
  370. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/_descriptor_spec.py +0 -0
  371. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/attach_option.py +0 -0
  372. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/catalog_interface.py +0 -0
  373. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/descriptors.py +0 -0
  374. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/duckdb_statistics.py +0 -0
  375. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/secret_type.py +0 -0
  376. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/setting.py +0 -0
  377. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/catalog/storage.py +0 -0
  378. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/__init__.py +0 -0
  379. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/aggregate.py +0 -0
  380. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/catalog_mixin.py +0 -0
  381. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli.py +0 -0
  382. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_catalog.py +0 -0
  383. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_schema.py +0 -0
  384. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_table.py +0 -0
  385. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_transaction.py +0 -0
  386. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_utils.py +0 -0
  387. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/cli_view.py +0 -0
  388. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/client/errors.py +0 -0
  389. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/__init__.py +0 -0
  390. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/_common.py +0 -0
  391. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_constants.py +0 -0
  392. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_protocol_version.py +0 -0
  393. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_request_builders.py +0 -0
  394. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_schemas.py +0 -0
  395. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
  396. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_request_builders.py +0 -0
  397. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/cpp_secret_schemas.py +0 -0
  398. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/go_schemas.py +0 -0
  399. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/java_schemas.py +0 -0
  400. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/protocol_version.py +0 -0
  401. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/rust_request_builders.py +0 -0
  402. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/rust_schemas.py +0 -0
  403. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/ts_client.py +0 -0
  404. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/codegen/ts_schemas.py +0 -0
  405. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/copy_from_function.py +0 -0
  406. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/copy_to_function.py +0 -0
  407. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/exceptions.py +0 -0
  408. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function.py +0 -0
  409. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage.py +0 -0
  410. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage_azure_sql.py +0 -0
  411. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/function_storage_cf_do.py +0 -0
  412. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/__init__.py +0 -0
  413. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/demo_storage.py +0 -0
  414. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/landing.html +0 -0
  415. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/landing_page.py +0 -0
  416. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/vgi-client.js +0 -0
  417. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/http/worker_page.py +0 -0
  418. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/invocation.py +0 -0
  419. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/logging_config.py +0 -0
  420. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/meta_worker.py +0 -0
  421. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/metadata.py +0 -0
  422. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/otel.py +0 -0
  423. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/profiling.py +0 -0
  424. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/protocol.py +0 -0
  425. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/protocol_version.txt +0 -0
  426. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/py.typed +0 -0
  427. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/scalar_function.py +0 -0
  428. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/schema_utils.py +0 -0
  429. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/secret_protocol.py +0 -0
  430. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/secret_service.py +0 -0
  431. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/serve.py +0 -0
  432. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/split_token.py +0 -0
  433. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_buffering_function.py +0 -0
  434. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_filter_pushdown.py +0 -0
  435. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_function.py +0 -0
  436. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/table_in_out_function.py +0 -0
  437. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/__init__.py +0 -0
  438. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/_duckdb_compat.py +0 -0
  439. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/client.py +0 -0
  440. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/protocol.py +0 -0
  441. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/transactor/server.py +0 -0
  442. {vgi_python-0.31.1 → vgi_python-0.31.2}/vgi/worker.py +0 -0
  443. {vgi_python-0.31.1 → vgi_python-0.31.2}/wrangler.jsonc +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: vgi-python
3
- Version: 0.31.1
3
+ Version: 0.31.2
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vgi-python"
3
- version = "0.31.1"
3
+ version = "0.31.2"
4
4
  description = "Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow"
5
5
  readme = "README.md"
6
6
  keywords = [
@@ -237,6 +237,68 @@ class TestTableFunctionSettingAnnotations:
237
237
  assert "details" in table.schema.names # verbose mode adds details column
238
238
  assert table.column("greeting").to_pylist() == ["Hola", "Hola", "Hola"]
239
239
 
240
+ def test_secret_delivers_dict_of_scalars(self, fixture_worker: str) -> None:
241
+ """SecretDemoFunction (table function) receives a client-supplied secret.
242
+
243
+ Regression for `Client.table_function` hardcoding `secrets=None` on
244
+ the wire — the same `vgi_example` secret shape already proven to work
245
+ for `ReturnSecretValueFunction` (scalar) above, now exercised through
246
+ the table-function path instead.
247
+ """
248
+ from vgi.client import Client
249
+
250
+ # SecretDemoFunction resolves via `params.secrets.of_type("vgi_example")`
251
+ # (not the `Secret()`-annotation path `test_secret_delivers_dict_of_scalars`
252
+ # above uses), which filters on the secret payload's OWN `type` field —
253
+ # so, unlike that test's arbitrary `"type": "test"`, this one must be
254
+ # `"type": "vgi_example"` to match.
255
+ secret_value = {"type": "vgi_example", "provider": "config", "secret_string": "s3cr3t"}
256
+
257
+ with Client(fixture_worker) as client:
258
+ outputs = list(
259
+ client.table_function(
260
+ function_name="secret_demo",
261
+ schema_name="main",
262
+ secrets={"vgi_example": secret_value},
263
+ )
264
+ )
265
+
266
+ table = pa.Table.from_batches(outputs)
267
+ assert dict(zip(table.column("key").to_pylist(), table.column("value").to_pylist(), strict=True)) == {
268
+ "type": "vgi_example",
269
+ "provider": "config",
270
+ "secret_string": "s3cr3t",
271
+ }
272
+
273
+ def test_secret_delivers_to_table_in_out_function(self, fixture_worker: str) -> None:
274
+ """SecretInOutFunction receives a client-supplied secret.
275
+
276
+ Regression for `Client.table_in_out_function` hardcoding `secrets=None`
277
+ on the wire — the fixture (`secret_in_out`) already existed but had no
278
+ test exercising it end to end, which is exactly how the bug went
279
+ unnoticed.
280
+ """
281
+ from vgi.client import Client
282
+
283
+ # Same `of_type("vgi_example")` resolution as SecretDemoFunction above —
284
+ # the payload's own `type` field must equal the requested secret_type.
285
+ secret_value = {"type": "vgi_example", "provider": "config", "secret_string": "s3cr3t"}
286
+ batch = pa.RecordBatch.from_pydict({"n": [1, 2]})
287
+
288
+ with Client(fixture_worker) as client:
289
+ outputs = list(
290
+ client.table_in_out_function(
291
+ function_name="secret_in_out",
292
+ schema_name="main",
293
+ input=iter([batch]),
294
+ secrets={"vgi_example": secret_value},
295
+ )
296
+ )
297
+
298
+ table = pa.Table.from_batches(outputs)
299
+ assert table.column("n").to_pylist() == [1, 2]
300
+ assert table.column("secret_string").to_pylist() == ["s3cr3t", "s3cr3t"]
301
+
240
302
 
241
303
  # ---------------------------------------------------------------------------
242
304
  # Tests for auto-population of Meta.required_settings/required_secrets
@@ -2569,7 +2569,7 @@ requires-dist = [
2569
2569
 
2570
2570
  [[package]]
2571
2571
  name = "vgi-python"
2572
- version = "0.31.0"
2572
+ version = "0.31.2"
2573
2573
  source = { editable = "." }
2574
2574
  dependencies = [
2575
2575
  { name = "click" },
@@ -2014,6 +2014,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2014
2014
  projection_ids: list[int] | None = None,
2015
2015
  pushdown_filters: bytes | None = None,
2016
2016
  settings: dict[str, Any] | None = None,
2017
+ secrets: dict[str, Any] | None = None,
2017
2018
  transaction_opaque_data: bytes | None = None,
2018
2019
  parent_row_callback: Callable[[list[int]], None] | None = None,
2019
2020
  has_finalize: bool = True,
@@ -2043,6 +2044,8 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2043
2044
  to push down to the function.
2044
2045
  settings: Optional dictionary of settings/pragmas to
2045
2046
  pass to the function.
2047
+ secrets: Optional dictionary of secret name to value pairs.
2048
+ Values can be simple scalars or dicts (for struct-typed secrets).
2046
2049
  transaction_opaque_data: Optional unique identifier for the DuckDB transaction.
2047
2050
  parent_row_callback: Optional callback invoked once per yielded
2048
2051
  output batch (before finalize), immediately before the yield,
@@ -2108,7 +2111,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2108
2111
  function_type=FunctionType.TABLE,
2109
2112
  input_schema=input_schema,
2110
2113
  settings=settings,
2111
- secrets=None,
2114
+ secrets=secrets,
2112
2115
  transaction_opaque_data=transaction_opaque_data,
2113
2116
  projection_ids=projection_ids,
2114
2117
  pushdown_filters_batch=pushdown_filters_batch,
@@ -2173,6 +2176,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2173
2176
  projection_ids: list[int] | None = None,
2174
2177
  pushdown_filters: bytes | None = None,
2175
2178
  settings: dict[str, Any] | None = None,
2179
+ secrets: dict[str, Any] | None = None,
2176
2180
  transaction_opaque_data: bytes | None = None,
2177
2181
  copy_to: CopyToContext | None = None,
2178
2182
  input_schema: pa.Schema | None = None,
@@ -2215,6 +2219,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2215
2219
  projection_ids: Optional column indices for projection.
2216
2220
  pushdown_filters: Optional serialized filter predicates.
2217
2221
  settings: Optional settings/pragmas to pass to the function.
2222
+ secrets: Optional dictionary of secret name to value pairs.
2218
2223
  transaction_opaque_data: Optional DuckDB transaction identifier.
2219
2224
  copy_to: Optional [`CopyToContext`][] marking this sink as a
2220
2225
  ``COPY ... TO`` write. A ``CopyToFunction`` returns no finalize
@@ -2261,7 +2266,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2261
2266
  function_type=FunctionType.TABLE_BUFFERING,
2262
2267
  input_schema=input_schema,
2263
2268
  settings=settings,
2264
- secrets=None,
2269
+ secrets=secrets,
2265
2270
  transaction_opaque_data=transaction_opaque_data,
2266
2271
  copy_to=copy_to,
2267
2272
  )
@@ -2422,6 +2427,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2422
2427
  projection_ids: list[int] | None = None,
2423
2428
  pushdown_filters: bytes | None = None,
2424
2429
  settings: dict[str, Any] | None = None,
2430
+ secrets: dict[str, Any] | None = None,
2425
2431
  transaction_opaque_data: bytes | None = None,
2426
2432
  target_split_bytes: int | None = None,
2427
2433
  min_splits: int | None = None,
@@ -2460,6 +2466,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2460
2466
  pushdown_filters: Optional byte string of filter predicates,
2461
2467
  same wire format as :meth:`table_function`'s.
2462
2468
  settings: Optional dictionary of settings/pragmas.
2469
+ secrets: Optional dictionary of secret name to value pairs.
2463
2470
  transaction_opaque_data: Optional transaction identifier.
2464
2471
  target_split_bytes: Requested split size — the primary sizing
2465
2472
  lever; the client can't see per-split cost and will treat
@@ -2499,7 +2506,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2499
2506
  arguments=arguments,
2500
2507
  function_type=FunctionType.TABLE,
2501
2508
  settings=settings,
2502
- secrets=None,
2509
+ secrets=secrets,
2503
2510
  transaction_opaque_data=transaction_opaque_data,
2504
2511
  )
2505
2512
  bind_response = self._do_bind(self._primary.proxy, bind_request, None)
@@ -2542,6 +2549,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2542
2549
  projection_ids: list[int] | None = None,
2543
2550
  pushdown_filters: bytes | None = None,
2544
2551
  settings: dict[str, Any] | None = None,
2552
+ secrets: dict[str, Any] | None = None,
2545
2553
  transaction_opaque_data: bytes | None = None,
2546
2554
  copy_from: CopyFromContext | None = None,
2547
2555
  split_tokens: list[bytes] | None = None,
@@ -2577,6 +2585,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2577
2585
  to push down to the function.
2578
2586
  settings: Optional dictionary of settings/pragmas to
2579
2587
  pass to the function.
2588
+ secrets: Optional dictionary of secret name to value pairs.
2580
2589
  transaction_opaque_data: Optional unique identifier for the DuckDB transaction.
2581
2590
  copy_from: Optional [`CopyFromContext`][] marking this scan as a
2582
2591
  ``COPY ... FROM`` read. Prefer :meth:`copy_from`, which builds
@@ -2640,7 +2649,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2640
2649
  function_type=FunctionType.TABLE,
2641
2650
  input_schema=None,
2642
2651
  settings=settings,
2643
- secrets=None,
2652
+ secrets=secrets,
2644
2653
  transaction_opaque_data=transaction_opaque_data,
2645
2654
  projection_ids=projection_ids,
2646
2655
  pushdown_filters_batch=pushdown_filters_batch,
@@ -2678,6 +2687,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2678
2687
  projection_ids: list[int] | None = None,
2679
2688
  pushdown_filters: bytes | None = None,
2680
2689
  settings: dict[str, Any] | None = None,
2690
+ secrets: dict[str, Any] | None = None,
2681
2691
  transaction_opaque_data: bytes | None = None,
2682
2692
  resume_token: bytes | None = None,
2683
2693
  ) -> ResumableTableScan:
@@ -2703,6 +2713,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2703
2713
  pushdown). ``None`` selects all columns.
2704
2714
  pushdown_filters: Optional serialized filter-pushdown payload.
2705
2715
  settings: Optional DuckDB settings to apply for the scan.
2716
+ secrets: Optional dictionary of secret name to value pairs.
2706
2717
  transaction_opaque_data: Optional catalog transaction handle.
2707
2718
  resume_token: Continuation token from a prior batch to resume from;
2708
2719
  must be paired with the same ``function_name``/projection/
@@ -2737,7 +2748,7 @@ class Client(CatalogClientMixin, AggregateClientMixin):
2737
2748
  function_type=FunctionType.TABLE,
2738
2749
  input_schema=None,
2739
2750
  settings=settings,
2740
- secrets=None,
2751
+ secrets=secrets,
2741
2752
  transaction_opaque_data=transaction_opaque_data,
2742
2753
  )
2743
2754
  bind_response = self._do_bind(self._primary.proxy, bind_request, None)
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