vgi-python 0.8.10__tar.gz → 0.8.11__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.8.10 → vgi_python-0.8.11}/.github/workflows/release.yml +74 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/PKG-INFO +1 -1
- vgi_python-0.8.11/packages/vgi-fixtures/docker/Dockerfile +39 -0
- vgi_python-0.8.11/packages/vgi-fixtures/docker/docker-entrypoint.sh +46 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/pyproject.toml +1 -1
- {vgi_python-0.8.10 → vgi_python-0.8.11}/uv.lock +1 -1
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.gitattributes +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.github/dependabot.yml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.github/styles/config/vocabularies/VGI/accept.txt +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.github/workflows/ci.yml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.github/workflows/docs.yml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.github/workflows/integration.yml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.gitignore +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.python-version +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/.vale.ini +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/CLAUDE.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/DOCS_ACCEPTANCE_CRITERIA.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/DOCS_REVIEW_RUBRIC.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/DOCS_USABILITY_TEST.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/LICENSE +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/README.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/SECURITY.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/ci/README.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/ci/preprocess-require.awk +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/ci/run-integration.sh +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/dist-vgi/.gitignore +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/aggregate-functions.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/arguments.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/auth.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/catalogs.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/client.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/exceptions.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/filters.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/functions.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/http.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/index.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/metadata.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/observability.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/storage.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/transactor.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/api/worker.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/argument-serialization.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/apple-touch-icon.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/favicon-16x16.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/favicon-32x32.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/favicon.ico +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/kinds/aggregate.svg +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/kinds/buffering.svg +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/kinds/scalar.svg +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/kinds/table-in-out.svg +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/kinds/table.svg +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/logo.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/assets/social-card.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/authentication.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/catalog-interface.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/cli.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/column-statistics.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/concepts/index.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/contributing-docs.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/filter-pushdown.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/generator-api.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/catalogs.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/function-patterns.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/http-auth.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/index.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/pushdown-and-statistics.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/how-to/state-storage.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/index.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/lifecycle.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/metadata.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/overrides/main.html +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/robots.txt +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/shared-storage.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/stylesheets/extra.css +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/tutorial/index.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/tutorial/scalar.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/tutorial/table.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/docs/vgi-logo.png +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/calc_scalar_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/calc_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/filter_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/greeting_scalar_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/row_count_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/series_streaming_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/examples/sum_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/mkdocs.yml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/packages/vgi-fixtures/LICENSE +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/packages/vgi-fixtures/README.md +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/packages/vgi-fixtures/pyproject.toml +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/scripts/measure_startup.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/scripts/run_all_tests.sh +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/test-data/generate.sh +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/_http_fixtures.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_catalog_interface.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_client_catalog.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_column_statistics.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_declarative.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_example_worker_catalog.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_integration.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_required_field_filter_paths.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_scan_branches.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_serialization.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_setting.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_time_travel.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/catalog/test_writable_table.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/client/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/client/test_broken_pipe.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/client/test_cli.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/client/test_cli_catalog_functions.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/client/test_worker_debug.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/_stub.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/conftest.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_accumulate.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_aggregate.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_attach.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_bearer_auth.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_directory_parity.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_function_inventory.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_http_client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_http_external_location.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_http_upload_url.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_macro.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_overload.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_protocol_inventory.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_resumable_scan.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_scalar.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_scalar_attach_opaque_data.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_secret.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_settings.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_table.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_table_in_out.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_view.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conformance/test_writable.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/conftest.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_bernoulli_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_binary_packet_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_conditional_message_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_hash_seed_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_multiply_by_setting_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_multiply_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_random_bytes_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/scalar/test_return_secret_value_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_constant_columns_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_double_sequence_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_exception_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_filter_echo_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_logging_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_nested_sequence_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_partitioned_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_projected_data_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_sequence_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_settings_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_struct_settings_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_ten_thousand_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_buffer_input_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_echo_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_exception_functions.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_filter_by_setting_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_repeat_inputs_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/generator/test_sum_all_columns_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table_in_out/test_client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_access_log_audit.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_aggregate_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_argument_spec.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_auth.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_bind_exceptions.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_bind_request_at_clause.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_bound_storage_conformance.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_catalog_auth_binding.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_copy_from_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_copy_to_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_docstrings.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_documentation_examples.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_example_function_arg_types.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_examples_workers.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_exception_handling.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_exceptions.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_filter_pushdown.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_filter_pushdown_extension.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_function_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_function_storage_azure_sql.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_function_storage_cf_do.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_function_storage_cf_do_integration.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_function_storage_conformance.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_cpp_constants.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_cpp_protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_cpp_request_builders.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_cpp_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_cpp_secret.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_go_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_schemas_cross_lang.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_ts_client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_generated_ts_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_http_demo_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_http_s3_offload_input.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_http_s3_offload_output.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_metadata.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_mypy_consolidated.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_nest_tensor.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_otel.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_projection_enforcement.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_projection_repro.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_protocol_classes.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_resolved_secrets.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_schema_utils.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_serve.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_setting_secret_annotations.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_table_buffering_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_table_function_dynamic_to_string.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_tcp_transport.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_type_bounds.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_union_argument.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_worker_cli.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/test_worker_page.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/transactor/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/tests/transactor/test_transactor.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_duckdb.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_storage_profile.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/accumulate/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/accumulate/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/_common.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/basic.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/dynamic.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/generic.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/listagg.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/percentile.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/streaming.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/varargs.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/aggregate/window.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/attach_options.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/bad_enum.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/bad_protocol.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/cancellable.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/catalog.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/copy_from.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/copy_to.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/http_server.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/narrow_bind/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/narrow_bind/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/nest_tensor.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/orchard_catalog.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/projection_repro/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/projection_repro/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/_common.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/arithmetic.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/binary.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/formatting.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/geo.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/null_handling.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/random_demo.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/settings_secrets.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/scalar/type_info.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/schema_reconcile/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/schema_reconcile/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/simple_writable.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/_common.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/batch_index.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/batch_index_broken.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/catalog_scans.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/filters.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/late_materialization.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/make_series.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/misc.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/order_modes.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/pairs.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/partition_columns.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/partition_columns_broken.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/profiling_example.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/required_filters.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/sequence.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/settings.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/transaction_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/tt_pushdown.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/typed_probe.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table/versioned.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/table_in_out.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/versioned.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/versioned_tables.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/writable/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/writable/generic.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/writable/table.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/_test_fixtures/writable/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/aggregate_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/argument_spec.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/arguments.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/auth.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/_descriptor_spec.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/attach_option.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/catalog_interface.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/descriptors.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/duckdb_statistics.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/secret_type.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/setting.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/catalog/storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/catalog_mixin.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_catalog.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_schema.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_table.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_transaction.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_utils.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/cli_view.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/client/client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/_common.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_constants.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_request_builders.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_secret_protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_secret_request_builders.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/cpp_secret_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/go_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/protocol_version.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/ts_client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/codegen/ts_schemas.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/copy_from_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/copy_to_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/exceptions.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/function_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/function_storage_azure_sql.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/function_storage_cf_do.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/http/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/http/demo_storage.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/http/worker_page.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/invocation.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/logging_config.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/meta_worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/metadata.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/otel.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/protocol.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/protocol_version.txt +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/py.typed +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/scalar_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/schema_utils.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/secret_protocol.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/secret_service.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/serve.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/table_buffering_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/table_filter_pushdown.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/table_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/table_in_out_function.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/transactor/__init__.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/transactor/_duckdb_compat.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/transactor/client.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/transactor/protocol.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/transactor/server.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/vgi/worker.py +0 -0
- {vgi_python-0.8.10 → vgi_python-0.8.11}/wrangler.jsonc +0 -0
|
@@ -56,6 +56,80 @@ jobs:
|
|
|
56
56
|
name: dist-fixtures
|
|
57
57
|
path: dist-fixtures/
|
|
58
58
|
|
|
59
|
+
build-docker-image:
|
|
60
|
+
name: Build & push vgi-fixtures image (${{ matrix.short }})
|
|
61
|
+
needs: build
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
permissions:
|
|
64
|
+
contents: read
|
|
65
|
+
packages: write # push to GHCR
|
|
66
|
+
# One image per fixture worker, selected via the VGI_FIXTURE_WORKER build arg.
|
|
67
|
+
# The VGI extension's container transport uses plain `oci://…` string
|
|
68
|
+
# LOCATIONs (no struct env), so the worker must be baked into the tag rather
|
|
69
|
+
# than passed at runtime. Tags: ghcr.io/query-farm/vgi-fixtures:<ver>-<short>
|
|
70
|
+
# (plus :<ver> and :latest for the base worker). max-parallel: 1 so the heavy
|
|
71
|
+
# pip-install layer is built once and reused from the gha cache by the rest.
|
|
72
|
+
strategy:
|
|
73
|
+
fail-fast: false
|
|
74
|
+
max-parallel: 1
|
|
75
|
+
matrix:
|
|
76
|
+
include:
|
|
77
|
+
- { short: worker, worker: vgi-fixture-worker, latest: true }
|
|
78
|
+
- { short: versioned, worker: vgi-fixture-versioned-worker }
|
|
79
|
+
- { short: versioned-tables, worker: vgi-fixture-versioned-tables-worker }
|
|
80
|
+
- { short: attach-options, worker: vgi-fixture-attach-options-worker }
|
|
81
|
+
- { short: bad-protocol, worker: vgi-fixture-bad-protocol-worker }
|
|
82
|
+
- { short: bad-enum, worker: vgi-fixture-bad-enum-worker }
|
|
83
|
+
- { short: simple-writable, worker: vgi-fixture-simple-writable-worker }
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v7
|
|
86
|
+
|
|
87
|
+
# The image installs the exact wheels this release publishes.
|
|
88
|
+
- name: Download vgi wheel
|
|
89
|
+
uses: actions/download-artifact@v8
|
|
90
|
+
with:
|
|
91
|
+
name: dist-vgi
|
|
92
|
+
path: dist
|
|
93
|
+
- name: Download vgi-fixtures wheel
|
|
94
|
+
uses: actions/download-artifact@v8
|
|
95
|
+
with:
|
|
96
|
+
name: dist-fixtures
|
|
97
|
+
path: dist
|
|
98
|
+
|
|
99
|
+
- name: Compute image tags
|
|
100
|
+
id: meta
|
|
101
|
+
run: |
|
|
102
|
+
ver="${{ github.event.release.tag_name }}"
|
|
103
|
+
ver="${ver#v}" # normalize a leading v (v0.8.2 -> 0.8.2)
|
|
104
|
+
img="ghcr.io/query-farm/vgi-fixtures"
|
|
105
|
+
tags="$img:$ver-${{ matrix.short }}"
|
|
106
|
+
if [ "${{ matrix.latest }}" = "true" ]; then
|
|
107
|
+
tags="$tags,$img:$ver,$img:latest"
|
|
108
|
+
fi
|
|
109
|
+
echo "tags=$tags" >> "$GITHUB_OUTPUT"
|
|
110
|
+
|
|
111
|
+
- uses: docker/setup-buildx-action@v3
|
|
112
|
+
|
|
113
|
+
- name: Log in to GHCR
|
|
114
|
+
uses: docker/login-action@v3
|
|
115
|
+
with:
|
|
116
|
+
registry: ghcr.io
|
|
117
|
+
username: ${{ github.actor }}
|
|
118
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
119
|
+
|
|
120
|
+
- name: Build & push
|
|
121
|
+
uses: docker/build-push-action@v6
|
|
122
|
+
with:
|
|
123
|
+
context: .
|
|
124
|
+
file: packages/vgi-fixtures/docker/Dockerfile
|
|
125
|
+
platforms: linux/amd64
|
|
126
|
+
build-args: |
|
|
127
|
+
VGI_FIXTURE_WORKER=${{ matrix.worker }}
|
|
128
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
129
|
+
push: true
|
|
130
|
+
cache-from: type=gha
|
|
131
|
+
cache-to: type=gha,mode=max
|
|
132
|
+
|
|
59
133
|
publish-vgi:
|
|
60
134
|
name: Publish vgi to PyPI
|
|
61
135
|
needs: build
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vgi-python
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.11
|
|
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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
#
|
|
3
|
+
# vgi-fixtures — example/test VGI worker images for the VGI DuckDB extension.
|
|
4
|
+
#
|
|
5
|
+
# Each worker speaks vgi-rpc over stdin/stdout; the extension's oci:// container
|
|
6
|
+
# transport runs `docker run -i ... IMAGE stdio` and pipes the worker like a
|
|
7
|
+
# subprocess (full fidelity — same semantics as the local subprocess transport,
|
|
8
|
+
# unlike HTTP). Which worker runs is selected by VGI_FIXTURE_WORKER, baked per
|
|
9
|
+
# image tag via the build arg below (overridable at runtime with `-e`).
|
|
10
|
+
#
|
|
11
|
+
# Built from the SAME wheels published to PyPI in the release (the release
|
|
12
|
+
# workflow copies them into ./dist), so the image matches the released
|
|
13
|
+
# vgi-fixtures exactly — no separate source path to drift.
|
|
14
|
+
|
|
15
|
+
FROM python:3.13-slim
|
|
16
|
+
|
|
17
|
+
# vgi-python (core) + vgi-fixtures (worker entry points + the vgi/_test_fixtures
|
|
18
|
+
# sources the fixtures wheel force-includes). Installing both local wheels; the
|
|
19
|
+
# extras the fixtures require ([duckdb], [test-fixtures-writable]) resolve from
|
|
20
|
+
# PyPI. Kept as one heavy layer so the per-worker ARG below doesn't bust it.
|
|
21
|
+
COPY dist/*.whl /tmp/wheels/
|
|
22
|
+
RUN pip install --no-cache-dir /tmp/wheels/*.whl && rm -rf /tmp/wheels
|
|
23
|
+
|
|
24
|
+
# Worker selection — placed AFTER the install so the (expensive) layer above is
|
|
25
|
+
# shared across every per-worker tag; only this cheap tail rebuilds per worker.
|
|
26
|
+
ARG VGI_FIXTURE_WORKER=vgi-fixture-worker
|
|
27
|
+
ENV VGI_FIXTURE_WORKER=${VGI_FIXTURE_WORKER}
|
|
28
|
+
|
|
29
|
+
COPY packages/vgi-fixtures/docker/docker-entrypoint.sh /usr/local/bin/vgi-fixtures-entrypoint
|
|
30
|
+
RUN chmod +x /usr/local/bin/vgi-fixtures-entrypoint
|
|
31
|
+
|
|
32
|
+
LABEL org.opencontainers.image.source="https://github.com/Query-farm/vgi-python" \
|
|
33
|
+
org.opencontainers.image.description="Example/test VGI worker (stdio) for the VGI DuckDB extension" \
|
|
34
|
+
org.opencontainers.image.licenses="MIT"
|
|
35
|
+
|
|
36
|
+
# The extension passes the transport mode as argv[1]; stdio is the default + only
|
|
37
|
+
# mode this image implements.
|
|
38
|
+
ENTRYPOINT ["/usr/local/bin/vgi-fixtures-entrypoint"]
|
|
39
|
+
CMD ["stdio"]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Entrypoint for the vgi-fixtures container image.
|
|
3
|
+
#
|
|
4
|
+
# The VGI DuckDB extension's container (oci://) transport invokes the image as
|
|
5
|
+
# docker run -i ... IMAGE <mode>
|
|
6
|
+
# where <mode> is the transport it wants: "stdio" (private per-process, piped over
|
|
7
|
+
# stdin/stdout exactly like the subprocess transport) or "tcp"/"http" (a shared
|
|
8
|
+
# server). This image implements *stdio only* — the fixture workers speak vgi-rpc
|
|
9
|
+
# over stdin/stdout and advertise no farm.query.vgi.transports label, so the
|
|
10
|
+
# extension stays on per-process stdio for it.
|
|
11
|
+
#
|
|
12
|
+
# Which fixture worker runs is chosen by $VGI_FIXTURE_WORKER. It is baked per image
|
|
13
|
+
# tag via the Dockerfile build arg (e.g. the ":<ver>-versioned" tag bakes
|
|
14
|
+
# vgi-fixture-versioned-worker) and can be overridden at runtime with
|
|
15
|
+
# docker run -e VGI_FIXTURE_WORKER=vgi-fixture-bad-enum-worker ...
|
|
16
|
+
set -eu
|
|
17
|
+
|
|
18
|
+
mode="${1:-stdio}"
|
|
19
|
+
worker="${VGI_FIXTURE_WORKER:-vgi-fixture-worker}"
|
|
20
|
+
|
|
21
|
+
# Only ever exec a published vgi-fixture-* console script — never an arbitrary
|
|
22
|
+
# command smuggled in through the env var.
|
|
23
|
+
case "$worker" in
|
|
24
|
+
vgi-fixture-*) : ;;
|
|
25
|
+
*)
|
|
26
|
+
echo "vgi-fixtures: refusing to run non-fixture command '$worker'" >&2
|
|
27
|
+
exit 64
|
|
28
|
+
;;
|
|
29
|
+
esac
|
|
30
|
+
|
|
31
|
+
case "$mode" in
|
|
32
|
+
stdio)
|
|
33
|
+
# The worker serves vgi-rpc over stdin/stdout and runs until EOF.
|
|
34
|
+
exec "$worker"
|
|
35
|
+
;;
|
|
36
|
+
tcp | http)
|
|
37
|
+
echo "vgi-fixtures: transport '$mode' is not supported by this image (stdio only)." >&2
|
|
38
|
+
echo " It advertises no farm.query.vgi.transports label, so the extension" >&2
|
|
39
|
+
echo " uses per-process stdio; do not force connection=$mode for it." >&2
|
|
40
|
+
exit 64
|
|
41
|
+
;;
|
|
42
|
+
*)
|
|
43
|
+
echo "vgi-fixtures: unknown transport mode '$mode' (expected: stdio)" >&2
|
|
44
|
+
exit 64
|
|
45
|
+
;;
|
|
46
|
+
esac
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_constant_columns_function.py
RENAMED
|
File without changes
|
{vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_double_sequence_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_nested_sequence_function.py
RENAMED
|
File without changes
|
|
File without changes
|
{vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_projected_data_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vgi_python-0.8.10 → vgi_python-0.8.11}/tests/table/generator/test_struct_settings_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|