substrait-validator


Namesubstrait-validator JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryValidator for Substrait query plans
upload_time2025-01-10 10:22:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseApache-2.0
keywords substrait
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Python bindings for validator

This directory contains a Rust/PyO3 project to generate Python bindings for the
validator library.

## Installation

The easiest way to install the validator is to get it from PyPI:

```console
user@host:~$ pip install substrait-validator
```

If you want to build manually, running something along the lines of
`pip install .` should work. You should only need to have a
[rust](https://www.rust-lang.org/tools/install) compiler installed.

If you want to create wheels or sdists of your own, you can do so using
maturin (note the manual prepare_build.py invocation, see hints):

```console
user@host:~$ pip install "maturin>=0.14,<0.15"
...
user@host:~$ ./prepare_build.py populate
user@host:~$ maturin build
...
📦 Built wheel for CPython 3.x to /path/to/substrait-validator/target/wheels/substrait_validator-x.y.z-cp3xx-cp3xx-linux_x86_64.whl
user@host:~$ maturin sdist
...
📦 Built source distribution to /path/to/substrait-validator/target/wheels/substrait_validator-x.y.z.tar.gz
```

Some hints if you run into issues:

 - This project relies on submodules, so you need to check those out first.
 - Out-of-tree builds are not supported, so you may need to beat pip into
   submission if you're using an old version or it otherwise insists on
   building from a temp directory.
 - If you get weird errors, try running `./prepare_build.py populate` manually
   first. The protobuf generation logic has to be run very early in the build
   process, and while this is done automatically for most build methods, not
   all methods provide a hook for this.

## Building wheels and source distributions

You can build wheels and source distributions using
[maturin](https://github.com/PyO3/maturin), specifically using the `build` and
`sdist` commands. However, before you can do this, you must run
`./prepare_build.py populate`. This makes local copies of some files in the
repository that live outside of this subdirectory, such as the protobuf
description files. When you use `pip` or some other tool based on
`pyproject.toml`, this will be done automatically via build system hooks, but
unfortunately maturin doesn't itself provide hooks with which this can be
automated.

## Running tests

You can test the module using `pytest` after you install it.

## Command-line usage

The module exposes a command-line program named `substrait-validator` for
running the validator manually. You can also use the tool to convert between
various serialization formats of the `substrait.Plan` message. Run
`substrait-validator --help` for more information.

## Library usage

The library essentially provides a bunch of type conversion functions at
module scope to convert between the various representations of a Substrait
plan, including the result of the validator. The most important functions are
arguably `check_plan_valid(plan, config=None)` and
`check_plan_not_invalid(plan, config=None)`, which run validation on the given
plan and throw a Python exception corresponding to the first diagnostic
returned by the validator of the highest severity encountered if the plan is
not strictly or loosely valid respectively. That is, `check_plan_valid` will
throw an exception if the plan could not be proven to be valid, while
`check_plan_not_invalid` will only throw if it could be proven to be invalid.

The `plan` argument can be a number of things:

 - `bytes`: treated as a binary serialization of `substrait.Plan`.
 - `str`: treated as a protobuf JSON serialization of `substrait.Plan`.
 - `dict`: treated as the above using Python's data model (JSON objects map
   to `dict`s, JSON arrays map to `list`s).
 - `substrait_validator.substrait.Plan`: a previously deserialized plan.
 - `substrait_validator.ResultHandle`: a previously validated plan.

`config` can be `None`/unspecified, or can be set to a
`substrait_validator.Config` object to configure the validator with.

For more information, use Python's `help()` function.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "substrait-validator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "substrait",
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/a9/c5/f3ea278cfe62f45ef0b9768d1e5eb68ea55127f01f877bf3b4ffd1651dfb/substrait_validator-0.1.3.tar.gz",
    "platform": null,
    "description": "# Python bindings for validator\n\nThis directory contains a Rust/PyO3 project to generate Python bindings for the\nvalidator library.\n\n## Installation\n\nThe easiest way to install the validator is to get it from PyPI:\n\n```console\nuser@host:~$ pip install substrait-validator\n```\n\nIf you want to build manually, running something along the lines of\n`pip install .` should work. You should only need to have a\n[rust](https://www.rust-lang.org/tools/install) compiler installed.\n\nIf you want to create wheels or sdists of your own, you can do so using\nmaturin (note the manual prepare_build.py invocation, see hints):\n\n```console\nuser@host:~$ pip install \"maturin>=0.14,<0.15\"\n...\nuser@host:~$ ./prepare_build.py populate\nuser@host:~$ maturin build\n...\n\ud83d\udce6 Built wheel for CPython 3.x to /path/to/substrait-validator/target/wheels/substrait_validator-x.y.z-cp3xx-cp3xx-linux_x86_64.whl\nuser@host:~$ maturin sdist\n...\n\ud83d\udce6 Built source distribution to /path/to/substrait-validator/target/wheels/substrait_validator-x.y.z.tar.gz\n```\n\nSome hints if you run into issues:\n\n - This project relies on submodules, so you need to check those out first.\n - Out-of-tree builds are not supported, so you may need to beat pip into\n   submission if you're using an old version or it otherwise insists on\n   building from a temp directory.\n - If you get weird errors, try running `./prepare_build.py populate` manually\n   first. The protobuf generation logic has to be run very early in the build\n   process, and while this is done automatically for most build methods, not\n   all methods provide a hook for this.\n\n## Building wheels and source distributions\n\nYou can build wheels and source distributions using\n[maturin](https://github.com/PyO3/maturin), specifically using the `build` and\n`sdist` commands. However, before you can do this, you must run\n`./prepare_build.py populate`. This makes local copies of some files in the\nrepository that live outside of this subdirectory, such as the protobuf\ndescription files. When you use `pip` or some other tool based on\n`pyproject.toml`, this will be done automatically via build system hooks, but\nunfortunately maturin doesn't itself provide hooks with which this can be\nautomated.\n\n## Running tests\n\nYou can test the module using `pytest` after you install it.\n\n## Command-line usage\n\nThe module exposes a command-line program named `substrait-validator` for\nrunning the validator manually. You can also use the tool to convert between\nvarious serialization formats of the `substrait.Plan` message. Run\n`substrait-validator --help` for more information.\n\n## Library usage\n\nThe library essentially provides a bunch of type conversion functions at\nmodule scope to convert between the various representations of a Substrait\nplan, including the result of the validator. The most important functions are\narguably `check_plan_valid(plan, config=None)` and\n`check_plan_not_invalid(plan, config=None)`, which run validation on the given\nplan and throw a Python exception corresponding to the first diagnostic\nreturned by the validator of the highest severity encountered if the plan is\nnot strictly or loosely valid respectively. That is, `check_plan_valid` will\nthrow an exception if the plan could not be proven to be valid, while\n`check_plan_not_invalid` will only throw if it could be proven to be invalid.\n\nThe `plan` argument can be a number of things:\n\n - `bytes`: treated as a binary serialization of `substrait.Plan`.\n - `str`: treated as a protobuf JSON serialization of `substrait.Plan`.\n - `dict`: treated as the above using Python's data model (JSON objects map\n   to `dict`s, JSON arrays map to `list`s).\n - `substrait_validator.substrait.Plan`: a previously deserialized plan.\n - `substrait_validator.ResultHandle`: a previously validated plan.\n\n`config` can be `None`/unspecified, or can be set to a\n`substrait_validator.Config` object to configure the validator with.\n\nFor more information, use Python's `help()` function.\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Validator for Substrait query plans",
    "version": "0.1.3",
    "project_urls": {
        "homepage": "https://substrait.io/",
        "repository": "https://github.com/substrait-io/substrait-validator"
    },
    "split_keywords": [
        "substrait"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6dec2946f011e1df3daeba94c2403a9b448fa34bbe6121f0328c4531966a8023",
                "md5": "cf360a7c2c1d4b30b76310765fcf1d58",
                "sha256": "21edeed6f6b3f7071c557b99ef0b8604c07f759a75766abc7f40f6e264dd4579"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "cf360a7c2c1d4b30b76310765fcf1d58",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 5857569,
            "upload_time": "2025-01-10T10:21:33",
            "upload_time_iso_8601": "2025-01-10T10:21:33.378556Z",
            "url": "https://files.pythonhosted.org/packages/6d/ec/2946f011e1df3daeba94c2403a9b448fa34bbe6121f0328c4531966a8023/substrait_validator-0.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a78903867d63b8f00ae520df688227a3def030ce7ecc169ffc8f1671ed18aef7",
                "md5": "bc088d155e9a557705f9fa57eff9ce31",
                "sha256": "2a15383cdfcf1afdd4f60e3b330c84b79465da05df1e71fa22e20f60914d8814"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bc088d155e9a557705f9fa57eff9ce31",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 3341738,
            "upload_time": "2025-01-10T10:21:37",
            "upload_time_iso_8601": "2025-01-10T10:21:37.241275Z",
            "url": "https://files.pythonhosted.org/packages/a7/89/03867d63b8f00ae520df688227a3def030ce7ecc169ffc8f1671ed18aef7/substrait_validator-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "84d7e788a75bb8bb9cec9bf7e36331ea69cbcbe1ba125141d1df3e6524b9e2f5",
                "md5": "f1fde1069f61461b500e49a65b2fc568",
                "sha256": "dc8a6469333681c261107b2357863ca55378a7e5e73b6d0d8d6a2eba9d34affb"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f1fde1069f61461b500e49a65b2fc568",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 2821493,
            "upload_time": "2025-01-10T10:21:40",
            "upload_time_iso_8601": "2025-01-10T10:21:40.328355Z",
            "url": "https://files.pythonhosted.org/packages/84/d7/e788a75bb8bb9cec9bf7e36331ea69cbcbe1ba125141d1df3e6524b9e2f5/substrait_validator-0.1.3-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4b44a10beb519520649338fb838a0aab730adea524262f56eb7b0453369c5f0a",
                "md5": "ada5f5fdbd40a2704b1cfeca8cab8bc6",
                "sha256": "eaaea7ffa23adff6c3b538f738cc92617b9ef1e9f2d5f99e4d16a39ced57116c"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "ada5f5fdbd40a2704b1cfeca8cab8bc6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 5858821,
            "upload_time": "2025-01-10T10:21:43",
            "upload_time_iso_8601": "2025-01-10T10:21:43.291219Z",
            "url": "https://files.pythonhosted.org/packages/4b/44/a10beb519520649338fb838a0aab730adea524262f56eb7b0453369c5f0a/substrait_validator-0.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c92c72fefe30bcec63d5c6f17cec024428f1550f2bff9587a75f23bbd1e4a12c",
                "md5": "9e68de34324e155397cfb0c218892f92",
                "sha256": "006260ea8d302fd8071837e76380815c0ab9a7de256cbda72caef74ca3a25905"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9e68de34324e155397cfb0c218892f92",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 3340984,
            "upload_time": "2025-01-10T10:21:48",
            "upload_time_iso_8601": "2025-01-10T10:21:48.896112Z",
            "url": "https://files.pythonhosted.org/packages/c9/2c/72fefe30bcec63d5c6f17cec024428f1550f2bff9587a75f23bbd1e4a12c/substrait_validator-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d2d6458b2a769efb6ffc987d8979d2f7a88489696b02e2a735f7ff574f5e58ec",
                "md5": "f8305b87816192a58c37fadc94a2e6b6",
                "sha256": "cb40ecbfb2465809408dcbd8080ddc19a1896ec61e81fadf15e0e771a13fc6bd"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f8305b87816192a58c37fadc94a2e6b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 2820116,
            "upload_time": "2025-01-10T10:21:51",
            "upload_time_iso_8601": "2025-01-10T10:21:51.312537Z",
            "url": "https://files.pythonhosted.org/packages/d2/d6/458b2a769efb6ffc987d8979d2f7a88489696b02e2a735f7ff574f5e58ec/substrait_validator-0.1.3-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "31781f269ad7a6abdec8d490c7792d385a9d058b8490bb2bfaee2bff180b174d",
                "md5": "3d4cbba4deb8454bdb105fadf58a8853",
                "sha256": "96ea3bbdcb0a2b19accf941d6b0122d972d60b7588b2b30ce3b8d29c222848a6"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "3d4cbba4deb8454bdb105fadf58a8853",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 5858652,
            "upload_time": "2025-01-10T10:21:55",
            "upload_time_iso_8601": "2025-01-10T10:21:55.990407Z",
            "url": "https://files.pythonhosted.org/packages/31/78/1f269ad7a6abdec8d490c7792d385a9d058b8490bb2bfaee2bff180b174d/substrait_validator-0.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6c3d4f3f4e468fe7992005bb3fba368385063cb678ce874a4a4dc65ab1cdac01",
                "md5": "c2abedc7ed1c5b2a47953b274c3677e3",
                "sha256": "860cb9c6503b1e14f53d28b44e3cdd5544c6e5b0b325942f5e5472c416116a6e"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c2abedc7ed1c5b2a47953b274c3677e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 3338683,
            "upload_time": "2025-01-10T10:21:58",
            "upload_time_iso_8601": "2025-01-10T10:21:58.363001Z",
            "url": "https://files.pythonhosted.org/packages/6c/3d/4f3f4e468fe7992005bb3fba368385063cb678ce874a4a4dc65ab1cdac01/substrait_validator-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "28fe5cb3cecd29ebe825c00debf69e4d3620b2e1ef389b98abde0470ac42b067",
                "md5": "8124677b827589e2f0dc22d3f1236c58",
                "sha256": "71503ed4eeaa087ab6a02de6109ff4b57aa39c37e5aff2203ccbdfc3e841b4cc"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8124677b827589e2f0dc22d3f1236c58",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 2821298,
            "upload_time": "2025-01-10T10:22:00",
            "upload_time_iso_8601": "2025-01-10T10:22:00.367078Z",
            "url": "https://files.pythonhosted.org/packages/28/fe/5cb3cecd29ebe825c00debf69e4d3620b2e1ef389b98abde0470ac42b067/substrait_validator-0.1.3-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a02b308132942fe3eb41611026fb7315aad3a0af5d067087814e2c0216cb335",
                "md5": "e332a585f1ae59221f35b99c96b0eb8a",
                "sha256": "7b61720140086f14a31c9e7f2656c7800237d1d3aa6e2d6caba7dc64191bcdb6"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "e332a585f1ae59221f35b99c96b0eb8a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 5861186,
            "upload_time": "2025-01-10T10:22:02",
            "upload_time_iso_8601": "2025-01-10T10:22:02.576043Z",
            "url": "https://files.pythonhosted.org/packages/2a/02/b308132942fe3eb41611026fb7315aad3a0af5d067087814e2c0216cb335/substrait_validator-0.1.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "49cda1238049c0a69513964a51056dde99b998dd933b9446cbf562dfb196d010",
                "md5": "4d9f8b59b26c35f66e301ab161b2126d",
                "sha256": "ed74a73bb72d99ab39d4df5091a27e2b96cefb20b36b5d773116ed20f36e3165"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4d9f8b59b26c35f66e301ab161b2126d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3342907,
            "upload_time": "2025-01-10T10:22:06",
            "upload_time_iso_8601": "2025-01-10T10:22:06.120812Z",
            "url": "https://files.pythonhosted.org/packages/49/cd/a1238049c0a69513964a51056dde99b998dd933b9446cbf562dfb196d010/substrait_validator-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9c2e0b1d357730969fb255f48d1d8e37a54753bb57a6007a3e7f27ee7418fa90",
                "md5": "9a2a85c7544de96ba392560b8459bb05",
                "sha256": "6e76ad5b32d29a0eb03d35fc822a2bbbda43e46381dfb50b5b3e93fe6e63d3ec"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9a2a85c7544de96ba392560b8459bb05",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2821544,
            "upload_time": "2025-01-10T10:22:08",
            "upload_time_iso_8601": "2025-01-10T10:22:08.219856Z",
            "url": "https://files.pythonhosted.org/packages/9c/2e/0b1d357730969fb255f48d1d8e37a54753bb57a6007a3e7f27ee7418fa90/substrait_validator-0.1.3-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cc9ea1b812eb424eb94b54c63ac119f662bc9a1d959712a695eac24ce1e0b65d",
                "md5": "2cd8979168a1708e857cb32c81a7efed",
                "sha256": "dffd015f14c2a9f7529415811e66c3d859973570e490a58ac27e120fa60dd56f"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "2cd8979168a1708e857cb32c81a7efed",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 5858678,
            "upload_time": "2025-01-10T10:22:10",
            "upload_time_iso_8601": "2025-01-10T10:22:10.586432Z",
            "url": "https://files.pythonhosted.org/packages/cc/9e/a1b812eb424eb94b54c63ac119f662bc9a1d959712a695eac24ce1e0b65d/substrait_validator-0.1.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d06393287a54d024e617223033d00bc140d4c5fc0bbce98e0240ffd2d13344b1",
                "md5": "f2b2e3f860bbbfb306c513c39f04b62c",
                "sha256": "bfe0d7aa62089b0496fea42f18b82e80550e890568d3dc916fc5fd09f8337957"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f2b2e3f860bbbfb306c513c39f04b62c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 3341805,
            "upload_time": "2025-01-10T10:22:13",
            "upload_time_iso_8601": "2025-01-10T10:22:13.220828Z",
            "url": "https://files.pythonhosted.org/packages/d0/63/93287a54d024e617223033d00bc140d4c5fc0bbce98e0240ffd2d13344b1/substrait_validator-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d1c6f4b80e06177ab29443c935d0470bc373a2da72feaa9904e003bab41578bf",
                "md5": "c953f6a04c4a2beccac47262790551e2",
                "sha256": "ca621fb5dfc2b0e9ae93c0537470cc0f2a0d1f24a90cbf361026d41b93357b98"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c953f6a04c4a2beccac47262790551e2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 2821785,
            "upload_time": "2025-01-10T10:22:15",
            "upload_time_iso_8601": "2025-01-10T10:22:15.393669Z",
            "url": "https://files.pythonhosted.org/packages/d1/c6/f4b80e06177ab29443c935d0470bc373a2da72feaa9904e003bab41578bf/substrait_validator-0.1.3-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a9c5f3ea278cfe62f45ef0b9768d1e5eb68ea55127f01f877bf3b4ffd1651dfb",
                "md5": "bcf88affbd0653802b8ddd7c1c7cd4aa",
                "sha256": "04bc053bfa4e6add72ed12f8d4ddd6db8154556e3520d950574946bcfd946394"
            },
            "downloads": -1,
            "filename": "substrait_validator-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "bcf88affbd0653802b8ddd7c1c7cd4aa",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 462181,
            "upload_time": "2025-01-10T10:22:18",
            "upload_time_iso_8601": "2025-01-10T10:22:18.290697Z",
            "url": "https://files.pythonhosted.org/packages/a9/c5/f3ea278cfe62f45ef0b9768d1e5eb68ea55127f01f877bf3b4ffd1651dfb/substrait_validator-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-10 10:22:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "substrait-io",
    "github_project": "substrait-validator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "substrait-validator"
}
        
Elapsed time: 0.61267s