fast-query-parsers


Namefast-query-parsers JSON
Version 1.0.3 PyPI version JSON
download
home_page
SummaryUltra-fast query string and url-encoded form-data parsers
upload_time2023-08-25 13:19:15
maintainer
docs_urlNone
authorNa'aman Hirschfeld <nhirschfeld@gmail.com>
requires_python>=3.8
license
keywords query query string qs query parameters rust asgi starlite litestar parser
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!-- markdownlint-disable -->
<p align="center">
  <img src="https://github.com/litestar-org/branding/blob/473f54621e55cde9acbb6fcab7fc03036173eb3d/assets/Branding%20-%20SVG%20-%20Transparent/Logo%20-%20Banner%20-%20Inline%20-%20Light.svg#gh-light-mode-only" alt="Litestar Logo - Light" width="100%" height="auto" />
  <img src="https://github.com/litestar-org/branding/blob/473f54621e55cde9acbb6fcab7fc03036173eb3d/assets/Branding%20-%20SVG%20-%20Transparent/Logo%20-%20Banner%20-%20Inline%20-%20Dark.svg#gh-dark-mode-only" alt="Litestar Logo - Dark" width="100%" height="auto" />
</p>
<!-- markdownlint-restore -->

<div align="center">

<!-- prettier-ignore-start -->

| Project   |     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|-----------|:----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| CI/CD     |     | [![Publish](https://github.com/litestar-org/fast-query-parsers/actions/workflows/publish.yaml/badge.svg)](https://github.com/litestar-org/fast-query-parsers/actions/workflows/publish.yaml) [![CI](https://github.com/litestar-org/fast-query-parsers/actions/workflows/ci.yaml/badge.svg)](https://github.com/litestar-org/fast-query-parsers/actions/workflows/ci.yaml)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Package   |     | [![PyPI - Version](https://img.shields.io/pypi/v/fast-query-parsers?labelColor=202235&color=edb641&logo=python&logoColor=edb641)](https://badge.fury.io/py/litestar) ![PyPI - Support Python Versions](https://img.shields.io/pypi/pyversions/fast-query-parsers?labelColor=202235&color=edb641&logo=python&logoColor=edb641) ![PyPI - Downloads](https://img.shields.io/pypi/dm/fast-query-parsers?logo=python&label=fast-query-parsers%20downloads&labelColor=202235&color=edb641&logoColor=edb641)                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Community |     | [![Reddit](https://img.shields.io/reddit/subreddit-subscribers/litestarapi?label=r%2FLitestar&logo=reddit&labelColor=202235&color=edb641&logoColor=edb641)](https://reddit.com/r/litestarapi) [![Discord](https://img.shields.io/discord/919193495116337154?labelColor=202235&color=edb641&label=chat%20on%20discord&logo=discord&logoColor=edb641)](https://discord.gg/X3FJqy8d2j) [![Matrix](https://img.shields.io/badge/chat%20on%20Matrix-bridged-202235?labelColor=202235&color=edb641&logo=matrix&logoColor=edb641)](https://matrix.to/#/#litestar:matrix.org) [![Medium](https://img.shields.io/badge/Medium-202235?labelColor=202235&color=edb641&logo=medium&logoColor=edb641)](https://blog.litestar.dev) [![Twitter](https://img.shields.io/twitter/follow/LitestarAPI?labelColor=202235&color=edb641&logo=twitter&logoColor=edb641&style=flat)](https://twitter.com/LitestarAPI) [![Blog](https://img.shields.io/badge/Blog-litestar.dev-202235?logo=blogger&labelColor=202235&color=edb641&logoColor=edb641)](https://blog.litestar.dev) |
| Meta      |     | [![Litestar Project](https://img.shields.io/badge/Litestar%20Org-%E2%AD%90%20Fast%20Query%20Parsers-202235.svg?logo=python&labelColor=202235&color=edb641&logoColor=edb641)](https://github.com/litestar-org/fast-query-parsers) [![License - MIT](https://img.shields.io/badge/license-MIT-202235.svg?logo=python&labelColor=202235&color=edb641&logoColor=edb641)](https://spdx.org/licenses/) [![Litestar Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-%23edb641.svg?&logo=github&logoColor=edb641&labelColor=202235)](https://github.com/sponsors/litestar-org) [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json&labelColor=202235)](https://github.com/astral-sh/ruff) [![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg?logo=python&labelColor=202235&logoColor=edb641)](https://github.com/psf/black)                                                                                                         |

<!-- prettier-ignore-end -->
</div>

# Fast Query Parsers

This library includes ultra-fast Rust based query string and urlencoded parsers. These parsers are used
by [`Litestar`](https://github.com/litestar-org/litestar), but are developed separately - and can of course be used separately.

> [!IMPORTANT]\
> [**_Starlite has been renamed to Litestar_**](https://litestar.dev/about/organization.html#litestar-and-starlite)

</div>

## Installation

```shell
pip install fast-query-parsers
```

## Usage

The library exposes two function `parse_query_string` and `parse_url_encoded_dict`.

### `parse_query_string`

This function is used to parse a query string into a list of key/value tuples.

```python
from fast_query_parsers import parse_query_string

result = parse_query_string(b"value=1&value=2&type=dollar&country=US", "&")
# [("value", "1"), ("value", "2"), ("type", "dollar"), ("country", "US")]
```

The first argument to this function is a byte string that includes the query string to be parsed, the second argument is
the separator used.

#### Benchmarks

Query string parsing is more than x5 times faster than the standard library:

```text
stdlib parse_qsl parsing query string: Mean +- std dev: 2.86 us +- 0.03 us
.....................
parse_query_string parsing query string: Mean +- std dev: 916 ns +- 13 ns
.....................
stdlib parse_qsl parsing urlencoded query string: Mean +- std dev: 8.30 us +- 0.10 us
.....................
parse_query_string urlencoded query string: Mean +- std dev: 1.50 us +- 0.03 us
```

### `parse_url_encoded_dict`

This function is used to parse a url-encoded form data dictionary and parse it into the python equivalent of JSON types.

```python
from urllib.parse import urlencode

from fast_query_parsers import parse_url_encoded_dict

encoded = urlencode(
    [
        ("value", "10"),
        ("value", "12"),
        ("veggies", '["tomato", "potato", "aubergine"]'),
        ("nested", '{"some_key": "some_value"}'),
        ("calories", "122.53"),
        ("healthy", "true"),
        ("polluting", "false"),
        ("json", "null"),
    ]
).encode()

result = parse_url_encoded_dict(encoded, parse_numbers=True)

# result == {
#     "value": [10, 12],
#     "veggies": ["tomato", "potato", "aubergine"],
#     "nested": {"some_key": "some_value"},
#     "calories": 122.53,
#     "healthy": True,
#     "polluting": False,
#     "json": None,
# }
```

This function handles type conversions correctly - unlike the standard library function `parse_qs`. Additionally, it
does not nest all values inside lists.

Note: the second argument passed to `parse_url_encoded_dict` dictates whether numbers should be parsed. If `True`,
the value will be parsed into an int or float as appropriate, otherwise it will be kept as a string.
By default the value of this arg is `True`.

#### Benchmarks

Url Encoded parsing is more than x2 times faster than the standard library, without accounting for parsing of values:

```text
stdlib parse_qs parsing url-encoded values into dict: Mean +- std dev: 8.99 us +- 0.09 us
.....................
parse_url_encoded_dict parse url-encoded values into dict: Mean +- std dev: 3.77 us +- 0.08 us
```

To actually mimic the parsing done by `parse_url_encoded_dict` we will need a utility along these lines:

```python
from collections import defaultdict
from contextlib import suppress
from json import loads, JSONDecodeError
from typing import Any, DefaultDict, Dict, List
from urllib.parse import parse_qsl


def parse_url_encoded_form_data(encoded_data: bytes) -> Dict[str, Any]:
    """Parse an url encoded form data into dict of parsed values"""
    decoded_dict: DefaultDict[str, List[Any]] = defaultdict(list)
    for k, v in parse_qsl(encoded_data.decode(), keep_blank_values=True):
        with suppress(JSONDecodeError):
            v = loads(v) if isinstance(v, str) else v
        decoded_dict[k].append(v)
    return {k: v if len(v) > 1 else v[0] for k, v in decoded_dict.items()}
```

With the above, the benchmarks looks like so:

```text
python parse_url_encoded_form_data parsing url-encoded values into dict: Mean +- std dev: 19.7 us +- 0.1 us
.....................
parse_url_encoded_dict parsing url-encoded values into dict: Mean +- std dev: 3.69 us +- 0.03 us
```

## Contributing

All contributions are of course welcome!

### Repository Setup

1. Run `cargo install` to setup the rust dependencies and `poetry install` to setup the python dependencies.
2. Install the pre-commit hooks with `pre-commit install` (requires [pre-commit](https://pre-commit.com/)).

### Building

Run `poetry run maturin develop --release --strip` to install a release wheel (without debugging info). This wheel can be
used in tests and benchmarks.

### Benchmarking

There are basic benchmarks using pyperf in place. To run these execute `poetry run python benchrmarks.py`.


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "fast-query-parsers",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "query,query string,qs,query parameters,rust,asgi,starlite,litestar,parser",
    "author": "Na'aman Hirschfeld <nhirschfeld@gmail.com>",
    "author_email": "Na'aman Hirschfeld <nhirschfeld@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/dd/20/3a00b889a196e8dc5bede2f168d4a14edc8b5bccc3978a9f497f0f863e79/fast_query_parsers-1.0.3.tar.gz",
    "platform": null,
    "description": "<!-- markdownlint-disable -->\n<p align=\"center\">\n  <img src=\"https://github.com/litestar-org/branding/blob/473f54621e55cde9acbb6fcab7fc03036173eb3d/assets/Branding%20-%20SVG%20-%20Transparent/Logo%20-%20Banner%20-%20Inline%20-%20Light.svg#gh-light-mode-only\" alt=\"Litestar Logo - Light\" width=\"100%\" height=\"auto\" />\n  <img src=\"https://github.com/litestar-org/branding/blob/473f54621e55cde9acbb6fcab7fc03036173eb3d/assets/Branding%20-%20SVG%20-%20Transparent/Logo%20-%20Banner%20-%20Inline%20-%20Dark.svg#gh-dark-mode-only\" alt=\"Litestar Logo - Dark\" width=\"100%\" height=\"auto\" />\n</p>\n<!-- markdownlint-restore -->\n\n<div align=\"center\">\n\n<!-- prettier-ignore-start -->\n\n| Project   |     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n|-----------|:----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| CI/CD     |     | [![Publish](https://github.com/litestar-org/fast-query-parsers/actions/workflows/publish.yaml/badge.svg)](https://github.com/litestar-org/fast-query-parsers/actions/workflows/publish.yaml) [![CI](https://github.com/litestar-org/fast-query-parsers/actions/workflows/ci.yaml/badge.svg)](https://github.com/litestar-org/fast-query-parsers/actions/workflows/ci.yaml)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| Package   |     | [![PyPI - Version](https://img.shields.io/pypi/v/fast-query-parsers?labelColor=202235&color=edb641&logo=python&logoColor=edb641)](https://badge.fury.io/py/litestar) ![PyPI - Support Python Versions](https://img.shields.io/pypi/pyversions/fast-query-parsers?labelColor=202235&color=edb641&logo=python&logoColor=edb641) ![PyPI - Downloads](https://img.shields.io/pypi/dm/fast-query-parsers?logo=python&label=fast-query-parsers%20downloads&labelColor=202235&color=edb641&logoColor=edb641)                                                                                                                                                                                                                                                                                                                                                                                                                   |\n| Community |     | [![Reddit](https://img.shields.io/reddit/subreddit-subscribers/litestarapi?label=r%2FLitestar&logo=reddit&labelColor=202235&color=edb641&logoColor=edb641)](https://reddit.com/r/litestarapi) [![Discord](https://img.shields.io/discord/919193495116337154?labelColor=202235&color=edb641&label=chat%20on%20discord&logo=discord&logoColor=edb641)](https://discord.gg/X3FJqy8d2j) [![Matrix](https://img.shields.io/badge/chat%20on%20Matrix-bridged-202235?labelColor=202235&color=edb641&logo=matrix&logoColor=edb641)](https://matrix.to/#/#litestar:matrix.org) [![Medium](https://img.shields.io/badge/Medium-202235?labelColor=202235&color=edb641&logo=medium&logoColor=edb641)](https://blog.litestar.dev) [![Twitter](https://img.shields.io/twitter/follow/LitestarAPI?labelColor=202235&color=edb641&logo=twitter&logoColor=edb641&style=flat)](https://twitter.com/LitestarAPI) [![Blog](https://img.shields.io/badge/Blog-litestar.dev-202235?logo=blogger&labelColor=202235&color=edb641&logoColor=edb641)](https://blog.litestar.dev) |\n| Meta      |     | [![Litestar Project](https://img.shields.io/badge/Litestar%20Org-%E2%AD%90%20Fast%20Query%20Parsers-202235.svg?logo=python&labelColor=202235&color=edb641&logoColor=edb641)](https://github.com/litestar-org/fast-query-parsers) [![License - MIT](https://img.shields.io/badge/license-MIT-202235.svg?logo=python&labelColor=202235&color=edb641&logoColor=edb641)](https://spdx.org/licenses/) [![Litestar Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-%23edb641.svg?&logo=github&logoColor=edb641&labelColor=202235)](https://github.com/sponsors/litestar-org) [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json&labelColor=202235)](https://github.com/astral-sh/ruff) [![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg?logo=python&labelColor=202235&logoColor=edb641)](https://github.com/psf/black)                                                                                                         |\n\n<!-- prettier-ignore-end -->\n</div>\n\n# Fast Query Parsers\n\nThis library includes ultra-fast Rust based query string and urlencoded parsers. These parsers are used\nby [`Litestar`](https://github.com/litestar-org/litestar), but are developed separately - and can of course be used separately.\n\n> [!IMPORTANT]\\\n> [**_Starlite has been renamed to Litestar_**](https://litestar.dev/about/organization.html#litestar-and-starlite)\n\n</div>\n\n## Installation\n\n```shell\npip install fast-query-parsers\n```\n\n## Usage\n\nThe library exposes two function `parse_query_string` and `parse_url_encoded_dict`.\n\n### `parse_query_string`\n\nThis function is used to parse a query string into a list of key/value tuples.\n\n```python\nfrom fast_query_parsers import parse_query_string\n\nresult = parse_query_string(b\"value=1&value=2&type=dollar&country=US\", \"&\")\n# [(\"value\", \"1\"), (\"value\", \"2\"), (\"type\", \"dollar\"), (\"country\", \"US\")]\n```\n\nThe first argument to this function is a byte string that includes the query string to be parsed, the second argument is\nthe separator used.\n\n#### Benchmarks\n\nQuery string parsing is more than x5 times faster than the standard library:\n\n```text\nstdlib parse_qsl parsing query string: Mean +- std dev: 2.86 us +- 0.03 us\n.....................\nparse_query_string parsing query string: Mean +- std dev: 916 ns +- 13 ns\n.....................\nstdlib parse_qsl parsing urlencoded query string: Mean +- std dev: 8.30 us +- 0.10 us\n.....................\nparse_query_string urlencoded query string: Mean +- std dev: 1.50 us +- 0.03 us\n```\n\n### `parse_url_encoded_dict`\n\nThis function is used to parse a url-encoded form data dictionary and parse it into the python equivalent of JSON types.\n\n```python\nfrom urllib.parse import urlencode\n\nfrom fast_query_parsers import parse_url_encoded_dict\n\nencoded = urlencode(\n    [\n        (\"value\", \"10\"),\n        (\"value\", \"12\"),\n        (\"veggies\", '[\"tomato\", \"potato\", \"aubergine\"]'),\n        (\"nested\", '{\"some_key\": \"some_value\"}'),\n        (\"calories\", \"122.53\"),\n        (\"healthy\", \"true\"),\n        (\"polluting\", \"false\"),\n        (\"json\", \"null\"),\n    ]\n).encode()\n\nresult = parse_url_encoded_dict(encoded, parse_numbers=True)\n\n# result == {\n#     \"value\": [10, 12],\n#     \"veggies\": [\"tomato\", \"potato\", \"aubergine\"],\n#     \"nested\": {\"some_key\": \"some_value\"},\n#     \"calories\": 122.53,\n#     \"healthy\": True,\n#     \"polluting\": False,\n#     \"json\": None,\n# }\n```\n\nThis function handles type conversions correctly - unlike the standard library function `parse_qs`. Additionally, it\ndoes not nest all values inside lists.\n\nNote: the second argument passed to `parse_url_encoded_dict` dictates whether numbers should be parsed. If `True`,\nthe value will be parsed into an int or float as appropriate, otherwise it will be kept as a string.\nBy default the value of this arg is `True`.\n\n#### Benchmarks\n\nUrl Encoded parsing is more than x2 times faster than the standard library, without accounting for parsing of values:\n\n```text\nstdlib parse_qs parsing url-encoded values into dict: Mean +- std dev: 8.99 us +- 0.09 us\n.....................\nparse_url_encoded_dict parse url-encoded values into dict: Mean +- std dev: 3.77 us +- 0.08 us\n```\n\nTo actually mimic the parsing done by `parse_url_encoded_dict` we will need a utility along these lines:\n\n```python\nfrom collections import defaultdict\nfrom contextlib import suppress\nfrom json import loads, JSONDecodeError\nfrom typing import Any, DefaultDict, Dict, List\nfrom urllib.parse import parse_qsl\n\n\ndef parse_url_encoded_form_data(encoded_data: bytes) -> Dict[str, Any]:\n    \"\"\"Parse an url encoded form data into dict of parsed values\"\"\"\n    decoded_dict: DefaultDict[str, List[Any]] = defaultdict(list)\n    for k, v in parse_qsl(encoded_data.decode(), keep_blank_values=True):\n        with suppress(JSONDecodeError):\n            v = loads(v) if isinstance(v, str) else v\n        decoded_dict[k].append(v)\n    return {k: v if len(v) > 1 else v[0] for k, v in decoded_dict.items()}\n```\n\nWith the above, the benchmarks looks like so:\n\n```text\npython parse_url_encoded_form_data parsing url-encoded values into dict: Mean +- std dev: 19.7 us +- 0.1 us\n.....................\nparse_url_encoded_dict parsing url-encoded values into dict: Mean +- std dev: 3.69 us +- 0.03 us\n```\n\n## Contributing\n\nAll contributions are of course welcome!\n\n### Repository Setup\n\n1. Run `cargo install` to setup the rust dependencies and `poetry install` to setup the python dependencies.\n2. Install the pre-commit hooks with `pre-commit install` (requires [pre-commit](https://pre-commit.com/)).\n\n### Building\n\nRun `poetry run maturin develop --release --strip` to install a release wheel (without debugging info). This wheel can be\nused in tests and benchmarks.\n\n### Benchmarking\n\nThere are basic benchmarks using pyperf in place. To run these execute `poetry run python benchrmarks.py`.\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Ultra-fast query string and url-encoded form-data parsers",
    "version": "1.0.3",
    "project_urls": {
        "Source Code": "https://github.com/starlite-api/fast-query-parsers"
    },
    "split_keywords": [
        "query",
        "query string",
        "qs",
        "query parameters",
        "rust",
        "asgi",
        "starlite",
        "litestar",
        "parser"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "43184179ac7064b4216ca42f2ed6f74e71254454acf2ec25ce6bb3ffbfda4aa6",
                "md5": "6dd4cdb26328738f7750800d44ad0a27",
                "sha256": "afbf71c1b4398dacfb9d84755eb026f8e759f68a066f1f3cc19e471fc342e74f"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6dd4cdb26328738f7750800d44ad0a27",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 766210,
            "upload_time": "2023-08-25T13:18:48",
            "upload_time_iso_8601": "2023-08-25T13:18:48.415671Z",
            "url": "https://files.pythonhosted.org/packages/43/18/4179ac7064b4216ca42f2ed6f74e71254454acf2ec25ce6bb3ffbfda4aa6/fast_query_parsers-1.0.3-cp38-abi3-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c521c8c160f61a740efc4577079eb5747a6b2cb8d1168a84a0bfda6044113768",
                "md5": "0c46642d34535b6fc2f58b96304b724a",
                "sha256": "42f26875311d1b151c3406adfa39ec2db98df111a369d75f6fa243ec8462f147"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "0c46642d34535b6fc2f58b96304b724a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1466147,
            "upload_time": "2023-08-25T13:18:50",
            "upload_time_iso_8601": "2023-08-25T13:18:50.290393Z",
            "url": "https://files.pythonhosted.org/packages/c5/21/c8c160f61a740efc4577079eb5747a6b2cb8d1168a84a0bfda6044113768/fast_query_parsers-1.0.3-cp38-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "515bb10719598dbd14201271efd0b950c6a09efa0a3f6246fec3c192c6b7a8d2",
                "md5": "129d2abc2f938c802290204b94e7373f",
                "sha256": "66630ad423b5b1f5709f82a4d8482cd6aa2f3fa73d2c779ff1877f25dee08d55"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "129d2abc2f938c802290204b94e7373f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 764016,
            "upload_time": "2023-08-25T13:18:52",
            "upload_time_iso_8601": "2023-08-25T13:18:52.295795Z",
            "url": "https://files.pythonhosted.org/packages/51/5b/b10719598dbd14201271efd0b950c6a09efa0a3f6246fec3c192c6b7a8d2/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75068861197982909bec00b180527df1e0e9791715271bfb84c8be389b6bf077",
                "md5": "48b551b0d4bde10f28fd687662e1acbd",
                "sha256": "a6e3d816c572a6fad1ae9b93713b2db0d3db6e8f594e035ad52361d668dd94a8"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "48b551b0d4bde10f28fd687662e1acbd",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 729912,
            "upload_time": "2023-08-25T13:18:54",
            "upload_time_iso_8601": "2023-08-25T13:18:54.515896Z",
            "url": "https://files.pythonhosted.org/packages/75/06/8861197982909bec00b180527df1e0e9791715271bfb84c8be389b6bf077/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "419b5a42ddd23b85357be6764e14daa607d9b16bc6a395aae2c1cc2077e0a11d",
                "md5": "36ae3c2e97932caf0bd78412c1e14c69",
                "sha256": "6720505f2d2a764c76bcc4f3730a9dff69d9871740e46264f6605d73f9ce3794"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "36ae3c2e97932caf0bd78412c1e14c69",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 969496,
            "upload_time": "2023-08-25T13:18:59",
            "upload_time_iso_8601": "2023-08-25T13:18:59.048081Z",
            "url": "https://files.pythonhosted.org/packages/41/9b/5a42ddd23b85357be6764e14daa607d9b16bc6a395aae2c1cc2077e0a11d/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f0357a9a0c50588033edd9efba48f21e251dfcf77eaec2aff470988f622fbd3a",
                "md5": "59e1727961d4b93bd5185b2b0a868ca5",
                "sha256": "0bdcc0ddb4cc69d823c2c0dedd8f5affc71042db39908ad2ca06261bf388cac6"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",
            "has_sig": false,
            "md5_digest": "59e1727961d4b93bd5185b2b0a868ca5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1003340,
            "upload_time": "2023-08-25T13:18:56",
            "upload_time_iso_8601": "2023-08-25T13:18:56.521283Z",
            "url": "https://files.pythonhosted.org/packages/f0/35/7a9a0c50588033edd9efba48f21e251dfcf77eaec2aff470988f622fbd3a/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c39f4dfa29d74276fa07c40689bfaa3b21d057249314aeb20150f0f41373d16d",
                "md5": "cbef8c37368a7f9e21269112311cb956",
                "sha256": "e947e7251769593da93832a10861f59565a46149fa117ebdf25377e7b2853936"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "cbef8c37368a7f9e21269112311cb956",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 939972,
            "upload_time": "2023-08-25T13:19:00",
            "upload_time_iso_8601": "2023-08-25T13:19:00.704288Z",
            "url": "https://files.pythonhosted.org/packages/c3/9f/4dfa29d74276fa07c40689bfaa3b21d057249314aeb20150f0f41373d16d/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7434950b6d799839c11e93566aef426b67f0a446c4906e45e592026fde894459",
                "md5": "bd10eb28ba9f7f66c8a36da75e776f70",
                "sha256": "55a30b7cee0a53cddf9016b86fdad87221980d5a02a6126c491bd309755e6de9"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bd10eb28ba9f7f66c8a36da75e776f70",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 828557,
            "upload_time": "2023-08-25T13:19:02",
            "upload_time_iso_8601": "2023-08-25T13:19:02.264050Z",
            "url": "https://files.pythonhosted.org/packages/74/34/950b6d799839c11e93566aef426b67f0a446c4906e45e592026fde894459/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "81a8ee95263abc9806c81d77be8a3420d1f4dde467a10030dde8b0fa0e63f700",
                "md5": "1cc98d830ea1d9c1daa3ca6dce9ebcf8",
                "sha256": "9bc2b457caa38371df1a30cfdfc57bd9bfdf348367abdaf6f36533416a0b0e93"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "1cc98d830ea1d9c1daa3ca6dce9ebcf8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 863119,
            "upload_time": "2023-08-25T13:19:03",
            "upload_time_iso_8601": "2023-08-25T13:19:03.941793Z",
            "url": "https://files.pythonhosted.org/packages/81/a8/ee95263abc9806c81d77be8a3420d1f4dde467a10030dde8b0fa0e63f700/fast_query_parsers-1.0.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "05d45eb8c9d400230b9a45a0ce47a443e9fe37b0902729f9440adef677af1f0d",
                "md5": "a94b6e4b5fa5f5427007ad635f1ba1b2",
                "sha256": "5736d3c32d6ba23995fa569fe572feabcfcfc30ac9e4709e94cff6f2c456a3d1"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a94b6e4b5fa5f5427007ad635f1ba1b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 911046,
            "upload_time": "2023-08-25T13:19:05",
            "upload_time_iso_8601": "2023-08-25T13:19:05.596855Z",
            "url": "https://files.pythonhosted.org/packages/05/d4/5eb8c9d400230b9a45a0ce47a443e9fe37b0902729f9440adef677af1f0d/fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8b8bf5e44588f6ebd81d0c53ba49c79999dc54cb0fe81ad6dde6fed2cd45b56",
                "md5": "9167cd76ad14c82075aa1082985ce8b4",
                "sha256": "3a6377eb0c5b172fbc77c3f96deaf1e51708b4b96d27ce173658bf11c1c00b20"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "9167cd76ad14c82075aa1082985ce8b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 962966,
            "upload_time": "2023-08-25T13:19:07",
            "upload_time_iso_8601": "2023-08-25T13:19:07.355555Z",
            "url": "https://files.pythonhosted.org/packages/f8/b8/bf5e44588f6ebd81d0c53ba49c79999dc54cb0fe81ad6dde6fed2cd45b56/fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6fa9132572b9f40c2635fdedb7a1cb6cedd9c880f8ffbbfdd6215ee493bb6936",
                "md5": "e883b622e3fc6e5e3944560ed4cb300f",
                "sha256": "7ca6be04f443a1b055e910ccad01b1d72212f269a530415df99a87c5f1e9c927"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "e883b622e3fc6e5e3944560ed4cb300f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 965422,
            "upload_time": "2023-08-25T13:19:09",
            "upload_time_iso_8601": "2023-08-25T13:19:09.003490Z",
            "url": "https://files.pythonhosted.org/packages/6f/a9/132572b9f40c2635fdedb7a1cb6cedd9c880f8ffbbfdd6215ee493bb6936/fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ea58942327d3f2694b8f1a2fffaaaef1cc3147571852473a80070ebd6156a62e",
                "md5": "0482edf0735f6243a843e073aa358429",
                "sha256": "a70d4d8852606f2dd5b798ab628b9d8dc6970ddfdd9e96f4543eb0cc89a74fb5"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0482edf0735f6243a843e073aa358429",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 967734,
            "upload_time": "2023-08-25T13:19:10",
            "upload_time_iso_8601": "2023-08-25T13:19:10.654445Z",
            "url": "https://files.pythonhosted.org/packages/ea/58/942327d3f2694b8f1a2fffaaaef1cc3147571852473a80070ebd6156a62e/fast_query_parsers-1.0.3-cp38-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ae321bc18edc003b54a2069eb854b9f92cacb5acc99e03c609487a23a673755",
                "md5": "51fc7f0fc5553da35d1f34140573adfa",
                "sha256": "14b3fab7e9a6ac1c1efaf66c3fd2a3fd1e25ede03ed14118035e530433830a11"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "51fc7f0fc5553da35d1f34140573adfa",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 646366,
            "upload_time": "2023-08-25T13:19:12",
            "upload_time_iso_8601": "2023-08-25T13:19:12.079951Z",
            "url": "https://files.pythonhosted.org/packages/0a/e3/21bc18edc003b54a2069eb854b9f92cacb5acc99e03c609487a23a673755/fast_query_parsers-1.0.3-cp38-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae4b07fe4d7b5c458bdde9b0bfd8e8cb5762341af6c9727b43c2331c0cb0dbc3",
                "md5": "4227a62ca39b2f24853031aba9cd8f8c",
                "sha256": "21ae5f3a209aee7d3b84bdcdb33dd79f39fc8cb608b3ae8cfcb78123758c1a16"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3-cp38-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4227a62ca39b2f24853031aba9cd8f8c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 689717,
            "upload_time": "2023-08-25T13:19:14",
            "upload_time_iso_8601": "2023-08-25T13:19:14.051471Z",
            "url": "https://files.pythonhosted.org/packages/ae/4b/07fe4d7b5c458bdde9b0bfd8e8cb5762341af6c9727b43c2331c0cb0dbc3/fast_query_parsers-1.0.3-cp38-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dd203a00b889a196e8dc5bede2f168d4a14edc8b5bccc3978a9f497f0f863e79",
                "md5": "07433cb8c524c3248082d6ca58056bb0",
                "sha256": "5200a9e02997ad51d4d76a60ea1b256a68a184b04359540eb6310a15013df68f"
            },
            "downloads": -1,
            "filename": "fast_query_parsers-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "07433cb8c524c3248082d6ca58056bb0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 25275,
            "upload_time": "2023-08-25T13:19:15",
            "upload_time_iso_8601": "2023-08-25T13:19:15.790336Z",
            "url": "https://files.pythonhosted.org/packages/dd/20/3a00b889a196e8dc5bede2f168d4a14edc8b5bccc3978a9f497f0f863e79/fast_query_parsers-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-25 13:19:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "starlite-api",
    "github_project": "fast-query-parsers",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "fast-query-parsers"
}
        
Elapsed time: 0.11094s