vgi-python 0.28.0__tar.gz → 0.28.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.28.0 → vgi_python-0.28.1}/PKG-INFO +1 -1
- {vgi_python-0.28.0 → vgi_python-0.28.1}/pyproject.toml +1 -1
- {vgi_python-0.28.0 → vgi_python-0.28.1}/uv.lock +1 -1
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/landing.html +61 -13
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/vgi-client.js +9 -9
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.gitattributes +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/dependabot.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.github/workflows/release.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.gitignore +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.python-version +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/.vale.ini +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/CLAUDE.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/LICENSE +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/README.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/RELEASE-RUNBOOK.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/SECURITY.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/ci/README.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/ci/run-integration.sh +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/arguments.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/auth.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/catalogs.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/client.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/exceptions.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/filters.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/functions.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/http.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/index.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/metadata.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/observability.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/storage.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/transactor.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/api/worker.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/argument-serialization.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/logo.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/assets/social-card.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/authentication.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/catalog-interface.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/cli.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/column-statistics.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/concepts/index.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/contributing-docs.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/generator-api.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/global-functions.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/index.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/index.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/lifecycle.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/metadata.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/overrides/main.html +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/robots.txt +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/shared-storage.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/tutorial/index.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/tutorial/table.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/docs/vgi-logo.png +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/batch_index_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/calc_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/filter_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/row_count_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/examples/sum_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/mkdocs.yml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/packages/vgi-fixtures/docker/Dockerfile +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/packages/vgi-fixtures/docker/docker-entrypoint.sh +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/scripts/measure_startup.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/test-data/generate.sh +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_attach_option.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_required_filters.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_cli.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_stop_force.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_table_column_statistics.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_const_param_enforcement.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_container.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_copy_from.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_copy_to.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_github.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/conftest.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table/test_wide_columns.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_substream_partial_sum_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/test_blended_metadata.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_auth.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_cache_control.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_call_state_attach.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_docstrings.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_exceptions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_function_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_metadata.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_otel.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_schema_scoped_functions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_serve.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_signing_key.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_union_argument.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/test_worker_page.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_duckdb.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/same_name.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/secret_typed.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/companion.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/global_functions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/bench_ladder.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/same_name.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/cache.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/same_name_cached.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table/wide.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/table_in_out_same_name.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/twin_catalogs.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/argument_spec.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/arguments.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/attach_header.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/auth.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/cache_control.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/client/client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/exceptions.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/function_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/landing_page.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/invocation.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/logging_config.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/meta_worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/metadata.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/otel.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/profiling.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/protocol.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/py.typed +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/scalar_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/schema_utils.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/secret_service.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/serve.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/table_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/transactor/client.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/transactor/server.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/vgi/worker.py +0 -0
- {vgi_python-0.28.0 → vgi_python-0.28.1}/wrangler.jsonc +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.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
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
--accent-2: #a52121; --on-accent: #fdf6ef; --ai: #256b3c; --ai-soft: #d6e7db; --on-ai: #f2faf4;
|
|
15
15
|
--cup-soft: #e6f1ea; --cup: #2f8f4e; --cup-2: #27713f; --on-cup: #f2faf4;
|
|
16
16
|
--code-bg: #1f1e18; --code-ink: #f3efe2; --ok: #3f9142; --hit: #fff4c2;
|
|
17
|
-
--k-table:#0e7c86; --k-view:#7a4fd0; --k-scalar:#2f8f4e; --k-tablefn:#9a6500; --k-agg:#c05a2a; --k-tio:#b03a6e; --type-color:#0e7c86;
|
|
17
|
+
--k-table:#0e7c86; --k-view:#7a4fd0; --k-scalar:#2f8f4e; --k-tablefn:#9a6500; --k-agg:#c05a2a; --k-tio:#b03a6e; --k-macro:#2b6cb0; --type-color:#0e7c86;
|
|
18
18
|
--tint:6%; --tint-hover:11%; --tint-open:15%; --edge:24%; --edge-hover:46%; --edge-open:56%;
|
|
19
19
|
--radius: 14px; --row-radius: 9px;
|
|
20
20
|
--mono: ui-monospace, "SF Mono", Menlo, monospace;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
--accent-2: #ee9a94; --on-accent: #1a120f; --ai: #5cba74; --ai-soft: #16231a; --on-ai: #0f1a10;
|
|
29
29
|
--cup-soft: #1b271e; --cup: #6fce87; --cup-2: #82d897; --on-cup: #10200f;
|
|
30
30
|
--code-bg: #100f0a; --code-ink: #ece7d6; --hit: #4a4222;
|
|
31
|
-
--k-table:#4fc7d0; --k-view:#b39ae8; --k-scalar:#6fce87; --k-tablefn:#e0b055; --k-agg:#e69264; --k-tio:#e084ad; --type-color:#5bbfc7;
|
|
31
|
+
--k-table:#4fc7d0; --k-view:#b39ae8; --k-scalar:#6fce87; --k-tablefn:#e0b055; --k-agg:#e69264; --k-tio:#e084ad; --k-macro:#7fb3e8; --type-color:#5bbfc7;
|
|
32
32
|
--tint:12%; --tint-hover:20%; --tint-open:26%; --edge:32%; --edge-hover:56%; --edge-open:68%;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -199,6 +199,7 @@
|
|
|
199
199
|
.grp .tri { color: var(--muted); }
|
|
200
200
|
.k-table { --kc: var(--k-table); } .k-view { --kc: var(--k-view); } .k-scalar { --kc: var(--k-scalar); }
|
|
201
201
|
.k-tablefn { --kc: var(--k-tablefn); } .k-agg { --kc: var(--k-agg); } .k-tio { --kc: var(--k-tio); }
|
|
202
|
+
.k-macro { --kc: var(--k-macro); }
|
|
202
203
|
|
|
203
204
|
/* level 3: object rows as tinted cards */
|
|
204
205
|
details.tbl, details.fn {
|
|
@@ -214,7 +215,20 @@
|
|
|
214
215
|
.row-icon { width: 16px; height: 16px; flex: none; color: var(--kc); }
|
|
215
216
|
.t-name, .fn-name { font-family: var(--mono); font-size: 12.5px; font-weight: 550; }
|
|
216
217
|
.t-meta { color: var(--muted); font-size: 11.5px; font-family: var(--mono); font-variant-numeric: tabular-nums; flex: none; }
|
|
217
|
-
|
|
218
|
+
/* The signature is the one item here that has no bounded length: a function
|
|
219
|
+
with a dozen named arguments runs many times the card's width. It must be
|
|
220
|
+
the item that gives, so it shrinks (`1 1 auto`) rather than refusing to
|
|
221
|
+
(`flex: none`, which overflowed the container), and `min-width: 0` is what
|
|
222
|
+
actually lets a flex item shrink below its content. `anywhere` breaks
|
|
223
|
+
inside a long type or identifier as a last resort, since the text is a
|
|
224
|
+
single unbroken run of mono with few spaces to wrap at. */
|
|
225
|
+
.fn-sig { color: var(--muted); font-size: 12px; font-family: var(--mono); flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
|
|
226
|
+
.fn-name { flex: none; }
|
|
227
|
+
/* Once the signature wraps to several lines, centring pushes the caret and
|
|
228
|
+
the icon to the middle of that block; top-align keeps them on the first
|
|
229
|
+
line, next to the name. */
|
|
230
|
+
details.fn > summary { align-items: flex-start; }
|
|
231
|
+
.fn-sig .sig-type { color: color-mix(in srgb, var(--kc) 55%, var(--muted)); }
|
|
218
232
|
|
|
219
233
|
/* level 4: body inset */
|
|
220
234
|
.t-body, .fn-body { padding: 9px 13px 12px; background: color-mix(in srgb, var(--kc) 4%, var(--bg)); border-radius: 0 0 var(--row-radius) var(--row-radius); }
|
|
@@ -491,9 +505,21 @@ async function schemaEntry(aod, si){
|
|
|
491
505
|
const r = fnReturns(f);
|
|
492
506
|
if (r) out.returns = r;
|
|
493
507
|
return out;
|
|
508
|
+
// Macros get their own buckets rather than folding into scalar/table. They
|
|
509
|
+
// are a different thing to call: DuckDB expands them inline as SQL, so they
|
|
510
|
+
// cost no RPC round-trip and run identically on every transport. Merging
|
|
511
|
+
// them also misreported the catalog — vgi-open-meteo has six scalar macros
|
|
512
|
+
// and zero scalar functions, and the page listed all six under "Scalar
|
|
513
|
+
// functions".
|
|
514
|
+
//
|
|
515
|
+
// Their parameters carry names only. A DuckDB macro is untyped, so the
|
|
516
|
+
// protocol has no type to send and this used to invent `ANY` for each one —
|
|
517
|
+
// which reads as "accepts any type" when it means "no type exists". Leaving
|
|
518
|
+
// it unset lets the signature and the argument card omit it, and keeps ANY
|
|
519
|
+
// meaning what it says on a genuinely polymorphic function argument.
|
|
494
520
|
}).concat((macrosRaw||[]).map(m=>({
|
|
495
|
-
name: m.name, type: String(m.macro_type).startsWith('TABLE') ? '
|
|
496
|
-
doc: m.comment || '', args: (m.parameters||[]).map(p=>({name:p
|
|
521
|
+
name: m.name, type: String(m.macro_type).startsWith('TABLE') ? 'table_macro' : 'scalar_macro',
|
|
522
|
+
doc: m.comment || '', args: (m.parameters||[]).map(p=>({name:p}))
|
|
497
523
|
})));
|
|
498
524
|
functions.sort((a,b)=> a.type===b.type ? byName(a,b) : (a.type<b.type?-1:1));
|
|
499
525
|
const entry = {name: si.name, tables, views, functions};
|
|
@@ -509,7 +535,7 @@ async function buildCatalog(info){
|
|
|
509
535
|
data_versions: (info.releases||[]).map(r=>Object.assign({spec:r.version}, r.summary?{label:r.summary}:{})),
|
|
510
536
|
attach_options: [],
|
|
511
537
|
tags: {},
|
|
512
|
-
counts: {schemas:0,tables:0,views:0,functions:0},
|
|
538
|
+
counts: {schemas:0,tables:0,views:0,functions:0,macros:0},
|
|
513
539
|
schemas: [],
|
|
514
540
|
_aod: null
|
|
515
541
|
};
|
|
@@ -539,11 +565,16 @@ async function buildCatalog(info){
|
|
|
539
565
|
const schemaInfos = (await client.schemas(cat._aod)).slice()
|
|
540
566
|
.sort((a,b)=>a.name<b.name?-1:a.name>b.name?1:0);
|
|
541
567
|
cat.schemas = await Promise.all(schemaInfos.map(si=>schemaEntry(cat._aod, si)));
|
|
568
|
+
// `s.functions` holds both, so macros are counted apart rather than inflating
|
|
569
|
+
// the function count — vgi-open-meteo reads "13 functions · 6 macros", not
|
|
570
|
+
// "19 functions" when it has no scalar functions at all.
|
|
571
|
+
const isMacro = f => f.type === 'scalar_macro' || f.type === 'table_macro';
|
|
542
572
|
cat.counts = {
|
|
543
573
|
schemas: cat.schemas.length,
|
|
544
574
|
tables: cat.schemas.reduce((n,s)=>n+s.tables.length,0),
|
|
545
575
|
views: cat.schemas.reduce((n,s)=>n+s.views.length,0),
|
|
546
|
-
functions: cat.schemas.reduce((n,s)=>n+s.functions.length,0)
|
|
576
|
+
functions: cat.schemas.reduce((n,s)=>n+s.functions.filter(f=>!isMacro(f)).length,0),
|
|
577
|
+
macros: cat.schemas.reduce((n,s)=>n+s.functions.filter(isMacro).length,0)
|
|
547
578
|
};
|
|
548
579
|
return cat;
|
|
549
580
|
}
|
|
@@ -824,16 +855,29 @@ function tableRow(catName, s, t, kind){ // kind: 'table' | 'view'
|
|
|
824
855
|
const FN_TYPES = [['scalar','Scalar functions','function','k-scalar'],
|
|
825
856
|
['table','Table functions','function','k-tablefn'],
|
|
826
857
|
['aggregate','Aggregate functions','aggregate','k-agg'],
|
|
827
|
-
['table_in_out','Table in-out functions','tio','k-tio']
|
|
858
|
+
['table_in_out','Table in-out functions','tio','k-tio'],
|
|
859
|
+
['scalar_macro','Scalar macros','function','k-macro'],
|
|
860
|
+
['table_macro','Table macros','function','k-macro']];
|
|
828
861
|
function argCard(a){
|
|
829
862
|
const def = (a.default!==undefined && a.default!==null) ? '<span class="arg-def">default '+esc(a.default)+'</span>' : '';
|
|
830
863
|
const desc = a.desc ? esc(a.desc) : '';
|
|
831
864
|
const meta = (desc||def) ? '<div class="col-comment">'+desc+(desc&&def?' · ':'')+def+'</div>' : '';
|
|
832
|
-
|
|
865
|
+
// A macro parameter has no type at all, and `duckdbType(undefined)` returns
|
|
866
|
+
// undefined — printed, that renders the literal string "undefined".
|
|
867
|
+
const type = a.type ? '<span class="col-type">'+esc(duckdbType(a.type))+'</span>' : '';
|
|
868
|
+
return '<div class="col-item"><div class="col"><span class="col-name">'+esc(a.name)+(a.named?'<span class="arg-kind"> :=</span>':'')+'</span>'+type+'</div>'+meta+'</div>';
|
|
833
869
|
}
|
|
834
870
|
function fnRow(f, iconName){
|
|
835
871
|
const pos = f.args.filter(a=>!a.named), named = f.args.filter(a=>a.named);
|
|
836
|
-
|
|
872
|
+
// The type is the useful half of a signature — `flood_daily(latitude,
|
|
873
|
+
// longitude, forecast_days :=, past_days :=)` says nothing about what to
|
|
874
|
+
// pass. `fnArgs` has resolved it all along; only this line dropped it, so
|
|
875
|
+
// reading a type meant expanding the row to reach the argument cards.
|
|
876
|
+
// Built as HTML rather than a string because the type carries its own span,
|
|
877
|
+
// so each part is escaped individually instead of the whole line at render.
|
|
878
|
+
const sigPart = a => esc(a.name) + (a.named ? ' :=' : '') +
|
|
879
|
+
(a.type ? ' <span class="sig-type">' + esc(duckdbType(a.type)) + '</span>' : '');
|
|
880
|
+
const sigHtml = '(' + pos.concat(named).map(sigPart).join(', ') + ')';
|
|
837
881
|
let argsGrid;
|
|
838
882
|
if (!f.args.length) argsGrid = '<div class="fn-noargs">No arguments</div>';
|
|
839
883
|
else if (!named.length) argsGrid = '<div class="args-label">Arguments</div><div class="cols">'+pos.map(argCard).join('')+'</div>';
|
|
@@ -841,7 +885,7 @@ function fnRow(f, iconName){
|
|
|
841
885
|
'<div class="args-label" style="margin-top:12px">Named arguments</div><div class="cols">'+named.map(argCard).join('')+'</div>';
|
|
842
886
|
const ret = f.returns ? '<div class="fn-returns"><b>Returns</b><span class="rtype">'+esc(f.returns)+'</span></div>' : '';
|
|
843
887
|
return '<details class="fn" data-name="'+esc(f.name.toLowerCase())+'">'+
|
|
844
|
-
'<summary>'+icon('caret','tri')+icon(iconName,'row-icon')+'<span class="fn-name">'+esc(f.name)+'</span><span class="fn-sig">'+
|
|
888
|
+
'<summary>'+icon('caret','tri')+icon(iconName,'row-icon')+'<span class="fn-name">'+esc(f.name)+'</span><span class="fn-sig">'+sigHtml+'</span></summary>'+
|
|
845
889
|
'<div class="fn-body">'+(f.doc? '<div class="t-desc">'+mdToHtml(f.doc)+'</div>':'')+argsGrid+ret+'</div></details>';
|
|
846
890
|
}
|
|
847
891
|
function fnGroups(fns){
|
|
@@ -864,7 +908,8 @@ function renderContents(){
|
|
|
864
908
|
const asof = (c.data_versions && c.data_versions.length)
|
|
865
909
|
? ' · <span class="asof">as of '+esc(currentSpec(c) || 'latest ('+latestSpec(c)+')')+'</span>' : '';
|
|
866
910
|
document.getElementById('cat-sub').innerHTML =
|
|
867
|
-
cc.schemas+' schemas · '+cc.tables+' tables · '+cc.views+' views · '+cc.functions+' functions'+
|
|
911
|
+
cc.schemas+' schemas · '+cc.tables+' tables · '+cc.views+' views · '+cc.functions+' functions'+
|
|
912
|
+
(cc.macros?' · '+cc.macros+' macro'+(cc.macros!==1?'s':''):'')+asof;
|
|
868
913
|
|
|
869
914
|
if (c.attach_error){
|
|
870
915
|
// Say why the catalog could not be listed. An empty tree here would read
|
|
@@ -875,9 +920,12 @@ function renderContents(){
|
|
|
875
920
|
|
|
876
921
|
const single = c.schemas.length===1;
|
|
877
922
|
root.innerHTML = c.schemas.map(s=>{
|
|
923
|
+
const sMacros = s.functions.filter(f=>f.type==='scalar_macro'||f.type==='table_macro').length;
|
|
924
|
+
const sFns = s.functions.length - sMacros;
|
|
878
925
|
const sub = [ s.tables.length+' table'+(s.tables.length!==1?'s':''),
|
|
879
926
|
s.views.length? s.views.length+' view'+(s.views.length!==1?'s':''):null,
|
|
880
|
-
|
|
927
|
+
sFns? sFns+' function'+(sFns!==1?'s':''):null,
|
|
928
|
+
sMacros? sMacros+' macro'+(sMacros!==1?'s':''):null
|
|
881
929
|
].filter(Boolean).join(' · ');
|
|
882
930
|
const openAttr = (single && s.tables.length<=8) ? ' open' : '';
|
|
883
931
|
const tblGrp = s.tables.length ? '<div class="grp k-table"><div class="glabel">'+icon('table')+'Tables</div>'+
|