httptools


Namehttptools JSON
Version 0.7.1 PyPI version JSON
download
home_pageNone
SummaryA collection of framework independent HTTP protocol utils.
upload_time2025-10-10 03:55:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Tests](https://github.com/MagicStack/httptools/workflows/Tests/badge.svg)

httptools is a Python binding for the nodejs HTTP parser.

The package is available on PyPI: `pip install httptools`.


# APIs

httptools contains two classes `httptools.HttpRequestParser`,
`httptools.HttpResponseParser` (fulfilled through
[llhttp](https://github.com/nodejs/llhttp)) and a function for
parsing URLs `httptools.parse_url` (through
[http-parse](https://github.com/nodejs/http-parser) for now).
See unittests for examples.


```python

class HttpRequestParser:

    def __init__(self, protocol):
        """HttpRequestParser

        protocol -- a Python object with the following methods
        (all optional):

          - on_message_begin()
          - on_url(url: bytes)
          - on_header(name: bytes, value: bytes)
          - on_headers_complete()
          - on_body(body: bytes)
          - on_message_complete()
          - on_chunk_header()
          - on_chunk_complete()
          - on_status(status: bytes)
        """

    def get_http_version(self) -> str:
        """Return an HTTP protocol version."""

    def should_keep_alive(self) -> bool:
        """Return ``True`` if keep-alive mode is preferred."""

    def should_upgrade(self) -> bool:
        """Return ``True`` if the parsed request is a valid Upgrade request.
	The method exposes a flag set just before on_headers_complete.
	Calling this method earlier will only yield `False`.
	"""

    def feed_data(self, data: bytes):
        """Feed data to the parser.

        Will eventually trigger callbacks on the ``protocol``
        object.

        On HTTP upgrade, this method will raise an
        ``HttpParserUpgrade`` exception, with its sole argument
        set to the offset of the non-HTTP data in ``data``.
        """

    def get_method(self) -> bytes:
        """Return HTTP request method (GET, HEAD, etc)"""


class HttpResponseParser:

    """Has all methods except ``get_method()`` that
    HttpRequestParser has."""

    def get_status_code(self) -> int:
        """Return the status code of the HTTP response"""


def parse_url(url: bytes):
    """Parse URL strings into a structured Python object.

    Returns an instance of ``httptools.URL`` class with the
    following attributes:

      - schema: bytes
      - host: bytes
      - port: int
      - path: bytes
      - query: bytes
      - fragment: bytes
      - userinfo: bytes
    """
```


# Development

1. Clone this repository with
   `git clone --recursive git@github.com:MagicStack/httptools.git`

2. Create a virtual environment with Python 3:
   `python3 -m venv envname`

3. Activate the environment with `source envname/bin/activate`

4. Run `make` and `make test`.


# License

MIT.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "httptools",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Yury Selivanov <yury@magic.io>",
    "download_url": "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz",
    "platform": "macOS",
    "description": "![Tests](https://github.com/MagicStack/httptools/workflows/Tests/badge.svg)\n\nhttptools is a Python binding for the nodejs HTTP parser.\n\nThe package is available on PyPI: `pip install httptools`.\n\n\n# APIs\n\nhttptools contains two classes `httptools.HttpRequestParser`,\n`httptools.HttpResponseParser` (fulfilled through\n[llhttp](https://github.com/nodejs/llhttp)) and a function for\nparsing URLs `httptools.parse_url` (through\n[http-parse](https://github.com/nodejs/http-parser) for now).\nSee unittests for examples.\n\n\n```python\n\nclass HttpRequestParser:\n\n    def __init__(self, protocol):\n        \"\"\"HttpRequestParser\n\n        protocol -- a Python object with the following methods\n        (all optional):\n\n          - on_message_begin()\n          - on_url(url: bytes)\n          - on_header(name: bytes, value: bytes)\n          - on_headers_complete()\n          - on_body(body: bytes)\n          - on_message_complete()\n          - on_chunk_header()\n          - on_chunk_complete()\n          - on_status(status: bytes)\n        \"\"\"\n\n    def get_http_version(self) -> str:\n        \"\"\"Return an HTTP protocol version.\"\"\"\n\n    def should_keep_alive(self) -> bool:\n        \"\"\"Return ``True`` if keep-alive mode is preferred.\"\"\"\n\n    def should_upgrade(self) -> bool:\n        \"\"\"Return ``True`` if the parsed request is a valid Upgrade request.\n\tThe method exposes a flag set just before on_headers_complete.\n\tCalling this method earlier will only yield `False`.\n\t\"\"\"\n\n    def feed_data(self, data: bytes):\n        \"\"\"Feed data to the parser.\n\n        Will eventually trigger callbacks on the ``protocol``\n        object.\n\n        On HTTP upgrade, this method will raise an\n        ``HttpParserUpgrade`` exception, with its sole argument\n        set to the offset of the non-HTTP data in ``data``.\n        \"\"\"\n\n    def get_method(self) -> bytes:\n        \"\"\"Return HTTP request method (GET, HEAD, etc)\"\"\"\n\n\nclass HttpResponseParser:\n\n    \"\"\"Has all methods except ``get_method()`` that\n    HttpRequestParser has.\"\"\"\n\n    def get_status_code(self) -> int:\n        \"\"\"Return the status code of the HTTP response\"\"\"\n\n\ndef parse_url(url: bytes):\n    \"\"\"Parse URL strings into a structured Python object.\n\n    Returns an instance of ``httptools.URL`` class with the\n    following attributes:\n\n      - schema: bytes\n      - host: bytes\n      - port: int\n      - path: bytes\n      - query: bytes\n      - fragment: bytes\n      - userinfo: bytes\n    \"\"\"\n```\n\n\n# Development\n\n1. Clone this repository with\n   `git clone --recursive git@github.com:MagicStack/httptools.git`\n\n2. Create a virtual environment with Python 3:\n   `python3 -m venv envname`\n\n3. Activate the environment with `source envname/bin/activate`\n\n4. Run `make` and `make test`.\n\n\n# License\n\nMIT.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A collection of framework independent HTTP protocol utils.",
    "version": "0.7.1",
    "project_urls": {
        "Homepage": "https://github.com/MagicStack/httptools"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c7e5c07e0bcf4ec8db8164e9f6738c048b2e66aabf30e7506f440c4cc6953f60",
                "md5": "ee65c434377e71d87a530149f6200801",
                "sha256": "11d01b0ff1fe02c4c32d60af61a4d613b74fad069e47e06e9067758c01e9ac78"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "ee65c434377e71d87a530149f6200801",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 204531,
            "upload_time": "2025-10-10T03:54:20",
            "upload_time_iso_8601": "2025-10-10T03:54:20.887779Z",
            "url": "https://files.pythonhosted.org/packages/c7/e5/c07e0bcf4ec8db8164e9f6738c048b2e66aabf30e7506f440c4cc6953f60/httptools-0.7.1-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7e4f35e3a63f863a659f92ffd92bef131f3e81cf849af26e6435b49bd9f6f751",
                "md5": "c34598ae8fcd17fe64b6621b2f7f6d81",
                "sha256": "84d86c1e5afdc479a6fdabf570be0d3eb791df0ae727e8dbc0259ed1249998d4"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c34598ae8fcd17fe64b6621b2f7f6d81",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 109408,
            "upload_time": "2025-10-10T03:54:22",
            "upload_time_iso_8601": "2025-10-10T03:54:22.455486Z",
            "url": "https://files.pythonhosted.org/packages/7e/4f/35e3a63f863a659f92ffd92bef131f3e81cf849af26e6435b49bd9f6f751/httptools-0.7.1-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f571b0a9193641d9e2471ac541d3b1b869538a5fb6419d52fd2669fa9c79e4b8",
                "md5": "e8cbd713d1c43d76087c23e28c70ea5e",
                "sha256": "c8c751014e13d88d2be5f5f14fc8b89612fcfa92a9cc480f2bc1598357a23a05"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e8cbd713d1c43d76087c23e28c70ea5e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 440889,
            "upload_time": "2025-10-10T03:54:23",
            "upload_time_iso_8601": "2025-10-10T03:54:23.753705Z",
            "url": "https://files.pythonhosted.org/packages/f5/71/b0a9193641d9e2471ac541d3b1b869538a5fb6419d52fd2669fa9c79e4b8/httptools-0.7.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ebd92e34811397b76718750fea44658cb0205b84566e895192115252e008b152",
                "md5": "87ce096a950f469f9f7a64745356291c",
                "sha256": "654968cb6b6c77e37b832a9be3d3ecabb243bbe7a0b8f65fbc5b6b04c8fcabed"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "87ce096a950f469f9f7a64745356291c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 440460,
            "upload_time": "2025-10-10T03:54:25",
            "upload_time_iso_8601": "2025-10-10T03:54:25.313974Z",
            "url": "https://files.pythonhosted.org/packages/eb/d9/2e34811397b76718750fea44658cb0205b84566e895192115252e008b152/httptools-0.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "013fa04626ebeacc489866bb4d82362c0657b2262bef381d68310134be7f40bb",
                "md5": "bc8586172fc4ef787803dd5f298d70ec",
                "sha256": "b580968316348b474b020edf3988eecd5d6eec4634ee6561e72ae3a2a0e00a8a"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "bc8586172fc4ef787803dd5f298d70ec",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 425267,
            "upload_time": "2025-10-10T03:54:26",
            "upload_time_iso_8601": "2025-10-10T03:54:26.810261Z",
            "url": "https://files.pythonhosted.org/packages/01/3f/a04626ebeacc489866bb4d82362c0657b2262bef381d68310134be7f40bb/httptools-0.7.1-cp310-cp310-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a599adcd4f66614db627b587627c8ad6f4c55f18881549bab10ecf180562e7b9",
                "md5": "a5d01ab4b183c72236b0aec4db5f880c",
                "sha256": "d496e2f5245319da9d764296e86c5bb6fcf0cf7a8806d3d000717a889c8c0b7b"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a5d01ab4b183c72236b0aec4db5f880c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 424429,
            "upload_time": "2025-10-10T03:54:28",
            "upload_time_iso_8601": "2025-10-10T03:54:28.174341Z",
            "url": "https://files.pythonhosted.org/packages/a5/99/adcd4f66614db627b587627c8ad6f4c55f18881549bab10ecf180562e7b9/httptools-0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d572ec8fc904a8fd30ba022dfa85f3bbc64c3c7cd75b669e24242c0658e22f3c",
                "md5": "2f9ab015b2771b5824a0b1e6875457d5",
                "sha256": "cbf8317bfccf0fed3b5680c559d3459cccf1abe9039bfa159e62e391c7270568"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2f9ab015b2771b5824a0b1e6875457d5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 86173,
            "upload_time": "2025-10-10T03:54:29",
            "upload_time_iso_8601": "2025-10-10T03:54:29.500861Z",
            "url": "https://files.pythonhosted.org/packages/d5/72/ec8fc904a8fd30ba022dfa85f3bbc64c3c7cd75b669e24242c0658e22f3c/httptools-0.7.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9c0817e07e8d89ab8f343c134616d72eebfe03798835058e2ab579dcc8353c06",
                "md5": "3fd0dd1244fc93c59e87ea046be0d53a",
                "sha256": "474d3b7ab469fefcca3697a10d11a32ee2b9573250206ba1e50d5980910da657"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "3fd0dd1244fc93c59e87ea046be0d53a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 206521,
            "upload_time": "2025-10-10T03:54:31",
            "upload_time_iso_8601": "2025-10-10T03:54:31.002645Z",
            "url": "https://files.pythonhosted.org/packages/9c/08/17e07e8d89ab8f343c134616d72eebfe03798835058e2ab579dcc8353c06/httptools-0.7.1-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "aa06c9c1b41ff52f16aee526fd10fbda99fa4787938aa776858ddc4a1ea825ec",
                "md5": "1033a1bf1d4a122e5354ad7fa5d5a61e",
                "sha256": "a3c3b7366bb6c7b96bd72d0dbe7f7d5eead261361f013be5f6d9590465ea1c70"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1033a1bf1d4a122e5354ad7fa5d5a61e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 110375,
            "upload_time": "2025-10-10T03:54:31",
            "upload_time_iso_8601": "2025-10-10T03:54:31.941901Z",
            "url": "https://files.pythonhosted.org/packages/aa/06/c9c1b41ff52f16aee526fd10fbda99fa4787938aa776858ddc4a1ea825ec/httptools-0.7.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cccc10935db22fda0ee34c76f047590ca0a8bd9de531406a3ccb10a90e12ea21",
                "md5": "b8a9540e896d9d570bd474c84321ce9f",
                "sha256": "379b479408b8747f47f3b253326183d7c009a3936518cdb70db58cffd369d9df"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b8a9540e896d9d570bd474c84321ce9f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 456621,
            "upload_time": "2025-10-10T03:54:33",
            "upload_time_iso_8601": "2025-10-10T03:54:33.176329Z",
            "url": "https://files.pythonhosted.org/packages/cc/cc/10935db22fda0ee34c76f047590ca0a8bd9de531406a3ccb10a90e12ea21/httptools-0.7.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0e84875382b10d271b0c11aa5d414b44f92f8dd53e9b658aec338a79164fa548",
                "md5": "f782ee5fd31cefb92f054b0d056cdb39",
                "sha256": "cad6b591a682dcc6cf1397c3900527f9affef1e55a06c4547264796bbd17cf5e"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f782ee5fd31cefb92f054b0d056cdb39",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 454954,
            "upload_time": "2025-10-10T03:54:34",
            "upload_time_iso_8601": "2025-10-10T03:54:34.226012Z",
            "url": "https://files.pythonhosted.org/packages/0e/84/875382b10d271b0c11aa5d414b44f92f8dd53e9b658aec338a79164fa548/httptools-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30e144f89b280f7e46c0b1b2ccee5737d46b3bb13136383958f20b580a821ca0",
                "md5": "2ec02d2a40c2a249a2c3e270673d11a0",
                "sha256": "eb844698d11433d2139bbeeb56499102143beb582bd6c194e3ba69c22f25c274"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "2ec02d2a40c2a249a2c3e270673d11a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 440175,
            "upload_time": "2025-10-10T03:54:35",
            "upload_time_iso_8601": "2025-10-10T03:54:35.942612Z",
            "url": "https://files.pythonhosted.org/packages/30/e1/44f89b280f7e46c0b1b2ccee5737d46b3bb13136383958f20b580a821ca0/httptools-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6f7eb9287763159e700e335028bc1824359dc736fa9b829dacedace91a39b37e",
                "md5": "6a7ee7721a92c630eb9e6fad2599949e",
                "sha256": "f65744d7a8bdb4bda5e1fa23e4ba16832860606fcc09d674d56e425e991539ec"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6a7ee7721a92c630eb9e6fad2599949e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 440310,
            "upload_time": "2025-10-10T03:54:37",
            "upload_time_iso_8601": "2025-10-10T03:54:37.100766Z",
            "url": "https://files.pythonhosted.org/packages/6f/7e/b9287763159e700e335028bc1824359dc736fa9b829dacedace91a39b37e/httptools-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b3075b614f592868e07f5c94b1f301b5e14a21df4e8076215a3bccb830a687d8",
                "md5": "8338e4c864caee92ca9c3d62aa1e715a",
                "sha256": "135fbe974b3718eada677229312e97f3b31f8a9c8ffa3ae6f565bf808d5b6bcb"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8338e4c864caee92ca9c3d62aa1e715a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 86875,
            "upload_time": "2025-10-10T03:54:38",
            "upload_time_iso_8601": "2025-10-10T03:54:38.421583Z",
            "url": "https://files.pythonhosted.org/packages/b3/07/5b614f592868e07f5c94b1f301b5e14a21df4e8076215a3bccb830a687d8/httptools-0.7.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "537f403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed",
                "md5": "89257f87d4fd8cb8cf9c3a75e9b87530",
                "sha256": "38e0c83a2ea9746ebbd643bdfb521b9aa4a91703e2cd705c20443405d2fd16a5"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl",
            "has_sig": false,
            "md5_digest": "89257f87d4fd8cb8cf9c3a75e9b87530",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 206280,
            "upload_time": "2025-10-10T03:54:39",
            "upload_time_iso_8601": "2025-10-10T03:54:39.274921Z",
            "url": "https://files.pythonhosted.org/packages/53/7f/403e5d787dc4942316e515e949b0c8a013d84078a915910e9f391ba9b3ed/httptools-0.7.1-cp312-cp312-macosx_10_13_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a0d7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b",
                "md5": "92ff0daa3475e7211bbe1ae5744b7f9b",
                "sha256": "f25bbaf1235e27704f1a7b86cd3304eabc04f569c828101d94a0e605ef7205a5"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "92ff0daa3475e7211bbe1ae5744b7f9b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 110004,
            "upload_time": "2025-10-10T03:54:40",
            "upload_time_iso_8601": "2025-10-10T03:54:40.403598Z",
            "url": "https://files.pythonhosted.org/packages/2a/0d/7f3fd28e2ce311ccc998c388dd1c53b18120fda3b70ebb022b135dc9839b/httptools-0.7.1-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "84a6b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596",
                "md5": "477fb083491ed869807aa0c198868cd6",
                "sha256": "2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "477fb083491ed869807aa0c198868cd6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 517655,
            "upload_time": "2025-10-10T03:54:41",
            "upload_time_iso_8601": "2025-10-10T03:54:41.347933Z",
            "url": "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "117d71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0",
                "md5": "e6feeef19190cceb4b477771c3b9376c",
                "sha256": "7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "e6feeef19190cceb4b477771c3b9376c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 511440,
            "upload_time": "2025-10-10T03:54:42",
            "upload_time_iso_8601": "2025-10-10T03:54:42.452782Z",
            "url": "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "22a5079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823",
                "md5": "8d3397cab513b4c57dbc3ace29d807ee",
                "sha256": "f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8d3397cab513b4c57dbc3ace29d807ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 495186,
            "upload_time": "2025-10-10T03:54:43",
            "upload_time_iso_8601": "2025-10-10T03:54:43.937207Z",
            "url": "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e99e025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084",
                "md5": "8e773ccb12a51624b572e463b3105dd2",
                "sha256": "e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8e773ccb12a51624b572e463b3105dd2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 499192,
            "upload_time": "2025-10-10T03:54:45",
            "upload_time_iso_8601": "2025-10-10T03:54:45.003906Z",
            "url": "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6dde40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f",
                "md5": "b6da119d38cc90c4801c0fd3a351d8fe",
                "sha256": "3e14f530fefa7499334a79b0cf7e7cd2992870eb893526fb097d51b4f2d0f321"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b6da119d38cc90c4801c0fd3a351d8fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 86694,
            "upload_time": "2025-10-10T03:54:45",
            "upload_time_iso_8601": "2025-10-10T03:54:45.923566Z",
            "url": "https://files.pythonhosted.org/packages/6d/de/40a8f202b987d43afc4d54689600ff03ce65680ede2f31df348d7f368b8f/httptools-0.7.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "098fc77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90",
                "md5": "d91334ff47fad2b8ede943b548df9bfc",
                "sha256": "6babce6cfa2a99545c60bfef8bee0cc0545413cb0018f617c8059a30ad985de3"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl",
            "has_sig": false,
            "md5_digest": "d91334ff47fad2b8ede943b548df9bfc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 202889,
            "upload_time": "2025-10-10T03:54:47",
            "upload_time_iso_8601": "2025-10-10T03:54:47.089746Z",
            "url": "https://files.pythonhosted.org/packages/09/8f/c77b1fcbfd262d422f12da02feb0d218fa228d52485b77b953832105bb90/httptools-0.7.1-cp313-cp313-macosx_10_13_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0a1a22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517",
                "md5": "4b378bf971904f9321e72ae2c1d5bf14",
                "sha256": "601b7628de7504077dd3dcb3791c6b8694bbd967148a6d1f01806509254fb1ca"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4b378bf971904f9321e72ae2c1d5bf14",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 108180,
            "upload_time": "2025-10-10T03:54:48",
            "upload_time_iso_8601": "2025-10-10T03:54:48.052667Z",
            "url": "https://files.pythonhosted.org/packages/0a/1a/22887f53602feaa066354867bc49a68fc295c2293433177ee90870a7d517/httptools-0.7.1-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "326a6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011",
                "md5": "4276d64824ffcbeea31932f7ac7fd09c",
                "sha256": "04c6c0e6c5fb0739c5b8a9eb046d298650a0ff38cf42537fc372b28dc7e4472c"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4276d64824ffcbeea31932f7ac7fd09c",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 478596,
            "upload_time": "2025-10-10T03:54:48",
            "upload_time_iso_8601": "2025-10-10T03:54:48.919927Z",
            "url": "https://files.pythonhosted.org/packages/32/6a/6aaa91937f0010d288d3d124ca2946d48d60c3a5ee7ca62afe870e3ea011/httptools-0.7.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6d70023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6",
                "md5": "d26b26b97e59c79bc287fa79785b6732",
                "sha256": "69d4f9705c405ae3ee83d6a12283dc9feba8cc6aaec671b412917e644ab4fa66"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d26b26b97e59c79bc287fa79785b6732",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 473268,
            "upload_time": "2025-10-10T03:54:49",
            "upload_time_iso_8601": "2025-10-10T03:54:49.993824Z",
            "url": "https://files.pythonhosted.org/packages/6d/70/023d7ce117993107be88d2cbca566a7c1323ccbaf0af7eabf2064fe356f6/httptools-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "324d9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7",
                "md5": "18621764f14315e723e1d772b389b27b",
                "sha256": "44c8f4347d4b31269c8a9205d8a5ee2df5322b09bbbd30f8f862185bb6b05346"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "18621764f14315e723e1d772b389b27b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 455517,
            "upload_time": "2025-10-10T03:54:51",
            "upload_time_iso_8601": "2025-10-10T03:54:51.066973Z",
            "url": "https://files.pythonhosted.org/packages/32/4d/9dd616c38da088e3f436e9a616e1d0cc66544b8cdac405cc4e81c8679fc7/httptools-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d3aa6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be",
                "md5": "7a7d94187fe78bba6cefe2f99e165756",
                "sha256": "465275d76db4d554918aba40bf1cbebe324670f3dfc979eaffaa5d108e2ed650"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7a7d94187fe78bba6cefe2f99e165756",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 458337,
            "upload_time": "2025-10-10T03:54:52",
            "upload_time_iso_8601": "2025-10-10T03:54:52.196085Z",
            "url": "https://files.pythonhosted.org/packages/1d/3a/a6c595c310b7df958e739aae88724e24f9246a514d909547778d776799be/httptools-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd8288e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582",
                "md5": "a47989c55aae599512fff34d2919afec",
                "sha256": "322d00c2068d125bd570f7bf78b2d367dad02b919d8581d7476d8b75b294e3e6"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a47989c55aae599512fff34d2919afec",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 85743,
            "upload_time": "2025-10-10T03:54:53",
            "upload_time_iso_8601": "2025-10-10T03:54:53.448256Z",
            "url": "https://files.pythonhosted.org/packages/fd/82/88e8d6d2c51edc1cc391b6e044c6c435b6aebe97b1abc33db1b0b24cd582/httptools-0.7.1-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "34509d095fcbb6de2d523e027a2f304d4551855c2f46e0b82befd718b8b20056",
                "md5": "15aef5164d0a77b9a484ead0bff26b63",
                "sha256": "c08fe65728b8d70b6923ce31e3956f859d5e1e8548e6f22ec520a962c6757270"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-macosx_10_13_universal2.whl",
            "has_sig": false,
            "md5_digest": "15aef5164d0a77b9a484ead0bff26b63",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 203619,
            "upload_time": "2025-10-10T03:54:54",
            "upload_time_iso_8601": "2025-10-10T03:54:54.321290Z",
            "url": "https://files.pythonhosted.org/packages/34/50/9d095fcbb6de2d523e027a2f304d4551855c2f46e0b82befd718b8b20056/httptools-0.7.1-cp314-cp314-macosx_10_13_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "07f089720dc5139ae54b03f861b5e2c55a37dba9a5da7d51e1e824a1f343627f",
                "md5": "08db2ed8eb91168d88063a06244f13f1",
                "sha256": "7aea2e3c3953521c3c51106ee11487a910d45586e351202474d45472db7d72d3"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "08db2ed8eb91168d88063a06244f13f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 108714,
            "upload_time": "2025-10-10T03:54:55",
            "upload_time_iso_8601": "2025-10-10T03:54:55.163445Z",
            "url": "https://files.pythonhosted.org/packages/07/f0/89720dc5139ae54b03f861b5e2c55a37dba9a5da7d51e1e824a1f343627f/httptools-0.7.1-cp314-cp314-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b3cbeea88506f191fb552c11787c23f9a405f4c7b0c5799bf73f2249cd4f5228",
                "md5": "de7392ef13dc686a19a26ef92152c469",
                "sha256": "0e68b8582f4ea9166be62926077a3334064d422cf08ab87d8b74664f8e9058e1"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "de7392ef13dc686a19a26ef92152c469",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 472909,
            "upload_time": "2025-10-10T03:54:56",
            "upload_time_iso_8601": "2025-10-10T03:54:56.056202Z",
            "url": "https://files.pythonhosted.org/packages/b3/cb/eea88506f191fb552c11787c23f9a405f4c7b0c5799bf73f2249cd4f5228/httptools-0.7.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e04aa548bdfae6369c0d078bab5769f7b66f17f1bfaa6fa28f81d6be6959066b",
                "md5": "eebfa95500185b8155189d574196a801",
                "sha256": "df091cf961a3be783d6aebae963cc9b71e00d57fa6f149025075217bc6a55a7b"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "eebfa95500185b8155189d574196a801",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 470831,
            "upload_time": "2025-10-10T03:54:57",
            "upload_time_iso_8601": "2025-10-10T03:54:57.219285Z",
            "url": "https://files.pythonhosted.org/packages/e0/4a/a548bdfae6369c0d078bab5769f7b66f17f1bfaa6fa28f81d6be6959066b/httptools-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4d3114df99e1c43bd132eec921c2e7e11cda7852f65619bc0fc5bdc2d0cb126c",
                "md5": "25b89a2b744930c1cf50d496896152c4",
                "sha256": "f084813239e1eb403ddacd06a30de3d3e09a9b76e7894dcda2b22f8a726e9c60"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "25b89a2b744930c1cf50d496896152c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 452631,
            "upload_time": "2025-10-10T03:54:58",
            "upload_time_iso_8601": "2025-10-10T03:54:58.219310Z",
            "url": "https://files.pythonhosted.org/packages/4d/31/14df99e1c43bd132eec921c2e7e11cda7852f65619bc0fc5bdc2d0cb126c/httptools-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "22d2b7e131f7be8d854d48cb6d048113c30f9a46dca0c9a8b08fcb3fcd588cdc",
                "md5": "f06995ccf9c85b3a01040f23a58b955a",
                "sha256": "7347714368fb2b335e9063bc2b96f2f87a9ceffcd9758ac295f8bbcd3ffbc0ca"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f06995ccf9c85b3a01040f23a58b955a",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 452910,
            "upload_time": "2025-10-10T03:54:59",
            "upload_time_iso_8601": "2025-10-10T03:54:59.366658Z",
            "url": "https://files.pythonhosted.org/packages/22/d2/b7e131f7be8d854d48cb6d048113c30f9a46dca0c9a8b08fcb3fcd588cdc/httptools-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "53cf878f3b91e4e6e011eff6d1fa9ca39f7eb17d19c9d7971b04873734112f30",
                "md5": "7f4962a3eca84d032716b5657276e308",
                "sha256": "cfabda2a5bb85aa2a904ce06d974a3f30fb36cc63d7feaddec05d2050acede96"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp314-cp314-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7f4962a3eca84d032716b5657276e308",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.9",
            "size": 88205,
            "upload_time": "2025-10-10T03:55:00",
            "upload_time_iso_8601": "2025-10-10T03:55:00.389326Z",
            "url": "https://files.pythonhosted.org/packages/53/cf/878f3b91e4e6e011eff6d1fa9ca39f7eb17d19c9d7971b04873734112f30/httptools-0.7.1-cp314-cp314-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "90deb1fe0e8890f0292c266117d4cd268186758a9c34e576fbd573fdf3beacff",
                "md5": "61f0dc03fe0bdc67ebd5942b4d1eae13",
                "sha256": "ac50afa68945df63ec7a2707c506bd02239272288add34539a2ef527254626a4"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "61f0dc03fe0bdc67ebd5942b4d1eae13",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 206454,
            "upload_time": "2025-10-10T03:55:01",
            "upload_time_iso_8601": "2025-10-10T03:55:01.528063Z",
            "url": "https://files.pythonhosted.org/packages/90/de/b1fe0e8890f0292c266117d4cd268186758a9c34e576fbd573fdf3beacff/httptools-0.7.1-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "57a7a675c90b49e550c7635ce209c01bc61daa5b08aef17da27ef4e0e78fcf3f",
                "md5": "d6899c1e9072daac68e605e8f5f71d55",
                "sha256": "de987bb4e7ac95b99b805b99e0aae0ad51ae61df4263459d36e07cf4052d8b3a"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d6899c1e9072daac68e605e8f5f71d55",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 110260,
            "upload_time": "2025-10-10T03:55:02",
            "upload_time_iso_8601": "2025-10-10T03:55:02.418661Z",
            "url": "https://files.pythonhosted.org/packages/57/a7/a675c90b49e550c7635ce209c01bc61daa5b08aef17da27ef4e0e78fcf3f/httptools-0.7.1-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0344fb5ef8136e6e97f7b020e97e40c03a999f97e68574d4998fa52b0a62b01b",
                "md5": "a14082ddb270fcb952602c45bbed5e00",
                "sha256": "d169162803a24425eb5e4d51d79cbf429fd7a491b9e570a55f495ea55b26f0bf"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a14082ddb270fcb952602c45bbed5e00",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 441524,
            "upload_time": "2025-10-10T03:55:03",
            "upload_time_iso_8601": "2025-10-10T03:55:03.292581Z",
            "url": "https://files.pythonhosted.org/packages/03/44/fb5ef8136e6e97f7b020e97e40c03a999f97e68574d4998fa52b0a62b01b/httptools-0.7.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b4628496a5425341867796d7e2419695f74a74607054e227bbaeabec8323e87f",
                "md5": "4c1484011b3205d134a4fed5430849dc",
                "sha256": "49794f9250188a57fa73c706b46cb21a313edb00d337ca4ce1a011fe3c760b28"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4c1484011b3205d134a4fed5430849dc",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 440877,
            "upload_time": "2025-10-10T03:55:04",
            "upload_time_iso_8601": "2025-10-10T03:55:04.282243Z",
            "url": "https://files.pythonhosted.org/packages/b4/62/8496a5425341867796d7e2419695f74a74607054e227bbaeabec8323e87f/httptools-0.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e8f126c2e5214106bf6ed04d03e518ff28ca0c6b5390c5da7b12bbf94b40ae43",
                "md5": "8921a865133cd299c9f678409560ef5b",
                "sha256": "aeefa0648362bb97a7d6b5ff770bfb774930a327d7f65f8208394856862de517"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8921a865133cd299c9f678409560ef5b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 425775,
            "upload_time": "2025-10-10T03:55:05",
            "upload_time_iso_8601": "2025-10-10T03:55:05.341020Z",
            "url": "https://files.pythonhosted.org/packages/e8/f1/26c2e5214106bf6ed04d03e518ff28ca0c6b5390c5da7b12bbf94b40ae43/httptools-0.7.1-cp39-cp39-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3a347500a19257139725281f7939a7d1aa3701cf1ac4601a1690f9ab6f510e15",
                "md5": "e899a1a9bafddad72d6c408ce2f78255",
                "sha256": "0d92b10dbf0b3da4823cde6a96d18e6ae358a9daa741c71448975f6a2c339cad"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e899a1a9bafddad72d6c408ce2f78255",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 425001,
            "upload_time": "2025-10-10T03:55:06",
            "upload_time_iso_8601": "2025-10-10T03:55:06.389175Z",
            "url": "https://files.pythonhosted.org/packages/3a/34/7500a19257139725281f7939a7d1aa3701cf1ac4601a1690f9ab6f510e15/httptools-0.7.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "710431a7949d645ebf33a67f56a0024109444a52a271735e0647a210264f3e61",
                "md5": "66e7c8f589b02ed3b8b6aa86623d35cb",
                "sha256": "5ddbd045cfcb073db2449563dd479057f2c2b681ebc232380e63ef15edc9c023"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "66e7c8f589b02ed3b8b6aa86623d35cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 86818,
            "upload_time": "2025-10-10T03:55:07",
            "upload_time_iso_8601": "2025-10-10T03:55:07.316236Z",
            "url": "https://files.pythonhosted.org/packages/71/04/31a7949d645ebf33a67f56a0024109444a52a271735e0647a210264f3e61/httptools-0.7.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b546120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993",
                "md5": "29795416212f190abe5a18b3faacaaef",
                "sha256": "abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9"
            },
            "downloads": -1,
            "filename": "httptools-0.7.1.tar.gz",
            "has_sig": false,
            "md5_digest": "29795416212f190abe5a18b3faacaaef",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 258961,
            "upload_time": "2025-10-10T03:55:08",
            "upload_time_iso_8601": "2025-10-10T03:55:08.559207Z",
            "url": "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-10 03:55:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MagicStack",
    "github_project": "httptools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "httptools"
}
        
Elapsed time: 0.64936s