vgi-python 0.11.0__tar.gz → 0.11.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vgi_python-0.11.0 → vgi_python-0.11.1}/PKG-INFO +1 -1
- {vgi_python-0.11.0 → vgi_python-0.11.1}/pyproject.toml +1 -1
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/landing/_checker.py +10 -4
- {vgi_python-0.11.0 → vgi_python-0.11.1}/uv.lock +1 -1
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/describe_json.py +12 -8
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.gitattributes +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/dependabot.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.github/workflows/release.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.gitignore +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.python-version +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/.vale.ini +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/CLAUDE.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/LICENSE +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/README.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/SECURITY.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/ci/README.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/ci/run-integration.sh +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/arguments.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/auth.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/catalogs.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/client.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/exceptions.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/filters.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/functions.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/http.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/index.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/metadata.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/observability.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/storage.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/transactor.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/api/worker.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/argument-serialization.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/logo.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/assets/social-card.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/authentication.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/catalog-interface.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/cli.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/column-statistics.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/concepts/index.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/contributing-docs.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/generator-api.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/index.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/index.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/lifecycle.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/metadata.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/overrides/main.html +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/robots.txt +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/shared-storage.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/tutorial/index.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/tutorial/table.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/docs/vgi-logo.png +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/calc_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/filter_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/row_count_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/examples/sum_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/mkdocs.yml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/scripts/measure_startup.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/test-data/generate.sh +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_required_field_filter_paths.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/client/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/client/test_cli.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/conftest.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/landing/describe.expected.json +237 -237
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/landing/describe.schema.json +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_auth.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_docstrings.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_exceptions.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_function_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_landing_conformance.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_metadata.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_otel.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_serve.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_union_argument.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/test_worker_page.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_duckdb.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/argument_spec.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/arguments.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/auth.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/client/client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/exceptions.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/function_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/landing.html +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/invocation.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/logging_config.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/meta_worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/metadata.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/otel.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/protocol.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/py.typed +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/scalar_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/schema_utils.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/secret_service.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/serve.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/table_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/transactor/client.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/transactor/server.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/vgi/worker.py +0 -0
- {vgi_python-0.11.0 → vgi_python-0.11.1}/wrangler.jsonc +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow
|
|
5
5
|
Project-URL: Homepage, https://query.farm
|
|
6
6
|
Project-URL: Repository, https://github.com/Query-farm/vgi-python
|
|
@@ -63,7 +63,7 @@ def check(
|
|
|
63
63
|
"""Return a list of failure strings (empty == conformant)."""
|
|
64
64
|
base = base_url.rstrip("/")
|
|
65
65
|
fails: list[str] = []
|
|
66
|
-
schema = json.loads(schema_path.read_text())
|
|
66
|
+
schema = json.loads(schema_path.read_text(encoding="utf-8"))
|
|
67
67
|
columns_schema = {**schema, **schema["$defs"]["columns"]}
|
|
68
68
|
|
|
69
69
|
# 1) describe.json — schema-valid.
|
|
@@ -105,11 +105,17 @@ def check(
|
|
|
105
105
|
# 4) Golden diff (cross-language equality).
|
|
106
106
|
if golden_path is not None:
|
|
107
107
|
got = _canonical(normalize(doc))
|
|
108
|
-
want = golden_path.read_text() if golden_path.exists() else None
|
|
108
|
+
want = golden_path.read_text(encoding="utf-8") if golden_path.exists() else None
|
|
109
109
|
if want is None:
|
|
110
110
|
fails.append(f"golden {golden_path} does not exist (run with --update)")
|
|
111
111
|
elif got.strip() != want.strip():
|
|
112
|
-
|
|
112
|
+
import difflib
|
|
113
|
+
|
|
114
|
+
diff = list(
|
|
115
|
+
difflib.unified_diff(want.strip().splitlines(), got.strip().splitlines(), "golden", "live", lineterm="")
|
|
116
|
+
)
|
|
117
|
+
snippet = "\n".join(diff[:40])
|
|
118
|
+
fails.append(f"describe.json does not match golden {golden_path.name}:\n{snippet}")
|
|
113
119
|
|
|
114
120
|
return fails
|
|
115
121
|
|
|
@@ -127,7 +133,7 @@ def main() -> int:
|
|
|
127
133
|
ap.error("--update requires --golden")
|
|
128
134
|
_, body, _ = _get(f"{args.url.rstrip('/')}/describe.json")
|
|
129
135
|
args.golden.parent.mkdir(parents=True, exist_ok=True)
|
|
130
|
-
args.golden.write_text(_canonical(normalize(json.loads(body))) + "\n")
|
|
136
|
+
args.golden.write_text(_canonical(normalize(json.loads(body))) + "\n", encoding="utf-8")
|
|
131
137
|
print(f"wrote golden {args.golden}")
|
|
132
138
|
return 0
|
|
133
139
|
|
|
@@ -119,13 +119,13 @@ def _attach(
|
|
|
119
119
|
# ---------------------------------------------------------------------------
|
|
120
120
|
|
|
121
121
|
|
|
122
|
-
def _meta(field: pa.Field, key: bytes) -> str | None:
|
|
122
|
+
def _meta(field: pa.Field[Any], key: bytes) -> str | None:
|
|
123
123
|
md = field.metadata or {}
|
|
124
124
|
raw = md.get(key)
|
|
125
125
|
return raw.decode("utf-8") if raw is not None else None
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
def _column(field: pa.Field) -> dict[str, Any]:
|
|
128
|
+
def _column(field: pa.Field[Any]) -> dict[str, Any]:
|
|
129
129
|
col: dict[str, Any] = {"name": field.name, "type": str(field.type)}
|
|
130
130
|
comment = _meta(field, b"comment") or _meta(field, VGI_DOC_KEY)
|
|
131
131
|
if comment:
|
|
@@ -157,7 +157,7 @@ def _function_returns(fn: FunctionInfo) -> str | None:
|
|
|
157
157
|
return None
|
|
158
158
|
if fn.function_type in (FunctionType.SCALAR, FunctionType.AGGREGATE):
|
|
159
159
|
# Scalar/aggregate output is a single "result" column.
|
|
160
|
-
return str(schema
|
|
160
|
+
return str(schema.field(0).type)
|
|
161
161
|
cols = ", ".join(f"{f.name} {f.type}" for f in schema)
|
|
162
162
|
return f"TABLE({cols})"
|
|
163
163
|
|
|
@@ -206,7 +206,9 @@ def _schema_contents(
|
|
|
206
206
|
return []
|
|
207
207
|
|
|
208
208
|
|
|
209
|
-
def _build_schemas(
|
|
209
|
+
def _build_schemas(
|
|
210
|
+
iface: CatalogInterface, attach_opaque_data: AttachOpaqueData
|
|
211
|
+
) -> tuple[list[dict[str, Any]], dict[str, int]]:
|
|
210
212
|
"""Return ``(schemas, counts)`` for the attached catalog."""
|
|
211
213
|
try:
|
|
212
214
|
schema_infos = list(iface.schemas(attach_opaque_data=attach_opaque_data, transaction_opaque_data=None))
|
|
@@ -214,9 +216,11 @@ def _build_schemas(iface: CatalogInterface, attach_opaque_data: AttachOpaqueData
|
|
|
214
216
|
logger.debug("iface.schemas() failed", exc_info=True)
|
|
215
217
|
return [], {"schemas": 0, "tables": 0, "views": 0, "functions": 0}
|
|
216
218
|
|
|
217
|
-
schemas: list[dict] = []
|
|
219
|
+
schemas: list[dict[str, Any]] = []
|
|
218
220
|
totals = {"schemas": 0, "tables": 0, "views": 0, "functions": 0}
|
|
219
|
-
|
|
221
|
+
# Deterministic ordering so describe.json (and the conformance golden) is
|
|
222
|
+
# stable across platforms / Python versions / worker iteration order.
|
|
223
|
+
for si in sorted(schema_infos, key=lambda s: s.name):
|
|
220
224
|
tables_raw: list[TableInfo] = _schema_contents(iface, attach_opaque_data, si.name, SchemaObjectType.TABLE)
|
|
221
225
|
views_raw: list[ViewInfo] = _schema_contents(iface, attach_opaque_data, si.name, SchemaObjectType.VIEW)
|
|
222
226
|
funcs_raw: list[FunctionInfo] = []
|
|
@@ -228,14 +232,14 @@ def _build_schemas(iface: CatalogInterface, attach_opaque_data: AttachOpaqueData
|
|
|
228
232
|
funcs_raw.extend(_schema_contents(iface, attach_opaque_data, si.name, kind))
|
|
229
233
|
|
|
230
234
|
tables = []
|
|
231
|
-
for t in tables_raw:
|
|
235
|
+
for t in sorted(tables_raw, key=lambda x: x.name):
|
|
232
236
|
schema = _read_schema(bytes(t.columns))
|
|
233
237
|
tables.append(
|
|
234
238
|
{"name": t.name, "cols": len(schema) if schema is not None else 0, "comment": t.comment or ""}
|
|
235
239
|
)
|
|
236
240
|
|
|
237
241
|
views = []
|
|
238
|
-
for v in views_raw:
|
|
242
|
+
for v in sorted(views_raw, key=lambda x: x.name):
|
|
239
243
|
views.append(
|
|
240
244
|
{
|
|
241
245
|
"name": v.name,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|