diff --git a/.github/workflows/codegen-check.yml b/.github/workflows/codegen-check.yml deleted file mode 100644 index 1557089..0000000 --- a/.github/workflows/codegen-check.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Code Generation Check - -on: - pull_request: - -permissions: - contents: read - -jobs: - codegen-check: - name: Verify Code Generation - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - submodules: recursive - - - uses: prefix-dev/setup-pixi@v0.9.4 - with: - pixi-version: v0.62.2 - - - name: Run code generation - run: | - # fetch submodule tags since actions/checkout does not - git submodule foreach 'git fetch --unshallow || true' - # Run all code generation steps - pixi run codegen - - - name: Check for uncommitted changes - run: | - pixi run check-codegen diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml index 1b53d2f..da39f1e 100644 --- a/.github/workflows/example.yml +++ b/.github/workflows/example.yml @@ -22,8 +22,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 - with: - submodules: recursive - name: Install uv with python uses: astral-sh/setup-uv@v7 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 63ada67..6ed4c6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,8 +16,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 - with: - submodules: recursive - name: Set up Python uses: actions/setup-python@v6 with: diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index f467da8..c78916e 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -19,8 +19,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 - with: - submodules: recursive - uses: prefix-dev/setup-pixi@v0.9.4 with: pixi-version: v0.62.2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3964fbf..8db0f95 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,8 +20,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 - with: - submodules: recursive - name: Install uv with python uses: astral-sh/setup-uv@v7 with: diff --git a/.github/workflows/version-checks.yml b/.github/workflows/version-checks.yml index 987bb32..9b1633d 100644 --- a/.github/workflows/version-checks.yml +++ b/.github/workflows/version-checks.yml @@ -13,8 +13,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v6 - with: - submodules: recursive - name: Install uv with python uses: astral-sh/setup-uv@v7 diff --git a/.gitmodules b/.gitmodules index d9705e1..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "third_party/substrait"] - path = third_party/substrait - url = https://github.com/substrait-io/substrait diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8d7eb16..9ac1315 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## Get the repo Fork and clone the repo. ``` -git clone --recursive https://github.com//substrait-python.git +git clone https://github.com//substrait-python.git cd substrait-python ``` @@ -12,47 +12,6 @@ Activate environment with uv. uv sync --extra test ``` -## Update the substrait submodule locally -You can run update-submodule task to pull in latest substrait from upstream. -``` -pixi run update-submodule -``` - -Or you can update submodule and run code generation at the same time with -``` -pixi run update-substrait -``` - -This might be necessary if you are updating an existing checkout. -``` -git submodule sync --recursive -git submodule update --init --recursive -``` - -# Code generation - -You can run the full code generation using the following command or use the individual commands to selectively regenerate the generated code. This does not update the Substrait Git submodule. You can use pixi environment defined in pyproject.toml which contains all dependencies needed for code generation. - -``` -pixi run codegen -``` - -## Extension Copying - -Copy the core function extensions into substrait-python - -``` -pixi run copy-extensions -``` - -## Extensions stubs - -Substrait uses jsonschema to describe the data model for extension files. - -``` -pixi run codegen-extensions -``` - # Lint & Format Run the following pixi tasks to lint and format with ruff. diff --git a/check_codegen.sh b/check_codegen.sh deleted file mode 100755 index ceca8f2..0000000 --- a/check_codegen.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -if ! git diff --quiet --exit-code src/substrait/gen/; then - echo "Code generation produced changes. Generated code is out of sync!" - echo "" - git diff src/substrait/gen/ - echo "" - echo "To fix this, run:" - echo " pixi run codegen" - echo "Then commit the changes." - exit 1 -fi \ No newline at end of file diff --git a/check_substrait_package_versions.sh b/check_substrait_package_versions.sh index 2ee458a..b450d98 100755 --- a/check_substrait_package_versions.sh +++ b/check_substrait_package_versions.sh @@ -4,10 +4,16 @@ set -euo pipefail # Check that all substrait-* packages have the same version uv sync -protobuf_version=$(uv pip show substrait-protobuf | grep '^Version:' | awk '{print $2}') antlr_version=$(uv pip show substrait-antlr | grep '^Version:' | awk '{print $2}') +extension_version=$(uv pip show vbarua-substrait-extensions | grep '^Version:' | awk '{print $2}') +protobuf_version=$(uv pip show substrait-protobuf | grep '^Version:' | awk '{print $2}') if [ "$protobuf_version" != "$antlr_version" ]; then echo "error: substrait-protobuf ($protobuf_version) and substrait-antlr ($antlr_version) versions do not match" exit 1 fi + +if [ "$protobuf_version" != "$extension_version" ]; then + echo "error: substrait-protobuf ($protobuf_version) and substrait-extension ($extension_version) versions do not match" + exit 1 +fi diff --git a/copy_extension_yamls.sh b/copy_extension_yamls.sh deleted file mode 100755 index 70b2fcc..0000000 --- a/copy_extension_yamls.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -eou pipefail - -submodule_dir=./third_party/substrait -extension_dir=./src/substrait/extension_files - -# Remove the old extension files -rm -rf "$extension_dir" - -# Copy over new yaml files -cp -fr "$submodule_dir"/extensions "$extension_dir" -find "$extension_dir" -type f -exec chmod u+rw {} + - -# Ensure there's an __init__.py file in the extension directory -touch $extension_dir/__init__.py diff --git a/pixi.lock b/pixi.lock index 4007575..c5417e0 100644 --- a/pixi.lock +++ b/pixi.lock @@ -11,19 +11,9 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.1-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda @@ -35,49 +25,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.1-hb1525cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45-default_h1979696_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.3-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda @@ -89,176 +53,81 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.0-h8e36d6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.11-h4c0d347_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.10-hc0dabaa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h561c983_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - pypi: https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.10-hb17bafe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.11-hfc2f54d_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyha7b4d00_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.11-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl dev: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -270,19 +139,9 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.1-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda @@ -294,31 +153,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/ba/8d8aa1df96e0666752e5c9d406d440495df2014d315b2a95bbef9856b23e/datafusion-50.1.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -326,29 +168,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/87/0c/48ae1d485725af3a452303af409a9022d751ecab260cb9ca2f8c9fb670bc/duckdb-1.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f9/04/98c216967275cd9a3e517dfeeb513ebff3183f1f22da29180c479c749ac8/sqloxide-0.1.56-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.1-hb1525cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45-default_h1979696_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.3-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda @@ -360,31 +195,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.0-h8e36d6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.11-h4c0d347_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.10-hc0dabaa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h561c983_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/11/9a/afce9586145b3ed153d75364b21102a6a95260940352e06b7c6709e9d2db/datafusion-50.1.0-cp39-abi3-manylinux_2_28_aarch64.whl @@ -392,192 +210,123 @@ environments: - pypi: https://files.pythonhosted.org/packages/69/c7/95fcd7bde0f754ea6700208d36b845379cbd2b28779c0eff4dd4a7396369/duckdb-1.2.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/de/77/dd27f6e325537126ba0b142fdce63bde4305681662ac58e8e779e3c87635/sqloxide-0.1.56-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.10-hb17bafe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1f/6e/f9e2d5d935024a79fd549b5ce1d05549d26a027aab800727d492ac036504/datafusion-50.1.0-cp39-abi3-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9f/28/943773d44fd97055c59b58dde9182733661c2b6e3b3549f15dc26b2e139e/duckdb-1.2.2-cp313-cp313-macosx_12_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/10/c7/79f57728f300079148ac4e4b988000dcbd1f58960040db89594424a58336/sqloxide-0.1.56.tar.gz - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.11-hfc2f54d_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/58/2dc473240f552d3620186b527c04397f82b36f02243afaf49f0813c84a17/datafusion-50.1.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/31/5e2f68cbd000137f6ed52092ad83a8e9c09eca70c59e0b4c5eb679709997/duckdb-1.2.2-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/94/fd/268d58f8feb4d206d2896dae5e8a4a17c671c9cbb6b15c6e6300d2e168a2/sqloxide-0.1.56-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyha7b4d00_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.11-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/51/a3/41ef1c565770ef0c4060ee3fd50367dd06816f70a5be1ef41fbd7c3975e8/datafusion-50.1.0-cp39-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/3d/ce68db53084746a4a62695a4cb064e44ce04123f8582bb3afbf6ee944e16/duckdb-1.2.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c8/5c/487e081a5ac1a8538f7eb3a3e3ea04c39da13acde1f17916ca1767d40c4e/sqloxide-0.1.56-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl extensions: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -589,19 +338,9 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.1-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda @@ -613,51 +352,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.1-hb1525cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45-default_h1979696_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.3-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda @@ -669,184 +383,93 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.0-h8e36d6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.11-h4c0d347_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.10-hc0dabaa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h561c983_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl + - pypi: https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.10-hb17bafe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.11-hfc2f54d_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyha7b4d00_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.11-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/76/e0/5318b6a4cc19122a4aa7b6a7d92cd7106ba5baa5536131d851b47cb50645/substrait_antlr-0.79.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl sql: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -858,19 +481,9 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.1-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda @@ -882,52 +495,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f9/04/98c216967275cd9a3e517dfeeb513ebff3183f1f22da29180c479c749ac8/sqloxide-0.1.56-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.1-hb1525cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45-default_h1979696_105.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.3-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda @@ -939,188 +526,93 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.0-h8e36d6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.11-h4c0d347_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.10-hc0dabaa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h561c983_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/de/77/dd27f6e325537126ba0b142fdce63bde4305681662ac58e8e779e3c87635/sqloxide-0.1.56-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.1-h14c5de8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-hd09e2f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.11-h17c18a5_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.10-hb17bafe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/10/c7/79f57728f300079148ac4e4b988000dcbd1f58960040db89594424a58336/sqloxide-0.1.56.tar.gz - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.11-hfc2f54d_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/94/fd/268d58f8feb4d206d2896dae5e8a4a17c671c9cbb6b15c6e6300d2e168a2/sqloxide-0.1.56-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyha7b4d00_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.11-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c8/5c/487e081a5ac1a8538f7eb3a3e3ea04c39da13acde1f17916ca1767d40c4e/sqloxide-0.1.56-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/0a/27/24e16471dc7b5986cd2af0d5aab9b12347fb835840fb2320b1b2375e53a8/substrait_protobuf-0.79.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -1156,52 +648,12 @@ packages: purls: [] size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c - depends: - - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/annotated-types?source=hash-mapping - size: 18074 - timestamp: 1733247158254 - pypi: https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl name: antlr4-python3-runtime version: 4.13.2 sha256: fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8 requires_dist: - typing ; python_full_version < '3.5' -- conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda - sha256: a2a1879c53b7a8438c898d20fa5f6274e4b1c30161f93b7818236e9df6adffde - md5: 8f37c8fb7116a18da04e52fa9e2c8df9 - depends: - - python >=3.10 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/argcomplete?source=hash-mapping - size: 42386 - timestamp: 1760975036972 -- conda: https://conda.anaconda.org/conda-forge/noarch/black-25.12.0-pyh866005b_0.conda - sha256: b7d00a8b682f650ac547d8d70c6cd65f303011313b3d3608d3704f20b1dad5b6 - md5: 7b658ed81f14384c83f4c4f01959fdc2 - depends: - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9 - - platformdirs >=2 - - python >=3.11 - - pytokens >=0.3 - license: MIT - license_family: MIT - purls: - - pkg:pypi/black?source=hash-mapping - size: 169740 - timestamp: 1765222747417 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5 md5: 51a19bba1b8ebfb60df25cde030b7ebc @@ -1273,44 +725,11 @@ packages: purls: [] size: 146519 timestamp: 1767500828366 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda - sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 - md5: ea8a6c3256897cc31263de9f455e25d9 - depends: - - python >=3.10 - - __unix - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/click?source=hash-mapping - size: 97676 - timestamp: 1764518652276 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyha7b4d00_1.conda - sha256: c3bc9a49930fa1c3383a1485948b914823290efac859a2587ca57a270a652e08 - md5: 6cd3ccc98bacfcc92b2bd7f236f01a7e - depends: - - python >=3.10 - - colorama - - __win - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/click?source=hash-mapping - size: 96620 - timestamp: 1764518654675 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/colorama?source=hash-mapping - size: 27011 - timestamp: 1733218222191 +- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + name: colorama + version: 0.4.6 + sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' - pypi: https://files.pythonhosted.org/packages/00/ba/8d8aa1df96e0666752e5c9d406d440495df2014d315b2a95bbef9856b23e/datafusion-50.1.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: datafusion version: 50.1.0 @@ -1351,28 +770,6 @@ packages: - pyarrow>=11.0.0 - typing-extensions ; python_full_version < '3.13' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/datamodel-code-generator-0.52.0-pyhcf101f3_0.conda - sha256: 73a8e8f212e4223e05b5883807243268af39d7a617167b0c887e4e3e1062d1e0 - md5: 811591a6e0db74cb9a3190f7663ac207 - depends: - - python >=3.10 - - argcomplete >=2.10.1,<4 - - black >=19.10b0 - - genson >=1.2.1,<2 - - inflect >=4.1,<8 - - isort >=4.3.21,<8 - - jinja2 >=2.10.1,<4 - - packaging - - pydantic >=1.5 - - pyyaml >=6.0.1 - - tomli >=2.2.1,<3 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/datamodel-code-generator?source=hash-mapping - size: 178266 - timestamp: 1767649194289 - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl name: deepdiff version: 8.6.1 @@ -1432,17 +829,6 @@ packages: version: 1.2.2 sha256: 88916d7f0532dc926bed84b50408c00dcbe6d2097d0de93c3ff647d8d57b4f83 requires_python: '>=3.7.0' -- conda: https://conda.anaconda.org/conda-forge/noarch/genson-1.3.0-pyhd8ed1ab_0.conda - sha256: 2b9e4e8321e355bb8792ccf7722b81e481f3f664d145ad4b851a66ebac2d9c71 - md5: d3c12a70d5dc21f05647a80f72a81aa1 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/genson?source=hash-mapping - size: 24250 - timestamp: 1747040481948 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.1-h33c6efd_0.conda sha256: 7d6463d0be5092b2ae8f2fad34dc84de83eab8bd44cc0d4be8931881c973c48f md5: 518e9bbbc3e3486d6a4519192ba690f8 @@ -1476,63 +862,11 @@ packages: purls: [] size: 12273114 timestamp: 1766299263503 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 - md5: 63ccfdc3a3ce25b027b8767eb722fca8 - depends: - - python >=3.9 - - zipp >=3.20 - - python - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/importlib-metadata?source=hash-mapping - size: 34641 - timestamp: 1747934053147 -- conda: https://conda.anaconda.org/conda-forge/noarch/inflect-7.5.0-pyhd8ed1ab_0.conda - sha256: cb32b8f005b7472a85dcf8b86651ceef45270f69f5f4a814f2d53bba56b865de - md5: 64c72b61756ec17c913a83b918129ab6 - depends: - - more-itertools - - python >=3.9 - - typeguard >=4.0.1 - - typing-extensions - license: MIT - license_family: MIT - purls: - - pkg:pypi/inflect?source=hash-mapping - size: 38377 - timestamp: 1735424148811 - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl name: iniconfig version: 2.3.0 sha256: f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda - sha256: 13b0005877f553eb2e5c50447c9d0047e7257124ec2d1569d7dad35697790237 - md5: 55a61979242077b2cc377c74326ea9f0 - depends: - - importlib-metadata >=4.6.0 - - python >=3.10,<4.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/isort?source=hash-mapping - size: 74876 - timestamp: 1760192714356 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b - md5: 04558c96691bed63104678757beb4f8d - depends: - - markupsafe >=2.0 - - python >=3.10 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jinja2?source=compressed-mapping - size: 120685 - timestamp: 1764517220861 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda sha256: 1027bd8aa0d5144e954e426ab6218fd5c14e54a98f571985675468b339c808ca md5: 3ec0aa5037d39b06554109a01e6fb0c6 @@ -1994,108 +1328,6 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - sha256: a530a411bdaaf0b1e4de8869dfaca46cb07407bc7dc0702a9e231b0e5ce7ca85 - md5: c14389156310b8ed3520d84f854be1ee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 25909 - timestamp: 1759055357045 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_0.conda - sha256: c03eb8f5a4659ce31e698a328372f6b0357644d557ea0dc01fe0c5897c231c48 - md5: 59fc93a010d6e8a08a4fa32424d86a82 - depends: - - libgcc >=14 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 26403 - timestamp: 1759056219797 -- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - sha256: 9c698da56e3bdae80be2a7bc0d19565971b36060155374d16fce14271c8b695c - md5: 884a82dc80ecd251e38d647808c424b3 - depends: - - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 25105 - timestamp: 1759055575973 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - sha256: e06902a1bf370fdd4ada0a8c81c504868fdb7e9971b72c6bd395aa4e5a497bd2 - md5: 3df5979cc0b761dda0053ffdb0bca3ea - depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 25778 - timestamp: 1759055530601 -- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - sha256: 988d14095c1392e055fd75e24544da2db01ade73b0c2f99ddc8e2b8678ead4cc - md5: 47eaaa4405741beb171ea6edc6eaf874 - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 28959 - timestamp: 1759055685616 -- conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda - sha256: 449609f0d250607a300754474350a3b61faf45da183d3071e9720e453c765b8a - md5: 32f78e9d06e8593bc4bbf1338da06f5f - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/more-itertools?source=hash-mapping - size: 69210 - timestamp: 1764487059562 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 - md5: e9c622e0d00fa24a6292279af3ab6d06 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy-extensions?source=hash-mapping - size: 11766 - timestamp: 1745776666688 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -2207,40 +1439,11 @@ packages: - pytest-cov~=6.0.0 ; extra == 'test' - python-dotenv~=1.0.0 ; extra == 'test' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 - md5: 58335b26c38bf4a20f399384c33cbcf9 - depends: - - python >=3.8 - - python - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/packaging?source=hash-mapping - size: 62477 - timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.2-pyhd8ed1ab_0.conda - sha256: 0fd6fdb104e01a815bf1a625c49c6e5582bd42794f1b11eaa32ae0714f1f3f03 - md5: 90bb10a03797b1793a355be064bcc35c - depends: - - python >=3.10 - license: MPL-2.0 - purls: - - pkg:pypi/pathspec?source=compressed-mapping - size: 53271 - timestamp: 1767870657166 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - sha256: 04c64fb78c520e5c396b6e07bc9082735a5cc28175dbe23138201d0a9441800b - md5: 1bd2e65c8c7ef24f4639ae6e850dacc2 - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/platformdirs?source=hash-mapping - size: 23922 - timestamp: 1764950726246 +- pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl + name: packaging + version: '26.0' + sha256: b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl name: pluggy version: 1.6.0 @@ -2297,109 +1500,6 @@ packages: version: 22.0.0 sha256: ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d - md5: c3946ed24acdb28db1b5d63321dbca7d - depends: - - typing-inspection >=0.4.2 - - typing_extensions >=4.14.1 - - python >=3.10 - - typing-extensions >=4.6.1 - - annotated-types >=0.6.0 - - pydantic-core ==2.41.5 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic?source=hash-mapping - size: 340482 - timestamp: 1764434463101 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - sha256: b15568ddc03bd33ea41610e5df951be4e245cd61957cbf8c2cfd12557f3d53b5 - md5: f27c39a1906771bbe56cd26a76bf0b8b - depends: - - python - - typing-extensions >=4.6.0,!=4.7.0 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - python_abi 3.13.* *_cp313 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic-core?source=hash-mapping - size: 1940186 - timestamp: 1762989000579 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - sha256: df87d763c450ca0dc7a916987674fe1db153e6713cc488cedb0997ad5e807e96 - md5: dd7a9ffb9145ce5651b10b846d41b8ef - depends: - - python - - typing-extensions >=4.6.0,!=4.7.0 - - python 3.13.* *_cp313 - - libgcc >=14 - - python_abi 3.13.* *_cp313 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic-core?source=hash-mapping - size: 1824747 - timestamp: 1762989007285 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - sha256: 73de35081774d9b445dd807ac4d4e043846159b2de348b8e6a81f1b810210fe4 - md5: e12491c39d2ea259771ce4d80a91817f - depends: - - python - - typing-extensions >=4.6.0,!=4.7.0 - - __osx >=10.13 - - python_abi 3.13.* *_cp313 - constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic-core?source=hash-mapping - size: 1947011 - timestamp: 1762989008917 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - sha256: 08398c0599084837ba89d69db00b3d0973dc86d6519957dc6c1b480e2571451a - md5: eaeed566f6d88c0a08d73700b34be4a2 - depends: - - python - - typing-extensions >=4.6.0,!=4.7.0 - - python 3.13.* *_cp313 - - __osx >=11.0 - - python_abi 3.13.* *_cp313 - constrains: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic-core?source=hash-mapping - size: 1778337 - timestamp: 1762989007829 -- conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - sha256: fb9391dc09dd01574c85e2342b9aa3b8664cd713401ef8fd6267865cc28988d8 - md5: 0437f87004ad7c64c98a013d1611db97 - depends: - - python - - typing-extensions >=4.6.0,!=4.7.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pydantic-core?source=hash-mapping - size: 1973031 - timestamp: 1762989056610 - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl name: pygments version: 2.19.2 @@ -2563,93 +1663,31 @@ packages: purls: [] size: 7002 timestamp: 1752805902938 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytokens-0.3.0-pyhcf101f3_0.conda - sha256: 562d54fa0717b7117ee7f6b5f832c6535bf5e44de2dfa2f7056912e53d346469 - md5: 4b1812cb7a8143ee00aef43831fb0d29 - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytokens?source=hash-mapping - size: 18860 - timestamp: 1765201048624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - sha256: 40dcd6718dce5fbee8aabdd0519f23d456d8feb2e15ac352eaa88bbfd3a881af - md5: 4794ea0adaebd9f844414e594b142cb2 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 207109 - timestamp: 1758892173548 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_0.conda - sha256: 4aca079224068d1a7fa2d2cbdb6efe11eec76737472c01f02d9e147c5237c37d - md5: cd0891668088a005cb45b344d84a3955 - depends: - - libgcc >=14 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 198001 - timestamp: 1758891959168 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - sha256: 8420815e10d455b012db39cb7dc0d86f0ac3a287d5a227892fa611fe3d467df9 - md5: e0c9e257970870212c449106964a5ace - depends: - - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 193608 - timestamp: 1758892017635 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - sha256: f5be0d84f72a567b7333b9efa74a65bfa44a25658cf107ffa3fc65d3ae6660d7 - md5: 0e8e3235217b4483a7461b63dca5826b - depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 191630 - timestamp: 1758892258120 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - sha256: 5d9fd32d318b9da615524589a372b33a6f3d07db2708de16570d70360bf638c2 - md5: c067122d76f8dcbe0848822942ba07be - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 182043 - timestamp: 1758892011955 +- pypi: https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl + name: pyyaml + version: 6.0.3 + sha256: ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: pyyaml + version: 6.0.3 + sha256: 0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl + name: pyyaml + version: 6.0.3 + sha256: 79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl + name: pyyaml + version: 6.0.3 + sha256: 2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl + name: pyyaml + version: 6.0.3 + sha256: 8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 md5: d7d95fc8287ea7bf33e0e7116d2b95ec @@ -2871,68 +1909,6 @@ packages: purls: [] size: 3472313 timestamp: 1763055164278 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - sha256: cb77c660b646c00a48ef942a9e1721ee46e90230c7c570cdeb5a893b5cce9bff - md5: d2732eb636c264dc9aa4cbee404b1a53 - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/tomli?source=compressed-mapping - size: 20973 - timestamp: 1760014679845 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - sha256: 591e03a61b4966a61b15a99f91d462840b6e77bf707ecb48690b24649fee921a - md5: 8b2613dbfd4e2bc9080b2779b53fc210 - depends: - - importlib-metadata >=3.6 - - python >=3.9 - - typing-extensions >=4.10.0 - - typing_extensions >=4.14.0 - constrains: - - pytest >=7 - license: MIT - license_family: MIT - purls: - - pkg:pypi/typeguard?source=hash-mapping - size: 35158 - timestamp: 1750249264892 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c - md5: edd329d7d3a4ab45dcf905899a7a6115 - depends: - - typing_extensions ==4.15.0 pyhcf101f3_0 - license: PSF-2.0 - license_family: PSF - purls: [] - size: 91383 - timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 - md5: a0a4a3035667fc34f29bfbd5c190baa6 - depends: - - python >=3.10 - - typing_extensions >=4.12.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/typing-inspection?source=compressed-mapping - size: 18923 - timestamp: 1764158430324 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 - md5: 0caa1af407ecff61170c9437a808404d - depends: - - python >=3.10 - - python - license: PSF-2.0 - license_family: PSF - purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 51692 - timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c md5: ad659d0a2b3e47e38d829aa8cad2d610 @@ -2950,6 +1926,11 @@ packages: purls: [] size: 694692 timestamp: 1756385147981 +- pypi: https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl + name: vbarua-substrait-extensions + version: 0.79.0 + sha256: c940a1b648d9a4990a2d58121546d45fbeea1f30e24718ac8c34d5807fe4defc + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda sha256: 9dc40c2610a6e6727d635c62cced5ef30b7b30123f5ef67d6139e23d21744b3a md5: 1e610f2416b6acdd231c5f573d754a0f @@ -2987,74 +1968,6 @@ packages: purls: [] size: 115235 timestamp: 1767320173250 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad - md5: a77f85f77be52ff59391544bfe73390a - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - license: MIT - license_family: MIT - purls: [] - size: 85189 - timestamp: 1753484064210 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 - md5: 032d8030e4a24fe1f72c74423a46fb88 - depends: - - libgcc >=14 - license: MIT - license_family: MIT - purls: [] - size: 88088 - timestamp: 1753484092643 -- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - sha256: a335161bfa57b64e6794c3c354e7d49449b28b8d8a7c4ed02bf04c3f009953f9 - md5: a645bb90997d3fc2aea0adf6517059bd - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: [] - size: 79419 - timestamp: 1753484072608 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - sha256: b03433b13d89f5567e828ea9f1a7d5c5d697bf374c28a4168d71e9464f5dafac - md5: 78a0fe9e9c50d2c381e8ee47e3ea437d - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 83386 - timestamp: 1753484079473 -- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - sha256: 80ee68c1e7683a35295232ea79bcc87279d31ffeda04a1665efdb43cbd50a309 - md5: 433699cba6602098ae8957a323da2664 - depends: - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - license: MIT - license_family: MIT - purls: [] - size: 63944 - timestamp: 1753484092156 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae - md5: 30cd29cb87d819caead4d55184c1d115 - depends: - - python >=3.10 - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/zipp?source=compressed-mapping - size: 24194 - timestamp: 1764460141901 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 diff --git a/pyproject.toml b/pyproject.toml index d9632cd..c2338f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ requires-python = ">=3.10,<3.15" dependencies = [ "protobuf >=5,<7", "substrait-protobuf==0.79.0", + "vbarua-substrait-extensions==0.79.0", ] dynamic = ["version"] @@ -33,8 +34,6 @@ build-backend = "setuptools.build_meta" respect-gitignore = true # should target minimum supported version target-version = "py310" -# never autoformat upstream or generated code -exclude = ["third_party/", "src/substrait/gen"] lint.extend-select = ["I"] @@ -52,27 +51,5 @@ format = "ruff format" lint = "ruff check" lint_fix = "ruff check --fix" -update-substrait = [ { task = "update-submodule" }, { task = "codegen" }] - -update-submodule = "./update_submodule.sh" - -codegen = [{ task = "copy-extensions" }, { task = "codegen-extensions" }] - -check-codegen = "./check_codegen.sh" - -copy-extensions = "./copy_extension_yamls.sh" - -codegen-extensions = """ - datamodel-codegen \ - --input-file-type jsonschema \ - --input third_party/substrait/text/simple_extensions_schema.yaml \ - --output src/substrait/gen/json/simple_extensions.py \ - --output-model-type dataclasses.dataclass \ - --target-python-version 3.10 \ - --disable-timestamp \ - --formatters ruff-format -""" - [tool.pixi.dependencies] -datamodel-code-generator = ">=0.52.0,<0.53" ruff = ">=0.14.10,<0.15" diff --git a/src/substrait/extension_files/__init__.py b/src/substrait/extension_files/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/substrait/extension_files/extension_types.yaml b/src/substrait/extension_files/extension_types.yaml deleted file mode 100644 index 5360992..0000000 --- a/src/substrait/extension_files/extension_types.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -urn: extension:io.substrait:extension_types -types: - - name: point - structure: - latitude: i32 - longitude: i32 - - name: line - structure: - start: point - end: point diff --git a/src/substrait/extension_files/functions_aggregate_approx.yaml b/src/substrait/extension_files/functions_aggregate_approx.yaml deleted file mode 100644 index d858acc..0000000 --- a/src/substrait/extension_files/functions_aggregate_approx.yaml +++ /dev/null @@ -1,19 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_aggregate_approx -aggregate_functions: - - name: "approx_count_distinct" - description: >- - Calculates the approximate number of rows that contain distinct values of the expression argument using - HyperLogLog. This function provides an alternative to the COUNT (DISTINCT expression) function, which - returns the exact number of rows that contain distinct values of an expression. APPROX_COUNT_DISTINCT - processes large amounts of data significantly faster than COUNT, with negligible deviation from the exact - result. - impls: - - args: - - name: x - value: any - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: binary - return: i64 diff --git a/src/substrait/extension_files/functions_aggregate_decimal_output.yaml b/src/substrait/extension_files/functions_aggregate_decimal_output.yaml deleted file mode 100644 index 85a1959..0000000 --- a/src/substrait/extension_files/functions_aggregate_decimal_output.yaml +++ /dev/null @@ -1,42 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_aggregate_decimal_output -aggregate_functions: - - name: "count" - description: Count a set of values. Result is returned as a decimal instead of i64. - impls: - - args: - - name: x - value: any - options: - overflow: - values: [SILENT, SATURATE, ERROR] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: decimal<38,0> - return: decimal<38,0> - - name: "count" - description: "Count a set of records (not field referenced). Result is returned as a decimal instead of i64." - impls: - - options: - overflow: - values: [SILENT, SATURATE, ERROR] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: decimal<38,0> - return: decimal<38,0> - - name: "approx_count_distinct" - description: >- - Calculates the approximate number of rows that contain distinct values of the expression argument using - HyperLogLog. This function provides an alternative to the COUNT (DISTINCT expression) function, which - returns the exact number of rows that contain distinct values of an expression. APPROX_COUNT_DISTINCT - processes large amounts of data significantly faster than COUNT, with negligible deviation from the exact - result. Result is returned as a decimal instead of i64. - impls: - - args: - - name: x - value: any - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: binary - return: decimal<38,0> diff --git a/src/substrait/extension_files/functions_aggregate_generic.yaml b/src/substrait/extension_files/functions_aggregate_generic.yaml deleted file mode 100644 index 63553f3..0000000 --- a/src/substrait/extension_files/functions_aggregate_generic.yaml +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_aggregate_generic -aggregate_functions: - - name: "count" - description: Count a set of values - impls: - - args: - - name: x - value: any - options: - overflow: - values: [SILENT, SATURATE, ERROR] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - name: "count" - description: "Count a set of records (not field referenced)" - impls: - - options: - overflow: - values: [SILENT, SATURATE, ERROR] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - name: "any_value" - description: > - Selects an arbitrary value from a group of values. - - If the input is empty, the function returns null. - impls: - - args: - - name: x - value: any1 - options: - ignore_nulls: - values: [ "TRUE", "FALSE" ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: any1? - return: any1? diff --git a/src/substrait/extension_files/functions_arithmetic.yaml b/src/substrait/extension_files/functions_arithmetic.yaml deleted file mode 100644 index 8746f03..0000000 --- a/src/substrait/extension_files/functions_arithmetic.yaml +++ /dev/null @@ -1,1911 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_arithmetic -scalar_functions: - - - name: "add" - description: "Add two values." - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - value: i64 - - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "subtract" - description: "Subtract one value from another." - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "multiply" - description: "Multiply two values." - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "divide" - description: > - Divide x by y. In the case of integer division, partial values are truncated (i.e. rounded towards 0). - The `on_division_by_zero` option governs behavior in cases where y is 0. If the option is IEEE then - the IEEE754 standard is followed: all values except +/-infinity return NaN and +/-infinity are unchanged. - If the option is LIMIT then the result is +/-infinity in all cases. - If either x or y are NaN then behavior will be governed by `on_domain_error`. - If x and y are both +/-infinity, behavior will be governed by `on_domain_error`. - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - on_division_by_zero: - values: [ "NULL", ERROR ] - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - on_division_by_zero: - values: [ "NULL", ERROR ] - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - on_division_by_zero: - values: [ "NULL", ERROR ] - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - on_division_by_zero: - values: [ "NULL", ERROR ] - return: i64 - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_division_by_zero: - values: [ IEEE, LIMIT, "NULL", ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_division_by_zero: - values: [ IEEE, LIMIT, "NULL", ERROR ] - return: fp64 - - - name: "negate" - description: "Negation of the value" - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i8 - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i16 - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - return: fp32 - - args: - - name: x - value: fp64 - return: fp64 - - - name: "modulus" - description: > - Calculate the remainder (r) when dividing dividend (x) by divisor (y). - - In mathematics, many conventions for the modulus (mod) operation exists. The result of a mod operation - depends on the software implementation and underlying hardware. Substrait is a format for describing compute - operations on structured data and designed for interoperability. Therefore the user is responsible for determining - a definition of division as defined by the quotient (q). - - The following basic conditions of division are satisfied: - (1) q ∈ ℤ (the quotient is an integer) - (2) x = y * q + r (division rule) - (3) abs(r) < abs(y) - where q is the quotient. - - The `division_type` option determines the mathematical definition of quotient to use in the above definition of - division. - - When `division_type`=TRUNCATE, q = trunc(x/y). - When `division_type`=FLOOR, q = floor(x/y). - - In the cases of TRUNCATE and FLOOR division: remainder r = x - round_func(x/y) - - The `on_domain_error` option governs behavior in cases where y is 0, y is +/-inf, or x is +/-inf. In these cases - the mod is undefined. - The `overflow` option governs behavior when integer overflow occurs. - If x and y are both 0 or both +/-infinity, behavior will be governed by `on_domain_error`. - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - options: - division_type: - values: [ TRUNCATE, FLOOR ] - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - options: - division_type: - values: [ TRUNCATE, FLOOR ] - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - options: - division_type: - values: [ TRUNCATE, FLOOR ] - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - options: - division_type: - values: [ TRUNCATE, FLOOR ] - overflow: - values: [ SILENT, SATURATE, ERROR ] - on_domain_error: - values: [ "NULL", ERROR ] - return: i64 - - - name: "power" - description: "Take the power with x as the base and y as exponent." - impls: - - args: - - name: x - value: i64 - - name: y - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - - name: y - value: fp32 - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - return: fp64 - - - name: "sqrt" - description: "Square root of the value" - impls: - - args: - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "exp" - description: "The mathematical constant e, raised to the power of the value." - impls: - - args: - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "cos" - description: "Get the cosine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "sin" - description: "Get the sine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "tan" - description: "Get the tangent of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "cosh" - description: "Get the hyperbolic cosine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "sinh" - description: "Get the hyperbolic sine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "tanh" - description: "Get the hyperbolic tangent of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "acos" - description: "Get the arccosine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "asin" - description: "Get the arcsine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "atan" - description: "Get the arctangent of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "acosh" - description: "Get the hyperbolic arccosine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "asinh" - description: "Get the hyperbolic arcsine of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "atanh" - description: "Get the hyperbolic arctangent of a value in radians." - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "atan2" - description: "Get the arctangent of values given as x/y pairs." - impls: - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp32 - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, ERROR ] - return: fp64 - - - name: "radians" - description: > - Converts angle `x` in degrees to radians. - - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "degrees" - description: > - Converts angle `x` in radians to degrees. - - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - return: fp64 - - - name: "abs" - description: > - Calculate the absolute value of the argument. - - Integer values allow the specification of overflow behavior to handle the - unevenness of the twos complement, e.g. Int8 range [-128 : 127]. - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i8 - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i16 - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - args: - - name: x - value: fp32 - return: fp32 - - args: - - name: x - value: fp64 - return: fp64 - - - name: "sign" - description: > - Return the signedness of the argument. - - Integer values return signedness with the same type as the input. - Possible return values are [-1, 0, 1] - - Floating point values return signedness with the same type as the input. - Possible return values are [-1.0, -0.0, 0.0, 1.0, NaN] - impls: - - args: - - name: x - value: i8 - return: i8 - - args: - - name: x - value: i16 - return: i16 - - args: - - name: x - value: i32 - return: i32 - - args: - - name: x - value: i64 - return: i64 - - args: - - name: x - value: fp32 - return: fp32 - - args: - - name: x - value: fp64 - return: fp64 - - - name: "factorial" - description: > - Return the factorial of a given integer input. - - The factorial of 0! is 1 by convention. - - Negative inputs will raise an error. - impls: - - args: - - value: i32 - name: "n" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i32 - - args: - - value: i64 - name: "n" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: i64 - - - name: "bitwise_not" - description: > - Return the bitwise NOT result for one integer input. - - impls: - - args: - - name: x - value: i8 - return: i8 - - args: - - name: x - value: i16 - return: i16 - - args: - - name: x - value: i32 - return: i32 - - args: - - name: x - value: i64 - return: i64 - - - name: "bitwise_and" - description: > - Return the bitwise AND result for two integer inputs. - - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - return: i64 - - - name: "bitwise_or" - description: > - Return the bitwise OR result for two given integer inputs. - - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - return: i64 - - - name: "bitwise_xor" - description: > - Return the bitwise XOR result for two integer inputs. - - impls: - - args: - - name: x - value: i8 - - name: y - value: i8 - return: i8 - - args: - - name: x - value: i16 - - name: y - value: i16 - return: i16 - - args: - - name: x - value: i32 - - name: y - value: i32 - return: i32 - - args: - - name: x - value: i64 - - name: y - value: i64 - return: i64 - - - name: shift_left - description: >- - Bitwise shift left. - The vacant (least-significant) bits are filled with zeros. - Params: - base – the base number to shift. - shift – number of bits to left shift. - impls: - - args: - - name: base - value: i32 - - name: shift - value: i32 - return: i32 - - args: - - name: base - value: i64 - - name: shift - value: i32 - return: i64 - - - name: shift_right - description: >- - Bitwise (signed) shift right. - The vacant (most-significant) bits are filled with - zeros if the base number is positive or with - ones if the base number is negative, thus preserving - the sign of the resulting number. - Params: - base – the base number to shift. - shift – number of bits to right shift. - impls: - - args: - - name: base - value: i32 - - name: shift - value: i32 - return: i32 - - args: - - name: base - value: i64 - - name: shift - value: i32 - return: i64 - - - name: shift_right_unsigned - description: >- - Bitwise unsigned shift right. - The vacant (most-significant) bits are filled with zeros. - Params: - base – the base number to shift. - shift – number of bits to right shift. - impls: - - args: - - name: base - value: i32 - - name: shift - value: i32 - return: i32 - - args: - - name: base - value: i64 - - name: shift - value: i32 - return: i64 - -aggregate_functions: - - name: "sum" - description: Sum a set of values. The sum of zero elements yields null. - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: fp32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64? - return: fp64? - - args: - - name: x - value: fp64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64? - return: fp64? - - name: "sum0" - description: > - Sum a set of values. The sum of zero elements yields zero. - - Null values are ignored. - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64 - return: i64 - - args: - - name: x - value: fp32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64 - return: fp64 - - args: - - name: x - value: fp64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64 - return: fp64 - - name: "avg" - description: Average a set of values. For integral types, this truncates partial values. - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: i8? - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: i16? - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: i32? - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: i64? - - args: - - name: x - value: fp32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: fp32? - - args: - - name: x - value: fp64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT" - return: fp64? - - name: "min" - description: Min a set of values. - impls: - - args: - - name: x - value: i8 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i8? - return: i8? - - args: - - name: x - value: i16 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i16? - return: i16? - - args: - - name: x - value: i32 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i32? - return: i32? - - args: - - name: x - value: i64 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: fp32 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp32? - return: fp32? - - args: - - name: x - value: fp64 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64? - return: fp64? - - name: "max" - description: Max a set of values. - impls: - - args: - - name: x - value: i8 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i8? - return: i8? - - args: - - name: x - value: i16 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i16? - return: i16? - - args: - - name: x - value: i32 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i32? - return: i32? - - args: - - name: x - value: i64 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: i64? - return: i64? - - args: - - name: x - value: fp32 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp32? - return: fp32? - - args: - - name: x - value: fp64 - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: fp64? - return: fp64? - - name: "product" - description: Product of a set of values. Returns 1 for empty input. - impls: - - args: - - name: x - value: i8 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: MIRROR - decomposable: MANY - intermediate: i64 - return: i8 - - args: - - name: x - value: i16 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: MIRROR - decomposable: MANY - intermediate: i64 - return: i16 - - args: - - name: x - value: i32 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: MIRROR - decomposable: MANY - intermediate: i64 - return: i32 - - args: - - name: x - value: i64 - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: MIRROR - decomposable: MANY - intermediate: i64 - return: i64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: MIRROR - decomposable: MANY - intermediate: fp64 - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: MIRROR - decomposable: MANY - intermediate: fp64 - return: fp64 - - name: "std_dev" - description: Calculates standard-deviation for a set of values. - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - distribution: - values: [ SAMPLE, POPULATION] - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - distribution: - values: [ SAMPLE, POPULATION] - nullability: DECLARED_OUTPUT - return: fp64? - - name: "variance" - description: Calculates variance for a set of values. - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - distribution: - values: [ SAMPLE, POPULATION] - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - distribution: - values: [ SAMPLE, POPULATION] - nullability: DECLARED_OUTPUT - return: fp64? - - name: "corr" - description: > - Calculates the value of Pearson's correlation coefficient between `x` and `y`. - If there is no input, null is returned. - impls: - - args: - - name: x - value: fp32 - - name: y - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - name: x - value: fp64 - - name: y - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: fp64? - - name: "mode" - description: > - Calculates mode for a set of values. - If there is no input, null is returned. - impls: - - args: - - name: x - value: i8 - nullability: DECLARED_OUTPUT - return: i8? - - args: - - name: x - value: i16 - nullability: DECLARED_OUTPUT - return: i16? - - args: - - name: x - value: i32 - nullability: DECLARED_OUTPUT - return: i32? - - args: - - name: x - value: i64 - nullability: DECLARED_OUTPUT - return: i64? - - args: - - name: x - value: fp32 - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - name: x - value: fp64 - nullability: DECLARED_OUTPUT - return: fp64? - - name: "median" - description: > - Calculate the median for a set of values. - - Returns null if applied to zero records. For the integer implementations, - the rounding option determines how the median should be rounded if it ends - up midway between two values. For the floating point implementations, - they specify the usual floating point rounding mode. - impls: - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: i8 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: i8? - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: i16 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: i16? - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: i32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: i32? - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: i64? - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - return: fp64? - - name: "quantile" - description: > - Calculates quantiles for a set of values. - - This function will divide the aggregated values (passed via the - distribution argument) over N equally-sized bins, where N is passed - via a constant argument. It will then return the values at the - boundaries of these bins in list form. If the input is appropriately - sorted, this computes the quantiles of the distribution. - - The function can optionally return the first and/or last element of - the input, as specified by the `boundaries` argument. If the input is - appropriately sorted, this will thus be the minimum and/or maximum - values of the distribution. - - When the boundaries do not lie exactly on elements of the incoming - distribution, the function will interpolate between the two nearby - elements. If the interpolated value cannot be represented exactly, - the `rounding` option controls how the value should be selected or - computed. - - The function fails and returns null in the following cases: - - `n` is null or less than one; - - any value in `distribution` is null. - - The function returns an empty list if `n` equals 1 and `boundaries` is - set to `NEITHER`. - - impls: - - args: - - name: boundaries - description: > - Which boundaries to include. For NEITHER, the output will have - n-1 elements, for MINIMUM and MAXIMUM it will have n elements, - and for BOTH it will have n+1 elements. - options: [ NEITHER, MINIMUM, MAXIMUM, BOTH ] - - name: precision - description: > - Based on required operator performance and configured optimizations - on saving memory bandwidth, the precision of the end result can be - the highest possible accuracy or an approximation. - - - EXACT: provides the exact result, rounded if needed according - to the rounding option. - - APPROXIMATE: provides only an estimate; the result must lie - between the minimum and maximum values in the input - (inclusive), but otherwise the accuracy is left up to the - consumer. - options: [ EXACT, APPROXIMATE ] - - value: i64 - constant: true - name: n - description: > - A positive integer which defines the number of quantile - partitions. - - value: any - name: distribution - description: > - The data for which the quantiles should be computed. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. For floating point numbers, it specifies the IEEE - 754 rounding mode (as it does for all other floating point - operations). For integer types: - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - For non-numeric types, the behavior is the same as for integer - types, but applied to the index of the value in distribution. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - nullability: DECLARED_OUTPUT - ordered: true - return: LIST? - -window_functions: - - name: "row_number" - description: "the number of the current row within its partition, starting at 1" - impls: - - args: [] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: i64? - window_type: PARTITION - - name: "rank" - description: "the rank of the current row, with gaps." - impls: - - args: [] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: i64? - window_type: PARTITION - - name: "dense_rank" - description: "the rank of the current row, without gaps." - impls: - - args: [] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: i64? - window_type: PARTITION - - name: "percent_rank" - description: "the relative rank of the current row." - impls: - - args: [] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: fp64? - window_type: PARTITION - - name: "cume_dist" - description: "the cumulative distribution." - impls: - - args: [] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: fp64? - window_type: PARTITION - - name: "ntile" - description: "Return an integer ranging from 1 to the argument value,dividing the partition as equally as possible." - impls: - - args: - - name: x - value: i32 - nullability: DECLARED_OUTPUT - decomposable: NONE - return: i32? - window_type: PARTITION - - args: - - name: x - value: i64 - nullability: DECLARED_OUTPUT - decomposable: NONE - return: i64? - window_type: PARTITION - - name: "first_value" - description: > - Returns the first value in the window. - impls: - - args: - - value: any1 - name: expression - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1 - window_type: PARTITION - - name: "last_value" - description: > - Returns the last value in the window. - impls: - - args: - - value: any1 - name: expression - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1 - window_type: PARTITION - - name: "nth_value" - description: > - Returns a value from the nth row based on the `window_offset`. `window_offset` should - be a positive integer. If the value of the `window_offset` is outside the range - of the window, `null` is returned. - - The `on_domain_error` option governs behavior in cases where `window_offset` is not - a positive integer or `null`. - impls: - - args: - - value: any1 - name: expression - - value: i32 - name: window_offset - options: - on_domain_error: - values: [ NAN, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - name: "lead" - description: > - Return a value from a following row based on a specified physical offset. - This allows you to compare a value in the current row against a following row. - - The `expression` is evaluated against a row that comes after the current row based - on the `row_offset`. The `row_offset` should be a positive integer and is set to - 1 if not specified explicitly. If the `row_offset` is negative, the expression - will be evaluated against a row coming before the current row, similar to the `lag` - function. A `row_offset` of `null` will return `null`. The function returns the - `default` input value if `row_offset` goes beyond the scope of the window. - If a `default` value is not specified, it is set to `null`. - - Example comparing the sales of the current year to the following year. - `row_offset` of 1. - | year | sales | next_year_sales | - | 2019 | 20.50 | 30.00 | - | 2020 | 30.00 | 45.99 | - | 2021 | 45.99 | null | - impls: - - args: - - value: any1 - name: expression - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - args: - - value: any1 - name: expression - - value: i32 - name: row_offset - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - args: - - value: any1 - name: expression - - value: i32 - name: row_offset - - value: any1 - name: default - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - name: "lag" - description: > - Return a column value from a previous row based on a specified physical offset. - This allows you to compare a value in the current row against a previous row. - - The `expression` is evaluated against a row that comes before the current row based - on the `row_offset`. The `expression` can be a column, expression or subquery that - evaluates to a single value. The `row_offset` should be a positive integer and is set to - 1 if not specified explicitly. If the `row_offset` is negative, the expression will - be evaluated against a row coming after the current row, similar to the `lead` function. - A `row_offset` of `null` will return `null`. The function returns the `default` - input value if `row_offset` goes beyond the scope of the partition. If a `default` - value is not specified, it is set to `null`. - - Example comparing the sales of the current year to the previous year. - `row_offset` of 1. - | year | sales | previous_year_sales | - | 2019 | 20.50 | null | - | 2020 | 30.00 | 20.50 | - | 2021 | 45.99 | 30.00 | - impls: - - args: - - value: any1 - name: expression - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - args: - - value: any1 - name: expression - - value: i32 - name: row_offset - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION - - args: - - value: any1 - name: expression - - value: i32 - name: row_offset - - value: any1 - name: default - nullability: DECLARED_OUTPUT - decomposable: NONE - return: any1? - window_type: PARTITION diff --git a/src/substrait/extension_files/functions_arithmetic_decimal.yaml b/src/substrait/extension_files/functions_arithmetic_decimal.yaml deleted file mode 100644 index bc131a2..0000000 --- a/src/substrait/extension_files/functions_arithmetic_decimal.yaml +++ /dev/null @@ -1,249 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_arithmetic_decimal -scalar_functions: - - - name: "add" - description: "Add two decimal values." - impls: - - args: - - name: x - value: decimal - - name: y - value: decimal - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: |- - init_scale = max(S1,S2) - init_prec = init_scale + max(P1 - S1, P2 - S2) + 1 - min_scale = min(init_scale, 6) - delta = init_prec - 38 - prec = min(init_prec, 38) - scale_after_borrow = max(init_scale - delta, min_scale) - scale = init_prec > 38 ? scale_after_borrow : init_scale - DECIMAL - - - name: "subtract" - impls: - - args: - - name: x - value: decimal - - name: y - value: decimal - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: |- - init_scale = max(S1,S2) - init_prec = init_scale + max(P1 - S1, P2 - S2) + 1 - min_scale = min(init_scale, 6) - delta = init_prec - 38 - prec = min(init_prec, 38) - scale_after_borrow = max(init_scale - delta, min_scale) - scale = init_prec > 38 ? scale_after_borrow : init_scale - DECIMAL - - - name: "multiply" - impls: - - args: - - name: x - value: decimal - - name: y - value: decimal - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: |- - init_scale = S1 + S2 - init_prec = P1 + P2 + 1 - min_scale = min(init_scale, 6) - delta = init_prec - 38 - prec = min(init_prec, 38) - scale_after_borrow = max(init_scale - delta, min_scale) - scale = init_prec > 38 ? scale_after_borrow : init_scale - DECIMAL - - - name: "divide" - impls: - - args: - - name: x - value: decimal - - name: y - value: decimal - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: |- - init_scale = max(6, S1 + P2 + 1) - init_prec = P1 - S1 + P2 + init_scale - min_scale = min(init_scale, 6) - delta = init_prec - 38 - prec = min(init_prec, 38) - scale_after_borrow = max(init_scale - delta, min_scale) - scale = init_prec > 38 ? scale_after_borrow : init_scale - DECIMAL - - - name: "modulus" - impls: - - args: - - name: x - value: decimal - - name: y - value: decimal - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - return: |- - init_scale = max(S1,S2) - init_prec = min(P1 - S1, P2 - S2) + init_scale - min_scale = min(init_scale, 6) - delta = init_prec - 38 - prec = min(init_prec, 38) - scale_after_borrow = max(init_scale - delta, min_scale) - scale = init_prec > 38 ? scale_after_borrow : init_scale - DECIMAL - - - name: "abs" - description: Calculate the absolute value of the argument. - impls: - - args: - - name: x - value: decimal - return: decimal - - name: "bitwise_and" - description: > - Return the bitwise AND result for two decimal inputs. - In inputs scale must be 0 (i.e. only integer types are allowed) - impls: - - args: - - name: x - value: "DECIMAL" - - name: y - value: "DECIMAL" - return: |- - max_precision = max(P1, P2) - DECIMAL - - name: "bitwise_or" - description: > - Return the bitwise OR result for two given decimal inputs. - In inputs scale must be 0 (i.e. only integer types are allowed) - impls: - - args: - - name: x - value: "DECIMAL" - - name: y - value: "DECIMAL" - return: |- - max_precision = max(P1, P2) - DECIMAL - - name: "bitwise_xor" - description: > - Return the bitwise XOR result for two given decimal inputs. - In inputs scale must be 0 (i.e. only integer types are allowed) - impls: - - args: - - name: x - value: "DECIMAL" - - name: y - value: "DECIMAL" - return: |- - max_precision = max(P1, P2) - DECIMAL - - name: "sqrt" - description: Square root of the value. Sqrt of 0 is 0 and sqrt of negative values will raise an error. - impls: - - args: - - name: x - value: "DECIMAL" - return: fp64 - - name: "factorial" - description: > - Return the factorial of a given decimal input. Scale should be 0 for factorial decimal input. - The factorial of 0! is 1 by convention. Negative inputs will raise an error. - Input which cause overflow of result will raise an error. - impls: - - args: - - name: "n" - value: "DECIMAL" - return: "DECIMAL<38,0>" - - - name: "power" - description: "Take the power with x as the base and y as exponent. - Behavior for complex number result is indicated by option complex_number_result" - impls: - - args: - - name: x - value: "DECIMAL" - - name: y - value: "DECIMAL" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - complex_number_result: - values: [ NAN, ERROR ] - return: fp64 - -aggregate_functions: - - name: "sum" - description: Sum a set of values. - impls: - - args: - - name: x - value: "DECIMAL" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "DECIMAL?<38,S>" - return: "DECIMAL?<38,S>" - - name: "avg" - description: Average a set of values. - impls: - - args: - - name: x - value: "DECIMAL" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "STRUCT,i64>" - return: "DECIMAL<38,S>" - - name: "min" - description: Min a set of values. - impls: - - args: - - name: x - value: "DECIMAL" - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "DECIMAL?" - return: "DECIMAL?" - - name: "max" - description: Max a set of values. - impls: - - args: - - name: x - value: "DECIMAL" - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "DECIMAL?" - return: "DECIMAL?" - - name: "sum0" - description: > - Sum a set of values. The sum of zero elements yields zero. - - Null values are ignored. - impls: - - args: - - name: x - value: "DECIMAL" - options: - overflow: - values: [ SILENT, SATURATE, ERROR ] - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: "DECIMAL<38,S>" - return: "DECIMAL<38,S>" diff --git a/src/substrait/extension_files/functions_boolean.yaml b/src/substrait/extension_files/functions_boolean.yaml deleted file mode 100644 index fcbe56c..0000000 --- a/src/substrait/extension_files/functions_boolean.yaml +++ /dev/null @@ -1,141 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_boolean -scalar_functions: - - - name: or - description: > - The boolean `or` using Kleene logic. - - This function behaves as follows with nulls: - - true or null = true - - null or true = true - - false or null = null - - null or false = null - - null or null = null - - In other words, in this context a null value really means "unknown", and - an unknown value `or` true is always true. - - Behavior for 0 or 1 inputs is as follows: - or() -> false - or(x) -> x - impls: - - args: - - value: boolean? - name: a - variadic: - min: 0 - return: boolean? - - - name: and - description: > - The boolean `and` using Kleene logic. - - This function behaves as follows with nulls: - - true and null = null - - null and true = null - - false and null = false - - null and false = false - - null and null = null - - In other words, in this context a null value really means "unknown", and - an unknown value `and` false is always false. - - Behavior for 0 or 1 inputs is as follows: - and() -> true - and(x) -> x - impls: - - args: - - value: boolean? - name: a - variadic: - min: 0 - return: boolean? - - - name: and_not - description: > - The boolean `and` of one value and the negation of the other using Kleene logic. - - This function behaves as follows with nulls: - - true and not null = null - - null and not false = null - - false and not null = false - - null and not true = false - - null and not null = null - - In other words, in this context a null value really means "unknown", and - an unknown value `and not` true is always false, as is false `and not` an - unknown value. - impls: - - args: - - value: boolean? - name: a - - value: boolean? - name: b - return: boolean? - - - name: xor - description: > - The boolean `xor` of two values using Kleene logic. - - When a null is encountered in either input, a null is output. - impls: - - args: - - value: boolean? - name: a - - value: boolean? - name: b - return: boolean? - - - name: not - description: > - The `not` of a boolean value. - - When a null is input, a null is output. - impls: - - args: - - value: boolean? - name: a - return: boolean? - -aggregate_functions: - - - name: "bool_and" - description: > - If any value in the input is false, false is returned. If the input is - empty or only contains nulls, null is returned. Otherwise, true is - returned. - impls: - - args: - - value: boolean - name: a - nullability: DECLARED_OUTPUT - return: boolean? - - - name: "bool_or" - description: > - If any value in the input is true, true is returned. If the input is - empty or only contains nulls, null is returned. Otherwise, false is - returned. - impls: - - args: - - value: boolean - name: a - nullability: DECLARED_OUTPUT - return: boolean? diff --git a/src/substrait/extension_files/functions_comparison.yaml b/src/substrait/extension_files/functions_comparison.yaml deleted file mode 100644 index 8d0e265..0000000 --- a/src/substrait/extension_files/functions_comparison.yaml +++ /dev/null @@ -1,323 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_comparison -scalar_functions: - - - name: "not_equal" - description: > - Whether two values are not_equal. - - `not_equal(x, y) := (x != y)` - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "equal" - description: > - Whether two values are equal. - - `equal(x, y) := (x == y)` - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "is_not_distinct_from" - description: > - Whether two values are equal. - - This function treats `null` values as comparable, so - - `is_not_distinct_from(null, null) == True` - - This is in contrast to `equal`, in which `null` values do not compare. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - nullability: DECLARED_OUTPUT - - - name: "is_distinct_from" - description: > - Whether two values are not equal. - - This function treats `null` values as comparable, so - - `is_distinct_from(null, null) == False` - - This is in contrast to `equal`, in which `null` values do not compare. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - nullability: DECLARED_OUTPUT - - - name: "lt" - description: > - Less than. - - lt(x, y) := (x < y) - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "gt" - description: > - Greater than. - - gt(x, y) := (x > y) - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "lte" - description: > - Less than or equal to. - - lte(x, y) := (x <= y) - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "gte" - description: > - Greater than or equal to. - - gte(x, y) := (x >= y) - - If either/both of `x` and `y` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: boolean - - - name: "between" - description: >- - Whether the `expression` is greater than or equal to `low` and less than or equal to `high`. - - `expression` BETWEEN `low` AND `high` - - If `low`, `high`, or `expression` are `null`, `null` is returned. - impls: - - args: - - value: any1 - name: expression - description: The expression to test for in the range defined by `low` and `high`. - - value: any1 - name: low - description: The value to check if greater than or equal to. - - value: any1 - name: high - description: The value to check if less than or equal to. - return: boolean - - name: "is_true" - description: Whether a value is true. - impls: - - args: - - value: boolean? - name: x - return: BOOLEAN - nullability: DECLARED_OUTPUT - - name: "is_not_true" - description: Whether a value is not true. - impls: - - args: - - value: boolean? - name: x - return: BOOLEAN - nullability: DECLARED_OUTPUT - - name: "is_false" - description: Whether a value is false. - impls: - - args: - - value: boolean? - name: x - return: BOOLEAN - nullability: DECLARED_OUTPUT - - name: "is_not_false" - description: Whether a value is not false. - impls: - - args: - - value: boolean? - name: x - return: BOOLEAN - nullability: DECLARED_OUTPUT - - - name: "is_null" - description: Whether a value is null. NaN is not null. - impls: - - args: - - value: any1 - name: x - return: boolean - nullability: DECLARED_OUTPUT - - - name: "is_not_null" - description: Whether a value is not null. NaN is not null. - impls: - - args: - - value: any1 - name: x - return: boolean - nullability: DECLARED_OUTPUT - - - name: "is_nan" - description: > - Whether a value is not a number. - - If `x` is `null`, `null` is returned. - impls: - - args: - - value: fp32 - name: x - return: boolean - - args: - - value: fp64 - name: x - return: boolean - - - name: "is_finite" - description: > - Whether a value is finite (neither infinite nor NaN). - - If `x` is `null`, `null` is returned. - impls: - - args: - - value: fp32 - name: x - return: boolean - - args: - - value: fp64 - name: x - return: boolean - - - name: "is_infinite" - description: > - Whether a value is infinite. - - If `x` is `null`, `null` is returned. - impls: - - args: - - value: fp32 - name: x - return: boolean - - args: - - value: fp64 - name: x - return: boolean - - - name: "nullif" - description: If two values are equal, return null. Otherwise, return the first value. - impls: - - args: - - value: any1 - name: x - - value: any1 - name: y - return: any1? - nullability: DECLARED_OUTPUT - - - name: "coalesce" - description: >- - Evaluate arguments from left to right and return the first argument that is not null. Once - a non-null argument is found, the remaining arguments are not evaluated. - - If all arguments are null, return null. - impls: - - args: - - value: any1 - variadic: - min: 2 - return: any1 - - - name: "least" - description: >- - Evaluates each argument and returns the smallest one. - The function will return null if any argument evaluates to null. - impls: - - args: - - value: any1 - variadic: - min: 2 - return: any1 - nullability: MIRROR - - - name: "least_skip_null" - description: >- - Evaluates each argument and returns the smallest one. - The function will return null only if all arguments evaluate to null. - impls: - - args: - - value: any1 - variadic: - min: 2 - return: any1 - # NOTE: The return type nullability as described above cannot be expressed currently - # See https://github.com/substrait-io/substrait/issues/601 - # Using MIRROR for now until it can be expressed - nullability: MIRROR - - - name: "greatest" - description: >- - Evaluates each argument and returns the largest one. - The function will return null if any argument evaluates to null. - impls: - - args: - - value: any1 - variadic: - min: 2 - return: any1 - nullability: MIRROR - - - name: "greatest_skip_null" - description: >- - Evaluates each argument and returns the largest one. - The function will return null only if all arguments evaluate to null. - impls: - - args: - - value: any1 - variadic: - min: 2 - return: any1 - # NOTE: The return type nullability as described above cannot be expressed currently - # See https://github.com/substrait-io/substrait/issues/601 - # Using MIRROR for now until it can be expressed - nullability: MIRROR diff --git a/src/substrait/extension_files/functions_datetime.yaml b/src/substrait/extension_files/functions_datetime.yaml deleted file mode 100644 index 3f19ded..0000000 --- a/src/substrait/extension_files/functions_datetime.yaml +++ /dev/null @@ -1,1119 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_datetime -scalar_functions: - - - name: extract - description: >- - Extract portion of a date/time value. - * YEAR Return the year. - * ISO_YEAR Return the ISO 8601 week-numbering year. First week of an ISO year has the majority (4 or more) of - its days in January. - * US_YEAR Return the US epidemiological year. First week of US epidemiological year has the majority (4 or more) - of its days in January. Last week of US epidemiological year has the year's last Wednesday in it. US - epidemiological week starts on Sunday. - * QUARTER Return the number of the quarter within the year. January 1 through March 31 map to the first quarter, - April 1 through June 30 map to the second quarter, etc. - * MONTH Return the number of the month within the year. - * DAY Return the number of the day within the month. - * DAY_OF_YEAR Return the number of the day within the year. January 1 maps to the first day, February 1 maps to - the thirty-second day, etc. - * MONDAY_DAY_OF_WEEK Return the number of the day within the week, from Monday (first day) to Sunday (seventh - day). - * SUNDAY_DAY_OF_WEEK Return the number of the day within the week, from Sunday (first day) to Saturday (seventh - day). - * MONDAY_WEEK Return the number of the week within the year. First week starts on first Monday of January. - * SUNDAY_WEEK Return the number of the week within the year. First week starts on first Sunday of January. - * ISO_WEEK Return the number of the ISO week within the ISO year. First ISO week has the majority (4 or more) - of its days in January. ISO week starts on Monday. - * US_WEEK Return the number of the US week within the US year. First US week has the majority (4 or more) of - its days in January. US week starts on Sunday. - * HOUR Return the hour (0-23). - * MINUTE Return the minute (0-59). - * SECOND Return the second (0-59). - * MILLISECOND Return number of milliseconds since the last full second. - * MICROSECOND Return number of microseconds since the last full millisecond. - * NANOSECOND Return number of nanoseconds since the last full microsecond. - * PICOSECOND Return number of picoseconds since the last full nanosecond. - * SUBSECOND Return number of microseconds since the last full second of the given timestamp. - * UNIX_TIME Return number of seconds that have elapsed since 1970-01-01 00:00:00 UTC, ignoring leap seconds. - * TIMEZONE_OFFSET Return number of seconds of timezone offset to UTC. - - The range of values returned for QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, SUNDAY_DAY_OF_WEEK, - MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, and US_WEEK depends on whether counting starts at 1 or 0. This is governed - by the indexing option. - - When indexing is ONE: - * QUARTER returns values in range 1-4 - * MONTH returns values in range 1-12 - * DAY returns values in range 1-31 - * DAY_OF_YEAR returns values in range 1-366 - * MONDAY_DAY_OF_WEEK and SUNDAY_DAY_OF_WEEK return values in range 1-7 - * MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, and US_WEEK return values in range 1-53 - - When indexing is ZERO: - * QUARTER returns values in range 0-3 - * MONTH returns values in range 0-11 - * DAY returns values in range 0-30 - * DAY_OF_YEAR returns values in range 0-365 - * MONDAY_DAY_OF_WEEK and SUNDAY_DAY_OF_WEEK return values in range 0-6 - * MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, and US_WEEK return values in range 0-52 - - The indexing option must be specified when the component is QUARTER, MONTH, DAY, DAY_OF_YEAR, - MONDAY_DAY_OF_WEEK, SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, or US_WEEK. The - indexing option cannot be specified when the component is YEAR, ISO_YEAR, US_YEAR, HOUR, MINUTE, SECOND, - MILLISECOND, MICROSECOND, SUBSECOND, UNIX_TIME, or TIMEZONE_OFFSET. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: component - options: [ YEAR, ISO_YEAR, US_YEAR, HOUR, MINUTE, SECOND, - MILLISECOND, MICROSECOND, SUBSECOND, PICOSECOND, UNIX_TIME, TIMEZONE_OFFSET ] - description: The part of the value to extract. - - name: x - value: timestamp_tz - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: i64 - - args: - - name: component - options: [ YEAR, ISO_YEAR, US_YEAR, HOUR, MINUTE, SECOND, - MILLISECOND, MICROSECOND, NANOSECOND, PICOSECOND, SUBSECOND, UNIX_TIME, TIMEZONE_OFFSET ] - description: The part of the value to extract. - - name: x - value: precision_timestamp_tz

- - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: i64 - - args: - - name: component - options: [ YEAR, ISO_YEAR, US_YEAR, HOUR, MINUTE, SECOND, - MILLISECOND, MICROSECOND, SUBSECOND, UNIX_TIME ] - description: The part of the value to extract. - - name: x - value: timestamp - return: i64 - - args: - - name: component - options: [ YEAR, ISO_YEAR, US_YEAR, HOUR, MINUTE, SECOND, - MILLISECOND, MICROSECOND, NANOSECOND, SUBSECOND, UNIX_TIME ] - description: The part of the value to extract. - - name: x - value: precision_timestamp

- return: i64 - - args: - - name: component - options: [ YEAR, ISO_YEAR, US_YEAR, UNIX_TIME ] - description: The part of the value to extract. - - name: x - value: date - return: i64 - - args: - - name: component - options: [ HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, SUBSECOND ] - description: The part of the value to extract. - - name: x - value: time - return: i64 - - args: - - name: component - options: [ QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, - SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK ] - description: The part of the value to extract. - - name: indexing - options: [ ONE, ZERO ] - description: Start counting from 1 or 0. - - name: x - value: timestamp_tz - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: i64 - - args: - - name: component - options: [ QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, - SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK ] - description: The part of the value to extract. - - name: indexing - options: [ ONE, ZERO ] - description: Start counting from 1 or 0. - - name: x - value: precision_timestamp_tz

- - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: i64 - - args: - - name: component - options: [ QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, - SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK ] - description: The part of the value to extract. - - name: indexing - options: [ ONE, ZERO ] - description: Start counting from 1 or 0. - - name: x - value: timestamp - return: i64 - - args: - - name: component - options: [ QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, - SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK ] - description: The part of the value to extract. - - name: indexing - options: [ ONE, ZERO ] - description: Start counting from 1 or 0. - - name: x - value: precision_timestamp

- return: i64 - - args: - - name: component - options: [ QUARTER, MONTH, DAY, DAY_OF_YEAR, MONDAY_DAY_OF_WEEK, - SUNDAY_DAY_OF_WEEK, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK ] - description: The part of the value to extract. - - name: indexing - options: [ ONE, ZERO ] - description: Start counting from 1 or 0. - - name: x - value: date - return: i64 - - - name: "extract_boolean" - description: >- - Extract boolean values of a date/time value. - * IS_LEAP_YEAR Return true if year of the given value is a leap year and false otherwise. - * IS_DST Return true if DST (Daylight Savings Time) is observed at the given value - in the given timezone. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: component - options: [ IS_LEAP_YEAR ] - description: The part of the value to extract. - - name: x - value: timestamp - return: boolean - - args: - - name: component - options: [ IS_LEAP_YEAR ] - description: The part of the value to extract. - - name: x - value: precision_timestamp

- return: boolean - - args: - - name: component - options: [ IS_LEAP_YEAR, IS_DST ] - description: The part of the value to extract. - - name: x - value: timestamp_tz - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: boolean - - args: - - name: component - options: [ IS_LEAP_YEAR, IS_DST ] - description: The part of the value to extract. - - name: x - value: precision_timestamp_tz

- - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: boolean - - args: - - name: component - options: [ IS_LEAP_YEAR ] - description: The part of the value to extract. - - name: x - value: date - return: boolean - - - name: "add" - description: >- - Add an interval to a date/time type. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp - - name: y - value: interval_year - return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: y - value: interval_year - return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: y - value: interval_year - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: interval_year - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: y - value: interval_year - return: timestamp - - args: - - name: x - value: timestamp - - name: y - value: interval_day

- return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: y - value: interval_day

- return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: y - value: interval_day

- return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: interval_day

- return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: y - value: interval_day

- return: timestamp - - - name: "multiply" - description: Multiply an interval by an integral number. - impls: - - args: - - name: x - value: i8 - - name: y - value: interval_day

- return: interval_day

- - args: - - name: x - value: i16 - - name: y - value: interval_day

- return: interval_day

- - args: - - name: x - value: i32 - - name: y - value: interval_day

- return: interval_day

- - args: - - name: x - value: i64 - - name: y - value: interval_day

- return: interval_day

- - args: - - name: x - value: i8 - - name: y - value: interval_year - return: interval_year - - args: - - name: x - value: i16 - - name: y - value: interval_year - return: interval_year - - args: - - name: x - value: i32 - - name: y - value: interval_year - return: interval_year - - args: - - name: x - value: i64 - - name: y - value: interval_year - return: interval_year - - - name: "add_intervals" - description: Add two intervals together. - impls: - - args: - - name: x - value: interval_day

- - name: y - value: interval_day

- return: interval_day

- - args: - - name: x - value: interval_year - - name: y - value: interval_year - return: interval_year - - - name: "subtract" - description: >- - Subtract an interval from a date/time type. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp - - name: y - value: interval_year - return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: y - value: interval_year - return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: y - value: interval_year - return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: interval_year - return: precision_timestamp_tz

- - args: - - name: x - value: timestamp_tz - - name: y - value: interval_year - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: interval_year - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: y - value: interval_year - return: date - - args: - - name: x - value: timestamp - - name: y - value: interval_day

- return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: y - value: interval_day

- return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: y - value: interval_day

- return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: interval_day

- return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: y - value: interval_day

- return: date - - - name: "lte" - description: less than or equal to - impls: - - args: - - name: x - value: timestamp - - name: y - value: timestamp - return: boolean - - args: - - name: x - value: precision_timestamp

- - name: y - value: precision_timestamp

- return: boolean - - args: - - name: x - value: timestamp_tz - - name: y - value: timestamp_tz - return: boolean - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: precision_timestamp_tz

- return: boolean - - args: - - name: x - value: date - - name: y - value: date - return: boolean - - args: - - name: x - value: interval_day

- - name: y - value: interval_day

- return: boolean - - args: - - name: x - value: interval_year - - name: y - value: interval_year - return: boolean - - - name: "lt" - description: less than - impls: - - args: - - name: x - value: timestamp - - name: y - value: timestamp - return: boolean - - args: - - name: x - value: precision_timestamp

- - name: y - value: precision_timestamp

- return: boolean - - args: - - name: x - value: timestamp_tz - - name: y - value: timestamp_tz - return: boolean - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: precision_timestamp_tz

- return: boolean - - args: - - name: x - value: date - - name: y - value: date - return: boolean - - args: - - name: x - value: interval_day

- - name: y - value: interval_day

- return: boolean - - args: - - name: x - value: interval_year - - name: y - value: interval_year - return: boolean - - - name: "gte" - description: greater than or equal to - impls: - - args: - - name: x - value: timestamp - - name: y - value: timestamp - return: boolean - - args: - - name: x - value: precision_timestamp

- - name: y - value: precision_timestamp

- return: boolean - - args: - - name: x - value: timestamp_tz - - name: y - value: timestamp_tz - return: boolean - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: precision_timestamp_tz

- return: boolean - - args: - - name: x - value: date - - name: y - value: date - return: boolean - - args: - - name: x - value: interval_day

- - name: y - value: interval_day

- return: boolean - - args: - - name: x - value: interval_year - - name: y - value: interval_year - return: boolean - - - name: "gt" - description: greater than - impls: - - args: - - name: x - value: timestamp - - name: y - value: timestamp - return: boolean - - args: - - name: x - value: precision_timestamp

- - name: y - value: precision_timestamp

- return: boolean - - args: - - name: x - value: timestamp_tz - - name: y - value: timestamp_tz - return: boolean - - args: - - name: x - value: precision_timestamp_tz

- - name: y - value: precision_timestamp_tz

- return: boolean - - args: - - name: x - value: date - - name: y - value: date - return: boolean - - args: - - name: x - value: interval_day

- - name: y - value: interval_day

- return: boolean - - args: - - name: x - value: interval_year - - name: y - value: interval_year - return: boolean - - - name: "assume_timezone" - description: >- - Convert local timestamp to UTC-relative timestamp_tz using given local time's timezone. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp_tz - - args: - - name: x - value: precision_timestamp

- - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: timezone - description: Timezone string from IANA tzdb. Returned timestamp_tz will have time set to 00:00:00. - value: string - return: timestamp_tz - - - name: "local_timestamp" - description: >- - Convert UTC-relative timestamp_tz to local timestamp using given local time's timezone. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp_tz - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp - - args: - - name: x - value: precision_timestamp_tz

- - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: precision_timestamp

- - - name: "strptime_time" - description: >- - Parse string into time using provided format, - see https://man7.org/linux/man-pages/man3/strptime.3.html for reference. - impls: - - args: - - name: time_string - value: string - - name: format - value: string - return: time - - - name: "strptime_date" - description: >- - Parse string into date using provided format, - see https://man7.org/linux/man-pages/man3/strptime.3.html for reference. - impls: - - args: - - name: date_string - value: string - - name: format - value: string - return: date - - - name: "strptime_timestamp" - description: >- - Parse string into timestamp using provided format, - see https://man7.org/linux/man-pages/man3/strptime.3.html for reference. - If timezone is present in timestamp and provided as parameter an error is thrown. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is supplied as parameter and present in the parsed string the parsed timezone is used. - If parameter supplied timezone is invalid an error is thrown. - impls: - - args: - - name: timestamp_string - value: string - - name: format - value: string - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp_tz - - args: - - name: timestamp_string - value: string - - name: format - value: string - return: timestamp_tz - - - name: "strftime" - description: >- - Convert timestamp/date/time to string using provided format, - see https://man7.org/linux/man-pages/man3/strftime.3.html for reference. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp - - name: format - value: string - return: string - - args: - - name: x - value: precision_timestamp

- - name: format - value: string - return: string - - args: - - name: x - value: timestamp_tz - - name: format - value: string - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: string - - args: - - name: x - value: precision_timestamp_tz

- - name: format - value: string - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: string - - args: - - name: x - value: date - - name: format - value: string - return: string - - args: - - name: x - value: time - - name: format - value: string - return: string - - - name: "round_temporal" - description: >- - Round a given timestamp/date/time to a multiple of a time unit. If the given timestamp is not already an - exact multiple from the origin in the given timezone, the resulting point is chosen as one of the - two nearest multiples. Which of these is chosen is governed by rounding: FLOOR means to use the earlier - one, CEIL means to use the later one, ROUND_TIE_DOWN means to choose the nearest and tie to the - earlier one if equidistant, ROUND_TIE_UP means to choose the nearest and tie to the later one if - equidistant. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - impls: - - args: - - name: x - value: timestamp - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: multiple - value: i64 - - name: origin - value: timestamp - return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: multiple - value: i64 - - name: origin - value: precision_timestamp

- return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: multiple - value: i64 - - name: timezone - description: Timezone string from IANA tzdb. - value: string - - name: origin - value: timestamp_tz - return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: multiple - value: i64 - - name: timezone - description: Timezone string from IANA tzdb. - value: string - - name: origin - value: precision_timestamp_tz

- return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY ] - - name: multiple - value: i64 - - name: origin - value: date - return: date - - args: - - name: x - value: time - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: multiple - value: i64 - - name: origin - value: time - return: time - - - name: "round_calendar" - description: >- - Round a given timestamp/date/time to a multiple of a time unit. If the given timestamp is not already an - exact multiple from the last origin unit in the given timezone, the resulting point is chosen as one of the - two nearest multiples. Which of these is chosen is governed by rounding: FLOOR means to use the earlier - one, CEIL means to use the later one, ROUND_TIE_DOWN means to choose the nearest and tie to the - earlier one if equidistant, ROUND_TIE_UP means to choose the nearest and tie to the later one if - equidistant. - - Timezone strings must be as defined by IANA timezone database (https://www.iana.org/time-zones). - Examples: "Pacific/Marquesas", "Etc/GMT+1". - If timezone is invalid an error is thrown. - - impls: - - args: - - name: x - value: timestamp - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: origin - options: [ YEAR, MONTH, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, - US_WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND ] - - name: multiple - value: i64 - return: timestamp - - args: - - name: x - value: precision_timestamp

- - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: origin - options: [ YEAR, MONTH, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, - US_WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND ] - - name: multiple - value: i64 - return: precision_timestamp

- - args: - - name: x - value: timestamp_tz - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: origin - options: [ YEAR, MONTH, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, - US_WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND ] - - name: multiple - value: i64 - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: timestamp_tz - - args: - - name: x - value: precision_timestamp_tz

- - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: origin - options: [ YEAR, MONTH, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, - US_WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND ] - - name: multiple - value: i64 - - name: timezone - description: Timezone string from IANA tzdb. - value: string - return: precision_timestamp_tz

- - args: - - name: x - value: date - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ YEAR, MONTH, WEEK, DAY ] - - name: origin - options: [ YEAR, MONTH, MONDAY_WEEK, SUNDAY_WEEK, ISO_WEEK, US_WEEK, DAY ] - - name: multiple - value: i64 - - name: origin - value: date - return: date - - args: - - name: x - value: time - - name: rounding - options: [ FLOOR, CEIL, ROUND_TIE_DOWN, ROUND_TIE_UP ] - - name: unit - options: [ DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND ] - - name: origin - options: [ DAY, HOUR, MINUTE, SECOND, MILLISECOND ] - - name: multiple - value: i64 - - name: origin - value: time - return: time - -aggregate_functions: - - name: "min" - description: Min a set of values. - impls: - - args: - - name: x - value: date - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: date? - return: date? - - args: - - name: x - value: time - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: time? - return: time? - - args: - - name: x - value: timestamp - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: timestamp? - return: timestamp? - - args: - - name: x - value: precision_timestamp

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: precision_timestamp?

- return: precision_timestamp?

- - args: - - name: x - value: timestamp_tz - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: timestamp_tz? - return: timestamp_tz? - - args: - - name: x - value: precision_timestamp_tz

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: precision_timestamp_tz?

- return: precision_timestamp_tz?

- - args: - - name: x - value: interval_day

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: interval_day?

- return: interval_day?

- - args: - - name: x - value: interval_year - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: interval_year? - return: interval_year? - - name: "max" - description: Max a set of values. - impls: - - args: - - name: x - value: date - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: date? - return: date? - - args: - - name: x - value: time - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: time? - return: time? - - args: - - name: x - value: timestamp - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: timestamp? - return: timestamp? - - args: - - name: x - value: precision_timestamp

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: precision_timestamp?

- return: precision_timestamp?

- - args: - - name: x - value: timestamp_tz - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: timestamp_tz? - return: timestamp_tz? - - args: - - name: x - value: precision_timestamp_tz

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: precision_timestamp_tz?

- return: precision_timestamp_tz?

- - args: - - name: x - value: interval_day

- nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: interval_day?

- return: interval_day?

- - args: - - name: x - value: interval_year - nullability: DECLARED_OUTPUT - decomposable: MANY - intermediate: interval_year? - return: interval_year? diff --git a/src/substrait/extension_files/functions_geometry.yaml b/src/substrait/extension_files/functions_geometry.yaml deleted file mode 100644 index 127978c..0000000 --- a/src/substrait/extension_files/functions_geometry.yaml +++ /dev/null @@ -1,240 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_geometry -types: - - name: geometry - structure: "BINARY" -# description: | -# An opaque type that can represent one or many points, lines, or shapes encompassing -# 2, 3 or 4 dimension. -scalar_functions: - - - name: "point" - description: > - Returns a 2D point with the given `x` and `y` coordinate values. - impls: - - args: - - name: x - value: fp64 - - name: y - value: fp64 - return: u!geometry - - - name: "make_line" - description: > - Returns a linestring connecting the endpoint of geometry `geom1` to the begin point of - geometry `geom2`. Repeated points at the beginning of input geometries are collapsed to a single point. - - A linestring can be closed or simple. A closed linestring starts and ends on the same - point. A simple linestring does not cross or touch itself. - impls: - - args: - - name: geom1 - value: u!geometry - - name: geom2 - value: u!geometry - return: u!geometry - - - name: "x_coordinate" - description: > - Return the x coordinate of the point. Return null if not available. - impls: - - args: - - name: point - value: u!geometry - return: fp64 - - - name: "y_coordinate" - description: > - Return the y coordinate of the point. Return null if not available. - impls: - - args: - - name: point - value: u!geometry - return: fp64 - - - name: "num_points" - description: > - Return the number of points in the geometry. The geometry should be an linestring - or circularstring. - impls: - - args: - - name: geom - value: u!geometry - return: i64 - - - name: "is_empty" - description: > - Return true is the geometry is an empty geometry. - impls: - - args: - - name: geom - value: u!geometry - return: boolean - - - name: "is_closed" - description: > - Return true if the geometry's start and end points are the same. - impls: - - args: - - name: geom - value: u!geometry - return: boolean - - - name: "is_simple" - description: > - Return true if the geometry does not self intersect. - impls: - - args: - - name: geom - value: u!geometry - return: boolean - - - name: "is_ring" - description: > - Return true if the geometry's start and end points are the same and it does not self - intersect. - impls: - - args: - - name: geom - value: u!geometry - return: boolean - - - name: "geometry_type" - description: > - Return the type of geometry as a string. - impls: - - args: - - name: geom - value: u!geometry - return: string - - - name: "envelope" - description: > - Return the minimum bounding box for the input geometry as a geometry. - - The returned geometry is defined by the corner points of the bounding box. If the - input geometry is a point or a line, the returned geometry can also be a point or line. - impls: - - args: - - name: geom - value: u!geometry - return: u!geometry - - - name: "dimension" - description: > - Return the dimension of the input geometry. If the input is a collection of geometries, - return the largest dimension from the collection. Dimensionality is determined by - the complexity of the input and not the coordinate system being used. - - Type dimensions: - POINT - 0 - LINE - 1 - POLYGON - 2 - impls: - - args: - - name: geom - value: u!geometry - return: i8 - - - name: "is_valid" - description: > - Return true if the input geometry is a valid 2D geometry. - - For 3 dimensional and 4 dimensional geometries, the validity is still only tested - in 2 dimensions. - impls: - - args: - - name: geom - value: u!geometry - return: boolean - - - name: "collection_extract" - description: > - Given the input geometry collection, return a homogenous multi-geometry. All geometries - in the multi-geometry will have the same dimension. - - If type is not specified, the multi-geometry will only contain geometries of the highest - dimension. If type is specified, the multi-geometry will only contain geometries - of that type. If there are no geometries of the specified type, an empty geometry - is returned. Only points, linestrings, and polygons are supported. - - Type numbers: - POINT - 0 - LINE - 1 - POLYGON - 2 - impls: - - args: - - name: geom_collection - value: u!geometry - return: u!geometry - - args: - - name: geom_collection - value: u!geometry - - name: type - value: i8 - return: u!geometry - - - name: "flip_coordinates" - description: > - Return a version of the input geometry with the X and Y axis flipped. - - This operation can be performed on geometries with more than 2 dimensions. However, - only X and Y axis will be flipped. - impls: - - args: - - name: geom_collection - value: u!geometry - return: u!geometry - - - name: "remove_repeated_points" - description: > - Return a version of the input geometry with duplicate consecutive points removed. - - If the `tolerance` argument is provided, consecutive points within the tolerance - distance of one another are considered to be duplicates. - impls: - - args: - - name: geom - value: u!geometry - return: u!geometry - - args: - - name: geom - value: u!geometry - - name: tolerance - value: fp64 - return: u!geometry - - - name: "buffer" - description: > - Compute and return an expanded version of the input geometry. All the points - of the returned geometry are at a distance of `buffer_radius` away from the points - of the input geometry. If a negative `buffer_radius` is provided, the geometry will - shrink instead of expand. A negative `buffer_radius` may shrink the geometry completely, - in which case an empty geometry is returned. For input the geometries of points or lines, - a negative `buffer_radius` will always return an emtpy geometry. - impls: - - args: - - name: geom - value: u!geometry - - name: buffer_radius - value: fp64 - return: u!geometry - - - name: "centroid" - description: > - Return a point which is the geometric center of mass of the input geometry. - impls: - - args: - - name: geom - value: u!geometry - return: u!geometry - - - name: "minimum_bounding_circle" - description: > - Return the smallest circle polygon that contains the input geometry. - impls: - - args: - - name: geom - value: u!geometry - return: u!geometry diff --git a/src/substrait/extension_files/functions_list.yaml b/src/substrait/extension_files/functions_list.yaml deleted file mode 100644 index d210312..0000000 --- a/src/substrait/extension_files/functions_list.yaml +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_list -scalar_functions: - - name: "transform" - description: >- - Transforms each element of a list using the provided function. - Also known as "map" in functional programming. - - Returns a new list where each element is the result of applying - the transformer to the corresponding element in the input list. - - The transformer receives one parameter (the current element) and must return - the transformed value. - impls: - - args: - - name: input - value: list - - name: transformer - value: func any2> - nullability: MIRROR - return: list - - - name: "filter" - description: >- - Filters a list of elements based on a predicate function. - - Returns a new list containing only elements for which the predicate - function returns true. - - The predicate receives one parameter (the current element) and must return a - boolean. - - Elements for which the predicate returns true are included in the - result. Elements for which the predicate returns false or null are excluded. - impls: - - args: - - name: input - value: list - - name: predicate - value: func boolean> - nullability: MIRROR - return: list diff --git a/src/substrait/extension_files/functions_logarithmic.yaml b/src/substrait/extension_files/functions_logarithmic.yaml deleted file mode 100644 index d1f8dd9..0000000 --- a/src/substrait/extension_files/functions_logarithmic.yaml +++ /dev/null @@ -1,255 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_logarithmic -scalar_functions: - - - name: "ln" - description: "Natural logarithm of the value" - impls: - - args: - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: decimal - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [ NAN, ERROR, MINUS_INFINITY ] - return: fp64 - - - name: "log10" - description: "Logarithm to base 10 of the value" - impls: - - args: - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: decimal - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [ NAN, ERROR, MINUS_INFINITY ] - return: fp64 - - - name: "log2" - description: "Logarithm to base 2 of the value" - impls: - - args: - - name: x - value: i64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: decimal - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [ NAN, ERROR, MINUS_INFINITY ] - return: fp64 - - - name: "logb" - description: > - Logarithm of the value with the given base - - logb(x, b) => log_{b} (x) - impls: - - args: - - value: i64 - name: "x" - description: "The number `x` to compute the logarithm of" - - value: i64 - name: "base" - description: "The logarithm base `b` to use" - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - value: fp32 - name: "x" - description: "The number `x` to compute the logarithm of" - - value: fp32 - name: "base" - description: "The logarithm base `b` to use" - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp32 - - args: - - value: fp64 - name: "x" - description: "The number `x` to compute the logarithm of" - - value: fp64 - name: "base" - description: "The logarithm base `b` to use" - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - value: decimal - name: "x" - description: "The number `x` to compute the logarithm of" - - value: decimal - name: "base" - description: "The logarithm base `b` to use" - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - - name: "log1p" - description: > - Natural logarithm (base e) of 1 + x - - log1p(x) => log(1+x) - impls: - - args: - - name: x - value: fp32 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp32 - - args: - - name: x - value: fp64 - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 - - args: - - name: x - value: decimal - options: - rounding: - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR ] - on_domain_error: - values: [ NAN, "NULL", ERROR ] - on_log_zero: - values: [NAN, ERROR, MINUS_INFINITY] - return: fp64 diff --git a/src/substrait/extension_files/functions_rounding.yaml b/src/substrait/extension_files/functions_rounding.yaml deleted file mode 100644 index 0ca8713..0000000 --- a/src/substrait/extension_files/functions_rounding.yaml +++ /dev/null @@ -1,271 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_rounding -scalar_functions: - - - name: "ceil" - description: > - Rounding to the ceiling of the value `x`. - impls: - - args: - - value: fp32 - name: "x" - return: fp32 - - args: - - value: fp64 - name: "x" - return: fp64 - - - name: "floor" - description: > - Rounding to the floor of the value `x`. - impls: - - args: - - value: fp32 - name: "x" - return: fp32 - - args: - - value: fp64 - name: "x" - return: fp64 - - - name: "round" - description: > - Rounding the value `x` to `s` decimal places. - impls: - - args: - - value: i8 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, nothing will happen - since `x` is an integer value. - - When `s` is a negative number, the rounding is - performed to the nearest multiple of `10^(-s)`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: i8? - - args: - - value: i16 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, nothing will happen - since `x` is an integer value. - - When `s` is a negative number, the rounding is - performed to the nearest multiple of `10^(-s)`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: i16? - - args: - - value: i32 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, nothing will happen - since `x` is an integer value. - - When `s` is a negative number, the rounding is - performed to the nearest multiple of `10^(-s)`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: i32? - - args: - - value: i64 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, nothing will happen - since `x` is an integer value. - - When `s` is a negative number, the rounding is - performed to the nearest multiple of `10^(-s)`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: i64? - - args: - - value: fp32 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, the rounding - is performed to a `s` number of decimal places. - - When `s` is a negative number, the rounding is - performed to the left side of the decimal point - as specified by `s`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: fp32? - - args: - - value: fp64 - name: "x" - description: > - Numerical expression to be rounded. - - value: i32 - name: "s" - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, the rounding - is performed to a `s` number of decimal places. - - When `s` is a negative number, the rounding is - performed to the left side of the decimal point - as specified by `s`. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: fp64? diff --git a/src/substrait/extension_files/functions_rounding_decimal.yaml b/src/substrait/extension_files/functions_rounding_decimal.yaml deleted file mode 100644 index 057dc60..0000000 --- a/src/substrait/extension_files/functions_rounding_decimal.yaml +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_rounding_decimal -scalar_functions: - - - name: "ceil" - description: > - Rounding to the ceiling of the value `x`. - impls: - - args: - - value: decimal - name: x - return: |- - integral_least_num_digits = P - S + 1 - precision = min(integral_least_num_digits, 38) - decimal? - - - name: "floor" - description: > - Rounding to the floor of the value `x`. - impls: - - args: - - value: decimal - name: x - return: |- - integral_least_num_digits = P - S + 1 - precision = min(integral_least_num_digits, 38) - decimal? - - - name: "round" - description: > - Rounding the value `x` to `s` decimal places. - impls: - - args: - - value: decimal - name: x - description: > - Numerical expression to be rounded. - - value: i32 - name: s - description: > - Number of decimal places to be rounded to. - - When `s` is a positive number, the rounding - is performed to a `s` number of decimal places. - - When `s` is a negative number, the rounding is - performed to the left side of the decimal point - as specified by `s`. - - The precision of the resultant decimal type is one - more than the precision of the input decimal type to - allow for numbers that round up or down to the next - decimal magnitude. - E.g. `round(9.9, 0)` -> `10.0`. - The scale of the resultant decimal type cannot be - larger than the scale of the input decimal type. - options: - rounding: - description: > - When a boundary is computed to lie somewhere between two values, - and this value cannot be exactly represented, this specifies how - to round it. - - - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie - to the even option. - - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly - halfway, tie away from zero. - - TRUNCATE: always round toward zero. - - CEILING: always round toward positive infinity. - - FLOOR: always round toward negative infinity. - - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - - TIE_DOWN: round ties with FLOOR rule - - TIE_UP: round ties with CEILING rule - - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - - TIE_TO_ODD: round to nearest value; if exactly halfway, tie - to the odd option. - values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, - AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] - nullability: DECLARED_OUTPUT - return: |- - precision = min(P + 1, 38) - decimal? diff --git a/src/substrait/extension_files/functions_set.yaml b/src/substrait/extension_files/functions_set.yaml deleted file mode 100644 index 3331b29..0000000 --- a/src/substrait/extension_files/functions_set.yaml +++ /dev/null @@ -1,28 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_set -scalar_functions: - - - name: "index_in" - description: > - Checks the membership of a value in a list of values - - Returns the first 0-based index value of some input `needle` if `needle` is equal to - any element in `haystack`. Returns `NULL` if not found. - - If `needle` is `NULL`, returns `NULL`. - - If `needle` is `NaN`: - - Returns 0-based index of `NaN` in `input` (default) - - Returns `NULL` (if `NAN_IS_NOT_NAN` is specified) - impls: - - args: - - name: needle - value: any1 - - name: haystack - value: list - options: - nan_equality: - values: [ NAN_IS_NAN, NAN_IS_NOT_NAN ] - nullability: DECLARED_OUTPUT - return: i64? diff --git a/src/substrait/extension_files/functions_string.yaml b/src/substrait/extension_files/functions_string.yaml deleted file mode 100644 index 2cd5f84..0000000 --- a/src/substrait/extension_files/functions_string.yaml +++ /dev/null @@ -1,1578 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:functions_string -scalar_functions: - - - name: concat - description: >- - Concatenate strings. - - The `null_handling` option determines whether or not null values will be recognized by the function. - If `null_handling` is set to `IGNORE_NULLS`, null value arguments will be ignored when strings are concatenated. - If set to `ACCEPT_NULLS`, the result will be null if any argument passed to the concat function is null. - impls: - - args: - - value: "varchar" - name: "input" - variadic: - min: 1 - options: - null_handling: - values: [ IGNORE_NULLS, ACCEPT_NULLS ] - return: "varchar" - - args: - - value: "string" - name: "input" - variadic: - min: 1 - options: - null_handling: - values: [ IGNORE_NULLS, ACCEPT_NULLS ] - return: "string" - - - name: like - description: >- - Are two strings like each other. - - The `case_sensitivity` option applies to the `match` argument. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "match" - description: The string to match against the input string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "match" - description: The string to match against the input string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - - name: substring - description: >- - Extract a substring of a specified `length` starting from position `start`. - A `start` value of 1 refers to the first characters of the string. When - `length` is not specified the function will extract a substring starting - from position `start` and ending at the end of the string. - - The `negative_start` option applies to the `start` parameter. `WRAP_FROM_END` means - the index will start from the end of the `input` and move backwards. - The last character has an index of -1, the second to last character has an index of -2, - and so on. `LEFT_OF_BEGINNING` means the returned substring will start from - the left of the first character. A `start` of -1 will begin 2 characters left of the - the `input`, while a `start` of 0 begins 1 character left of the `input`. - impls: - - args: - - value: "varchar" - name: "input" - - value: i32 - name: "start" - - value: i32 - name: "length" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING, ERROR ] - return: "varchar" - - args: - - value: "string" - name: "input" - - value: i32 - name: "start" - - value: i32 - name: "length" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING, ERROR ] - return: "string" - - args: - - value: "fixedchar" - name: "input" - - value: i32 - name: "start" - - value: i32 - name: "length" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING, ERROR ] - return: "string" - - args: - - value: "varchar" - name: "input" - - value: i32 - name: "start" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING ] - return: "varchar" - - args: - - value: "string" - name: "input" - - value: i32 - name: "start" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING ] - return: "string" - - args: - - value: "fixedchar" - name: "input" - - value: i32 - name: "start" - options: - negative_start: - values: [ WRAP_FROM_END, LEFT_OF_BEGINNING ] - return: "string" - - - name: regexp_match_substring - description: >- - Extract a substring that matches the given regular expression pattern. The regular expression - pattern should follow the International Components for Unicode implementation - (https://unicode-org.github.io/icu/userguide/strings/regexp.html). The occurrence of the - pattern to be extracted is specified using the `occurrence` argument. Specifying `1` means - the first occurrence will be extracted, `2` means the second occurrence, and so on. - The `occurrence` argument should be a positive non-zero integer. The number of characters - from the beginning of the string to begin starting to search for pattern matches can be - specified using the `position` argument. Specifying `1` means to search for matches - starting at the first character of the input string, `2` means the second character, and so - on. The `position` argument should be a positive non-zero integer. The regular - expression capture group can be specified using the `group` argument. Specifying `0` - will return the substring matching the full regular expression. Specifying `1` will - return the substring matching only the first capture group, and so on. The `group` - argument should be a non-negative integer. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile, the occurrence value is out of range, - the position value is out of range, or the group value is out of range. - impls: - - args: - - value: "varchar" - name: "input" - - value: "varchar" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "occurrence" - - value: i64 - name: "group" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "varchar" - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "occurrence" - - value: i64 - name: "group" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "string" - - - name: regexp_match_substring - description: >- - Extract a substring that matches the given regular expression pattern. The regular expression - pattern should follow the International Components for Unicode implementation - (https://unicode-org.github.io/icu/userguide/strings/regexp.html). The first occurrence of the - pattern from the beginning of the string is extracted. It returns the substring matching the - full regular expression. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile. - impls: - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "string" - - - name: regexp_match_substring_all - description: >- - Extract all substrings that match the given regular expression pattern. This will return a - list of extracted strings with one value for each occurrence of a match. The regular expression - pattern should follow the International Components for Unicode implementation - (https://unicode-org.github.io/icu/userguide/strings/regexp.html). The number of characters - from the beginning of the string to begin starting to search for pattern matches can be - specified using the `position` argument. Specifying `1` means to search for matches - starting at the first character of the input string, `2` means the second character, and so - on. The `position` argument should be a positive non-zero integer. The regular - expression capture group can be specified using the `group` argument. Specifying `0` - will return substrings matching the full regular expression. Specifying `1` will return - substrings matching only the first capture group, and so on. The `group` argument should - be a non-negative integer. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile, the position value is out of range, - or the group value is out of range. - impls: - - args: - - value: "varchar" - name: "input" - - value: "varchar" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "group" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "List>" - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "group" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "List" - - - name: starts_with - description: >- - Whether the `input` string starts with the `substring`. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - - name: ends_with - description: >- - Whether `input` string ends with the substring. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - - name: contains - description: >- - Whether the `input` string contains the `substring`. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "boolean" - - - name: strpos - description: >- - Return the position of the first occurrence of a string in another string. The first - character of the string is at position 1. If no occurrence is found, 0 is returned. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to search for. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - - name: regexp_strpos - description: >- - Return the position of an occurrence of the given regular expression pattern in a - string. The first character of the string is at position 1. The regular expression pattern - should follow the International Components for Unicode implementation - (https://unicode-org.github.io/icu/userguide/strings/regexp.html). The number of characters - from the beginning of the string to begin starting to search for pattern matches can be - specified using the `position` argument. Specifying `1` means to search for matches - starting at the first character of the input string, `2` means the second character, and so - on. The `position` argument should be a positive non-zero integer. Which occurrence to - return the position of is specified using the `occurrence` argument. Specifying `1` means - the position first occurrence will be returned, `2` means the position of the second - occurrence, and so on. The `occurrence` argument should be a positive non-zero integer. If - no occurrence is found, 0 is returned. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile, the occurrence value is out of range, or - the position value is out of range. - impls: - - args: - - value: "varchar" - name: "input" - - value: "varchar" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "occurrence" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - - value: i64 - name: "position" - - value: i64 - name: "occurrence" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - - name: count_substring - description: >- - Return the number of non-overlapping occurrences of a substring in an input string. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "substring" - description: The substring to count. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "substring" - description: The substring to count. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - args: - - value: "fixedchar" - name: "input" - description: The input string. - - value: "fixedchar" - name: "substring" - description: The substring to count. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: i64 - - - name: regexp_count_substring - description: >- - Return the number of non-overlapping occurrences of a regular expression pattern in an input - string. The regular expression pattern should follow the International Components for - Unicode implementation (https://unicode-org.github.io/icu/userguide/strings/regexp.html). - The number of characters from the beginning of the string to begin starting to search for - pattern matches can be specified using the `position` argument. Specifying `1` means to - search for matches starting at the first character of the input string, `2` means the - second character, and so on. The `position` argument should be a positive non-zero integer. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile or the position value is out of range. - impls: - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - - value: i64 - name: "position" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - args: - - value: "varchar" - name: "input" - - value: "varchar" - name: "pattern" - - value: i64 - name: "position" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - args: - - value: "fixedchar" - name: "input" - - value: "fixedchar" - name: "pattern" - - value: i64 - name: "position" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - - name: regexp_count_substring - description: >- - Return the number of non-overlapping occurrences of a regular expression pattern in an input - string. The regular expression pattern should follow the International Components for - Unicode implementation (https://unicode-org.github.io/icu/userguide/strings/regexp.html). - The match starts at the first character of the input string. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile. - impls: - - args: - - value: "string" - name: "input" - - value: "string" - name: "pattern" - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: i64 - - - name: replace - description: >- - Replace all occurrences of the substring with the replacement string. - - The `case_sensitivity` option applies to the `substring` argument. - impls: - - args: - - value: "string" - name: "input" - description: Input string. - - value: "string" - name: "substring" - description: The substring to replace. - - value: "string" - name: "replacement" - description: The replacement string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "string" - - args: - - value: "varchar" - name: "input" - description: Input string. - - value: "varchar" - name: "substring" - description: The substring to replace. - - value: "varchar" - name: "replacement" - description: The replacement string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - return: "varchar" - - - name: concat_ws - description: Concatenate strings together separated by a separator. - impls: - - args: - - value: "string" - name: "separator" - description: Character to separate strings by. - - value: "string" - name: "string_arguments" - description: Strings to be concatenated. - variadic: - min: 1 - return: "string" - - args: - - value: "varchar" - name: "separator" - description: Character to separate strings by. - - value: "varchar" - name: "string_arguments" - description: Strings to be concatenated. - variadic: - min: 1 - return: "varchar" - - - name: repeat - description: Repeat a string `count` number of times. - impls: - - args: - - value: "string" - name: "input" - - value: i64 - name: "count" - return: "string" - - args: - - value: "varchar" - - value: i64 - name: "input" - - value: i64 - name: "count" - return: "varchar" - - - name: reverse - description: Returns the string in reverse order. - impls: - - args: - - value: "string" - name: "input" - return: "string" - - args: - - value: "varchar" - name: "input" - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - return: "fixedchar" - - - name: replace_slice - description: >- - Replace a slice of the input string. A specified 'length' of characters will be deleted from - the input string beginning at the 'start' position and will be replaced by a new string. A - start value of 1 indicates the first character of the input string. If start is negative - or zero, or greater than the length of the input string, a null string is returned. If 'length' - is negative, a null string is returned. If 'length' is zero, inserting of the new string - occurs at the specified 'start' position and no characters are deleted. If 'length' is - greater than the input string, deletion will occur up to the last character of the input string. - impls: - - args: - - value: "string" - name: "input" - description: Input string. - - value: i64 - name: "start" - description: The position in the string to start deleting/inserting characters. - - value: i64 - name: "length" - description: The number of characters to delete from the input string. - - value: "string" - name: "replacement" - description: The new string to insert at the start position. - return: "string" - - args: - - value: "varchar" - name: "input" - description: Input string. - - value: i64 - name: "start" - description: The position in the string to start deleting/inserting characters. - - value: i64 - name: "length" - description: The number of characters to delete from the input string. - - value: "varchar" - name: "replacement" - description: The new string to insert at the start position. - return: "varchar" - - - name: lower - description: >- - Transform the string to lower case characters. Implementation should follow the utf8_unicode_ci - collations according to the Unicode Collation Algorithm described at http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: upper - description: >- - Transform the string to upper case characters. Implementation should follow the utf8_unicode_ci - collations according to the Unicode Collation Algorithm described at http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: swapcase - description: >- - Transform the string's lowercase characters to uppercase and uppercase characters to - lowercase. Implementation should follow the utf8_unicode_ci collations according to the - Unicode Collation Algorithm described at http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: capitalize - description: >- - Capitalize the first character of the input string. Implementation should follow the - utf8_unicode_ci collations according to the Unicode Collation Algorithm described at - http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: title - description: >- - Converts the input string into titlecase. Capitalize the first character of each word in the - input string except for articles (a, an, the). Implementation should follow the - utf8_unicode_ci collations according to the Unicode Collation Algorithm described at - http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: initcap - description: >- - Capitalizes the first character of each word in the input string, including articles, - and lowercases the rest. Implementation should follow the utf8_unicode_ci collations - according to the Unicode Collation Algorithm described at http://www.unicode.org/reports/tr10/. - impls: - - args: - - value: "string" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "string" - - args: - - value: "varchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "varchar" - - args: - - value: "fixedchar" - name: "input" - options: - char_set: - values: [ UTF8, ASCII_ONLY ] - return: "fixedchar" - - - name: char_length - description: >- - Return the number of characters in the input string. The length includes trailing spaces. - impls: - - args: - - value: "string" - name: "input" - return: i64 - - args: - - value: "varchar" - name: "input" - return: i64 - - args: - - value: "fixedchar" - name: "input" - return: i64 - - - name: bit_length - description: Return the number of bits in the input string. - impls: - - args: - - value: "string" - name: "input" - return: i64 - - args: - - value: "varchar" - name: "input" - return: i64 - - args: - - value: "fixedchar" - name: "input" - return: i64 - - - name: octet_length - description: Return the number of bytes in the input string. - impls: - - args: - - value: "string" - name: "input" - return: i64 - - args: - - value: "varchar" - name: "input" - return: i64 - - args: - - value: "fixedchar" - name: "input" - return: i64 - - - name: regexp_replace - description: >- - Search a string for a substring that matches a given regular expression pattern and replace - it with a replacement string. The regular expression pattern should follow the - International Components for Unicode implementation (https://unicode-org.github - .io/icu/userguide/strings/regexp.html). The occurrence of the pattern to be replaced is - specified using the `occurrence` argument. Specifying `1` means only the first occurrence - will be replaced, `2` means the second occurrence, and so on. Specifying `0` means all - occurrences will be replaced. The number of characters from the beginning of the string to - begin starting to search for pattern matches can be specified using the `position` argument. - Specifying `1` means to search for matches starting at the first character of the input - string, `2` means the second character, and so on. The `position` argument should be a - positive non-zero integer. The replacement string can capture groups using numbered - backreferences. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile, the replacement contains an illegal - back-reference, the occurrence value is out of range, or the position value is out of range. - impls: - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "pattern" - description: The regular expression to search for within the input string. - - value: "string" - name: "replacement" - description: The replacement string. - - value: i64 - name: "position" - description: The position to start the search. - - value: i64 - name: "occurrence" - description: Which occurrence of the match to replace. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "string" - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "pattern" - description: The regular expression to search for within the input string. - - value: "varchar" - name: "replacement" - description: The replacement string. - - value: i64 - name: "position" - description: The position to start the search. - - value: i64 - name: "occurrence" - description: Which occurrence of the match to replace. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "varchar" - - - name: regexp_replace - description: >- - Search a string for a substring that matches a given regular expression pattern and replace - it with a replacement string. The regular expression pattern should follow the - International Components for Unicode implementation (https://unicode-org.github - .io/icu/userguide/strings/regexp.html). The replacement string can capture groups using numbered - backreferences. All occurrences of the pattern will be replaced. The search for matches - start at the first character of the input. - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - - Behavior is undefined if the regex fails to compile or the replacement contains an illegal - back-reference. - impls: - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "pattern" - description: The regular expression to search for within the input string. - - value: "string" - name: "replacement" - description: The replacement string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "string" - - - name: ltrim - description: >- - Remove any occurrence of the characters from the left side of the string. - If no characters are specified, spaces are removed. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to remove characters from." - - value: "varchar" - name: "characters" - description: "The set of characters to remove." - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to remove characters from." - - value: "string" - name: "characters" - description: "The set of characters to remove." - return: "string" - - - name: rtrim - description: >- - Remove any occurrence of the characters from the right side of the string. - If no characters are specified, spaces are removed. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to remove characters from." - - value: "varchar" - name: "characters" - description: "The set of characters to remove." - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to remove characters from." - - value: "string" - name: "characters" - description: "The set of characters to remove." - return: "string" - - - name: trim - description: >- - Remove any occurrence of the characters from the left and right sides of - the string. If no characters are specified, spaces are removed. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to remove characters from." - - value: "varchar" - name: "characters" - description: "The set of characters to remove." - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to remove characters from." - - value: "string" - name: "characters" - description: "The set of characters to remove." - return: "string" - - - name: lpad - description: >- - Left-pad the input string with the string of 'characters' until the specified length of the - string has been reached. If the input string is longer than 'length', remove characters from - the right-side to shorten it to 'length' characters. If the string of 'characters' is longer - than the remaining 'length' needed to be filled, only pad until 'length' has been reached. - If 'characters' is not specified, the default value is a single space. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "varchar" - name: "characters" - description: "The string of characters to use for padding." - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "string" - name: "characters" - description: "The string of characters to use for padding." - return: "string" - - - name: rpad - description: >- - Right-pad the input string with the string of 'characters' until the specified length of the - string has been reached. If the input string is longer than 'length', remove characters from - the left-side to shorten it to 'length' characters. If the string of 'characters' is longer - than the remaining 'length' needed to be filled, only pad until 'length' has been reached. - If 'characters' is not specified, the default value is a single space. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "varchar" - name: "characters" - description: "The string of characters to use for padding." - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "string" - name: "characters" - description: "The string of characters to use for padding." - return: "string" - - - name: center - description: >- - Center the input string by padding the sides with a single `character` until the specified - `length` of the string has been reached. By default, if the `length` will be reached with - an uneven number of padding, the extra padding will be applied to the right side. - The side with extra padding can be controlled with the `padding` option. - - Behavior is undefined if the number of characters passed to the `character` argument is not 1. - impls: - - args: - - value: "varchar" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "varchar" - name: "character" - description: "The character to use for padding." - options: - padding: - values: [ RIGHT, LEFT ] - return: "varchar" - - args: - - value: "string" - name: "input" - description: "The string to pad." - - value: i32 - name: "length" - description: "The length of the output string." - - value: "string" - name: "character" - description: "The character to use for padding." - options: - padding: - values: [ RIGHT, LEFT ] - return: "string" - - - name: left - description: Extract `count` characters starting from the left of the string. - impls: - - args: - - value: "varchar" - name: "input" - - value: i32 - name: "count" - return: "varchar" - - args: - - value: "string" - name: "input" - - value: i32 - name: "count" - return: "string" - - - name: right - description: Extract `count` characters starting from the right of the string. - impls: - - args: - - value: "varchar" - name: "input" - - value: i32 - name: "count" - return: "varchar" - - args: - - value: "string" - name: "input" - - value: i32 - name: "count" - return: "string" - - - name: string_split - description: >- - Split a string into a list of strings, based on a specified `separator` character. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "separator" - description: A character used for splitting the string. - return: "List>" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "separator" - description: A character used for splitting the string. - return: "List" - - - name: regexp_string_split - description: >- - Split a string into a list of strings, based on a regular expression pattern. The - substrings matched by the pattern will be used as the separators to split the input - string and will not be included in the resulting list. The regular expression - pattern should follow the International Components for Unicode implementation - (https://unicode-org.github.io/icu/userguide/strings/regexp.html). - - The `case_sensitivity` option specifies case-sensitive or case-insensitive matching. - Enabling the `multiline` option will treat the input string as multiple lines. This makes - the `^` and `$` characters match at the beginning and end of any line, instead of just the - beginning and end of the input string. Enabling the `dotall` option makes the `.` character - match line terminator characters in a string. - impls: - - args: - - value: "varchar" - name: "input" - description: The input string. - - value: "varchar" - name: "pattern" - description: The regular expression to search for within the input string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "List>" - - args: - - value: "string" - name: "input" - description: The input string. - - value: "string" - name: "pattern" - description: The regular expression to search for within the input string. - options: - case_sensitivity: - values: [ CASE_SENSITIVE, CASE_INSENSITIVE, CASE_INSENSITIVE_ASCII ] - multiline: - values: [ MULTILINE_DISABLED, MULTILINE_ENABLED ] - dotall: - values: [ DOTALL_DISABLED, DOTALL_ENABLED ] - return: "List" - -aggregate_functions: - - - - name: string_agg - description: Concatenates a column of string values with a separator. - impls: - - args: - - value: "string" - name: "input" - description: "Column of string values." - - value: "string" - name: "separator" - constant: true - description: "Separator for concatenated strings" - ordered: true - return: "string" diff --git a/src/substrait/extension_files/type_variations.yaml b/src/substrait/extension_files/type_variations.yaml deleted file mode 100644 index 6f129b5..0000000 --- a/src/substrait/extension_files/type_variations.yaml +++ /dev/null @@ -1,26 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:type_variations -type_variations: - - parent: string - name: dict4 - description: a four-byte dictionary encoded string - functions: INHERITS - - parent: string - name: bigoffset - description: >- - The arrow large string representation of strings, still restricted to the default string size defined in - Substrait. - functions: SEPARATE - - parent: struct - name: avro - description: an avro encoded struct - functions: SEPARATE - - parent: struct - name: cstruct - description: a cstruct representation of the struct - functions: SEPARATE - - parent: struct - name: dict2 - description: a 2-byte dictionary encoded string. - functions: INHERITS diff --git a/src/substrait/extension_files/unknown.yaml b/src/substrait/extension_files/unknown.yaml deleted file mode 100644 index 3603d68..0000000 --- a/src/substrait/extension_files/unknown.yaml +++ /dev/null @@ -1,67 +0,0 @@ -%YAML 1.2 ---- -urn: extension:io.substrait:unknown -types: - - name: unknown -scalar_functions: - - name: "add" - impls: - - args: - - value: unknown - - value: unknown - return: unknown - - name: "subtract" - impls: - - args: - - value: unknown - - value: unknown - return: unknown - - name: "multiply" - impls: - - args: - - value: unknown - - value: unknown - return: unknown - - name: "divide" - impls: - - args: - - value: unknown - - value: unknown - return: unknown - - name: "modulus" - impls: - - args: - - value: unknown - - value: unknown - return: unknown -aggregate_functions: - - name: "sum" - impls: - - args: - - value: unknown - intermediate: unknown - return: unknown - - name: "avg" - impls: - - args: - - value: unknown - intermediate: unknown - return: unknown - - name: "min" - impls: - - args: - - value: unknown - intermediate: unknown - return: unknown - - name: "max" - impls: - - args: - - value: unknown - intermediate: unknown - return: unknown - - name: "count" - impls: - - args: - - value: unknown - intermediate: unknown - return: unknown diff --git a/src/substrait/extension_registry/function_entry.py b/src/substrait/extension_registry/function_entry.py index 5189a6f..acb6fff 100644 --- a/src/substrait/extension_registry/function_entry.py +++ b/src/substrait/extension_registry/function_entry.py @@ -4,9 +4,9 @@ from typing import Optional, Union from substrait.type_pb2 import Type +from substrait_extensions.extensions import simple_extensions as se from substrait.derivation_expression import _parse, evaluate -from substrait.gen.json import simple_extensions as se from .signature_checker_helpers import covers, normalize_substrait_type_names diff --git a/src/substrait/extension_registry/registry.py b/src/substrait/extension_registry/registry.py index b95fa2a..1636247 100644 --- a/src/substrait/extension_registry/registry.py +++ b/src/substrait/extension_registry/registry.py @@ -32,7 +32,7 @@ def __init__(self, load_default_extensions=True) -> None: # Bidirectional URI <-> URN mapping (temporary during migration) self._uri_urn_bimap = UriUrnBiDiMap() if load_default_extensions: - for fpath in importlib_files("substrait.extension_files").glob( # type: ignore + for fpath in importlib_files("substrait_extensions.extensions").glob( # type: ignore "functions*.yaml" ): # Derive URI from DEFAULT_URN_PREFIX and filename diff --git a/src/substrait/gen/__init__.py b/src/substrait/gen/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/substrait/gen/__init__.pyi b/src/substrait/gen/__init__.pyi deleted file mode 100644 index 432f7de..0000000 --- a/src/substrait/gen/__init__.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from . import antlr -from . import json -from . import version diff --git a/src/substrait/gen/json/__init__.py b/src/substrait/gen/json/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/substrait/gen/json/__init__.pyi b/src/substrait/gen/json/__init__.pyi deleted file mode 100644 index e69de29..0000000 diff --git a/src/substrait/gen/json/simple_extensions.py b/src/substrait/gen/json/simple_extensions.py deleted file mode 100644 index 34f1a04..0000000 --- a/src/substrait/gen/json/simple_extensions.py +++ /dev/null @@ -1,218 +0,0 @@ -# generated by datamodel-codegen: -# filename: simple_extensions_schema.yaml - -from __future__ import annotations -from enum import Enum -from typing import Any, TypeAlias -from dataclasses import dataclass - - -class Functions(Enum): - INHERITS = "INHERITS" - SEPARATE = "SEPARATE" - - -Type: TypeAlias = str | dict[str, Any] - - -class Type1(Enum): - dataType = "dataType" - boolean = "boolean" - integer = "integer" - enumeration = "enumeration" - string = "string" - - -EnumOptions: TypeAlias = list[str] - - -@dataclass -class EnumerationArg: - options: EnumOptions - name: str | None = None - description: str | None = None - - -@dataclass -class ValueArg: - value: Type - name: str | None = None - description: str | None = None - constant: bool | None = None - - -@dataclass -class TypeArg: - type: str - name: str | None = None - description: str | None = None - - -Arguments: TypeAlias = list[EnumerationArg | ValueArg | TypeArg] - - -@dataclass -class Options1: - values: list[str] - description: str | None = None - - -Options: TypeAlias = dict[str, Options1] - - -class ParameterConsistency(Enum): - CONSISTENT = "CONSISTENT" - INCONSISTENT = "INCONSISTENT" - - -@dataclass -class VariadicBehavior: - min: float | None = None - max: float | None = None - parameterConsistency: ParameterConsistency | None = None - - -Deterministic: TypeAlias = bool - - -SessionDependent: TypeAlias = bool - - -class NullabilityHandling(Enum): - MIRROR = "MIRROR" - DECLARED_OUTPUT = "DECLARED_OUTPUT" - DISCRETE = "DISCRETE" - - -ReturnValue: TypeAlias = Type - - -Implementation: TypeAlias = dict[str, str] - - -Intermediate: TypeAlias = Type - - -class Decomposable(Enum): - NONE = "NONE" - ONE = "ONE" - MANY = "MANY" - - -Maxset: TypeAlias = float - - -Ordered: TypeAlias = bool - - -@dataclass -class Impl: - return_: ReturnValue - args: Arguments | None = None - options: Options | None = None - variadic: VariadicBehavior | None = None - sessionDependent: SessionDependent | None = None - deterministic: Deterministic | None = None - nullability: NullabilityHandling | None = None - implementation: Implementation | None = None - - -@dataclass -class ScalarFunction: - name: str - impls: list[Impl] - description: str | None = None - - -@dataclass -class Impl1: - return_: ReturnValue - args: Arguments | None = None - options: Options | None = None - variadic: VariadicBehavior | None = None - sessionDependent: SessionDependent | None = None - deterministic: Deterministic | None = None - nullability: NullabilityHandling | None = None - implementation: Implementation | None = None - intermediate: Intermediate | None = None - ordered: Ordered | None = None - maxset: Maxset | None = None - decomposable: Decomposable | None = None - - -@dataclass -class AggregateFunction: - name: str - impls: list[Impl1] - description: str | None = None - - -class WindowType(Enum): - STREAMING = "STREAMING" - PARTITION = "PARTITION" - - -@dataclass -class Impl2: - return_: ReturnValue - args: Arguments | None = None - options: Options | None = None - variadic: VariadicBehavior | None = None - sessionDependent: SessionDependent | None = None - deterministic: Deterministic | None = None - nullability: NullabilityHandling | None = None - implementation: Implementation | None = None - intermediate: Intermediate | None = None - ordered: Ordered | None = None - maxset: Maxset | None = None - decomposable: Decomposable | None = None - window_type: WindowType | None = None - - -@dataclass -class WindowFunction: - name: str - impls: list[Impl2] - description: str | None = None - - -@dataclass -class TypeVariation: - parent: Type - name: str - description: str | None = None - functions: Functions | None = None - - -@dataclass -class TypeParamDef: - type: Type1 - name: str | None = None - description: str | None = None - min: float | None = None - max: float | None = None - options: EnumOptions | None = None - optional: bool | None = None - - -TypeParamDefs: TypeAlias = list[TypeParamDef] - - -@dataclass -class TypeModel: - name: str - description: str | None = None - structure: Type | None = None - parameters: TypeParamDefs | None = None - variadic: bool | None = None - - -@dataclass -class SimpleExtensions: - urn: str - dependencies: dict[str, str] | None = None - types: list[TypeModel] | None = None - type_variations: list[TypeVariation] | None = None - scalar_functions: list[ScalarFunction] | None = None - aggregate_functions: list[AggregateFunction] | None = None - window_functions: list[WindowFunction] | None = None diff --git a/src/substrait/simple_extension_utils.py b/src/substrait/simple_extension_utils.py index 06164f0..172889d 100644 --- a/src/substrait/simple_extension_utils.py +++ b/src/substrait/simple_extension_utils.py @@ -1,6 +1,6 @@ from typing import Union -from substrait.gen.json import simple_extensions as se +from substrait_extensions.extensions import simple_extensions as se def build_arg(d: dict) -> Union[se.ValueArg, se.TypeArg, se.EnumerationArg]: diff --git a/third_party/substrait b/third_party/substrait deleted file mode 160000 index 92d2e75..0000000 --- a/third_party/substrait +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 92d2e757a330f9c973bb566817dc92afd1badcb2 diff --git a/uv.lock b/uv.lock index 0e54318..aa964e1 100644 --- a/uv.lock +++ b/uv.lock @@ -338,6 +338,7 @@ source = { editable = "." } dependencies = [ { name = "protobuf" }, { name = "substrait-protobuf" }, + { name = "vbarua-substrait-extensions" }, ] [package.optional-dependencies] @@ -372,6 +373,7 @@ requires-dist = [ { name = "sqloxide", marker = "python_full_version < '3.14' and extra == 'sql'" }, { name = "substrait-antlr", marker = "extra == 'extensions'", specifier = "==0.79.0" }, { name = "substrait-protobuf", specifier = "==0.79.0" }, + { name = "vbarua-substrait-extensions", specifier = "==0.79.0" }, ] provides-extras = ["extensions", "sql"] @@ -473,3 +475,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac8 wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] + +[[package]] +name = "vbarua-substrait-extensions" +version = "0.79.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/05/5d477318bebc68b0e7d9f0f4f277c9e8f8a312f4e19b75c040be580d7525/vbarua_substrait_extensions-0.79.0.tar.gz", hash = "sha256:ef2beb6f7c2e354f4e2d1f4ae4668a55637454863ed802baba557b050c3087bd", size = 48944, upload-time = "2026-03-10T23:57:37.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/ee/a8605e604876665409de858acbbb2e2ea5ac4a931e00739dc3d7d5d77ed1/vbarua_substrait_extensions-0.79.0-py3-none-any.whl", hash = "sha256:c940a1b648d9a4990a2d58121546d45fbeea1f30e24718ac8c34d5807fe4defc", size = 101765, upload-time = "2026-03-10T23:57:35.387Z" }, +]