streaming-form-data


Namestreaming-form-data JSON
Version 1.15.0 PyPI version JSON
download
home_pagehttps://github.com/siddhantgoel/streaming-form-data
SummaryStreaming parser for multipart/form-data
upload_time2024-03-19 18:05:00
maintainer
docs_urlNone
authorSiddhant Goel
requires_python>=3.8
license
keywords form-data forms http multipart web
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Streaming multipart/form-data parser

[![image](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/test.yml/badge.svg)](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/test.yml) [![image](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/build.yml/badge.svg)](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/build.yml)

[![image](https://img.shields.io/pypi/v/streaming-form-data.svg)](https://pypi.python.org/pypi/streaming-form-data)

[![image](https://img.shields.io/pypi/pyversions/streaming-form-data.svg)](https://pypi.python.org/pypi/streaming-form-data)

[![image](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

`streaming_form_data` provides a Python parser for parsing `multipart/form-data`
input chunks (the encoding used when submitting data over HTTP through HTML
forms).

## Testimonials

> [_this speeds up file uploads to my Flask app by **more than factor 10**_](https://github.com/pallets/werkzeug/issues/875#issuecomment-429287766)

> [_Thanks a lot for your fix with streaming-form-data. I can finally upload gigabyte sized files at good speed and without memory filling up!_](https://github.com/pallets/werkzeug/issues/875#issuecomment-530020990)

> [_huge thanks to @siddhantgoel with his "streaming-form-data" that saves me from the slow file reads I get with @FastAPI!_](https://twitter.com/bebenzrr/status/1654952147132248064)

## Installation

```bash
$ pip install streaming-form-data
```

In case you prefer cloning the Github repository and installing manually, please
note that `main` is the development branch, so `stable` is what you should be
working with.

## Usage

```python
>>> from streaming_form_data import StreamingFormDataParser
>>> from streaming_form_data.targets import FileTarget, NullTarget, S3Target, ValueTarget
>>>
>>> headers = {"Content-Type": "multipart/form-data; boundary=boundary"}
>>>
>>> parser = StreamingFormDataParser(headers=headers)
>>>
>>> parser.register("name", ValueTarget())
>>> parser.register("file-1", FileTarget("/path/to/file.txt"))
>>> parser.register("file-2", S3Target("s3://bucket/path/to/key"))
>>> parser.register("discard-me", NullTarget())
>>>
>>> for chunk in request.body:
...     parser.data_received(chunk)
...
>>>
```

## Documentation

Up-to-date documentation is available on [Read the Docs].

## Development

Please make sure you have Python 3.8+ and [pip-tools] installed.

Since this package includes a C extension, please make sure you have a working C
compiler available. On Debian-based distros this usually means installing the
`build-essentials` package.

1. Git clone the repository:
   `git clone https://github.com/siddhantgoel/streaming-form-data`

2. Install the packages required for development:
   `make pip-sync`

3. Install `streaming_form_data` itself:
   `pip install .`

4. That's basically it. You should now be able to run the test suite:
   `make test`

Note that if you make any changes to Cython files (`.pyx, .pxd, .pxi`), you'll need to re-compile (`make compile`) and re-install `streaming_form_data` before you can test your changes.

[pip-tools]: https://pypi.org/project/pip-tools/
[Read the Docs]: https://streaming-form-data.readthedocs.io/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/siddhantgoel/streaming-form-data",
    "name": "streaming-form-data",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "form-data,forms,http,multipart,web",
    "author": "Siddhant Goel",
    "author_email": "me@sgoel.dev",
    "download_url": "https://files.pythonhosted.org/packages/ed/ef/a8d74a9521cfea78b3b2509ae7f4d7d04f1afd2e2317e61e90115e9a5a11/streaming-form-data-1.15.0.tar.gz",
    "platform": null,
    "description": "# Streaming multipart/form-data parser\n\n[![image](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/test.yml/badge.svg)](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/test.yml) [![image](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/build.yml/badge.svg)](https://github.com/siddhantgoel/streaming-form-data/actions/workflows/build.yml)\n\n[![image](https://img.shields.io/pypi/v/streaming-form-data.svg)](https://pypi.python.org/pypi/streaming-form-data)\n\n[![image](https://img.shields.io/pypi/pyversions/streaming-form-data.svg)](https://pypi.python.org/pypi/streaming-form-data)\n\n[![image](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n`streaming_form_data` provides a Python parser for parsing `multipart/form-data`\ninput chunks (the encoding used when submitting data over HTTP through HTML\nforms).\n\n## Testimonials\n\n> [_this speeds up file uploads to my Flask app by **more than factor 10**_](https://github.com/pallets/werkzeug/issues/875#issuecomment-429287766)\n\n> [_Thanks a lot for your fix with streaming-form-data. I can finally upload gigabyte sized files at good speed and without memory filling up!_](https://github.com/pallets/werkzeug/issues/875#issuecomment-530020990)\n\n> [_huge thanks to @siddhantgoel with his \"streaming-form-data\" that saves me from the slow file reads I get with @FastAPI!_](https://twitter.com/bebenzrr/status/1654952147132248064)\n\n## Installation\n\n```bash\n$ pip install streaming-form-data\n```\n\nIn case you prefer cloning the Github repository and installing manually, please\nnote that `main` is the development branch, so `stable` is what you should be\nworking with.\n\n## Usage\n\n```python\n>>> from streaming_form_data import StreamingFormDataParser\n>>> from streaming_form_data.targets import FileTarget, NullTarget, S3Target, ValueTarget\n>>>\n>>> headers = {\"Content-Type\": \"multipart/form-data; boundary=boundary\"}\n>>>\n>>> parser = StreamingFormDataParser(headers=headers)\n>>>\n>>> parser.register(\"name\", ValueTarget())\n>>> parser.register(\"file-1\", FileTarget(\"/path/to/file.txt\"))\n>>> parser.register(\"file-2\", S3Target(\"s3://bucket/path/to/key\"))\n>>> parser.register(\"discard-me\", NullTarget())\n>>>\n>>> for chunk in request.body:\n...     parser.data_received(chunk)\n...\n>>>\n```\n\n## Documentation\n\nUp-to-date documentation is available on [Read the Docs].\n\n## Development\n\nPlease make sure you have Python 3.8+ and [pip-tools] installed.\n\nSince this package includes a C extension, please make sure you have a working C\ncompiler available. On Debian-based distros this usually means installing the\n`build-essentials` package.\n\n1. Git clone the repository:\n   `git clone https://github.com/siddhantgoel/streaming-form-data`\n\n2. Install the packages required for development:\n   `make pip-sync`\n\n3. Install `streaming_form_data` itself:\n   `pip install .`\n\n4. That's basically it. You should now be able to run the test suite:\n   `make test`\n\nNote that if you make any changes to Cython files (`.pyx, .pxd, .pxi`), you'll need to re-compile (`make compile`) and re-install `streaming_form_data` before you can test your changes.\n\n[pip-tools]: https://pypi.org/project/pip-tools/\n[Read the Docs]: https://streaming-form-data.readthedocs.io/\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Streaming parser for multipart/form-data",
    "version": "1.15.0",
    "project_urls": {
        "Homepage": "https://github.com/siddhantgoel/streaming-form-data"
    },
    "split_keywords": [
        "form-data",
        "forms",
        "http",
        "multipart",
        "web"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "922da861d96b319b7c3dadb2948a5df5286064e6025caca588b7cad169d60f4e",
                "md5": "058e5cd5017cc60f34855978fe0046b0",
                "sha256": "a883f303bbd01423aa2d3317ff6c80641b6e9892308e11075d171352e75caf64"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "058e5cd5017cc60f34855978fe0046b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 83655,
            "upload_time": "2024-03-19T18:04:19",
            "upload_time_iso_8601": "2024-03-19T18:04:19.811365Z",
            "url": "https://files.pythonhosted.org/packages/92/2d/a861d96b319b7c3dadb2948a5df5286064e6025caca588b7cad169d60f4e/streaming_form_data-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25d92bb2dfd0731b6c3bc9653604dcd639e2a4a77983698eb2e70008ea08f32b",
                "md5": "aae27373f1d9e593951d269aa78bad3e",
                "sha256": "50c862b05300156a19a3c55f2ecaaf715e890d928c8fd2d9f10be150f67d1d27"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "aae27373f1d9e593951d269aa78bad3e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 441628,
            "upload_time": "2024-03-19T18:04:21",
            "upload_time_iso_8601": "2024-03-19T18:04:21.794871Z",
            "url": "https://files.pythonhosted.org/packages/25/d9/2bb2dfd0731b6c3bc9653604dcd639e2a4a77983698eb2e70008ea08f32b/streaming_form_data-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cbd0888ef1d691d609f72c0a885a154ea62e6385fa12d96ac951fb06f2109836",
                "md5": "5301f826a3be0982def9c962ea22afb9",
                "sha256": "5912818d2af4b8548ac6c2d2c3d0322065731f18216d394550abd4630dd97993"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5301f826a3be0982def9c962ea22afb9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 467769,
            "upload_time": "2024-03-19T18:04:23",
            "upload_time_iso_8601": "2024-03-19T18:04:23.798248Z",
            "url": "https://files.pythonhosted.org/packages/cb/d0/888ef1d691d609f72c0a885a154ea62e6385fa12d96ac951fb06f2109836/streaming_form_data-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f1c08a5214890e639624668f4417f6cdc3a682466f7024273b57e1d82d1c2420",
                "md5": "f0232758f4684a64e016ab57234ff302",
                "sha256": "7a33759a85696a43459c064584969777a84ba3bda932b79cab971b09a29baf11"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "f0232758f4684a64e016ab57234ff302",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 448334,
            "upload_time": "2024-03-19T18:04:25",
            "upload_time_iso_8601": "2024-03-19T18:04:25.749754Z",
            "url": "https://files.pythonhosted.org/packages/f1/c0/8a5214890e639624668f4417f6cdc3a682466f7024273b57e1d82d1c2420/streaming_form_data-1.15.0-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0403ca4bb19a111cf409bbaf77c90b6be0f2ccff5e35326045bdc28d0154edc0",
                "md5": "fe1d1124e1074dd96678127217c65007",
                "sha256": "6096bbf765c765258f6d20c8ecd12c3d6a720a3e55633a80e9ad54153054b83f"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fe1d1124e1074dd96678127217c65007",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 464074,
            "upload_time": "2024-03-19T18:04:27",
            "upload_time_iso_8601": "2024-03-19T18:04:27.043481Z",
            "url": "https://files.pythonhosted.org/packages/04/03/ca4bb19a111cf409bbaf77c90b6be0f2ccff5e35326045bdc28d0154edc0/streaming_form_data-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98a81cd5ebdcd15bf0949370ab2931d7fb02a1d113536a1b53a0052ae3ef10ff",
                "md5": "a7e5f2610a682448149fee3c8ffe17d6",
                "sha256": "f5f6397c0ed02a51cb8d6f0b4ad1a76d09c5e05fe8fdbb9a2227187139276660"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "a7e5f2610a682448149fee3c8ffe17d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 65245,
            "upload_time": "2024-03-19T18:04:28",
            "upload_time_iso_8601": "2024-03-19T18:04:28.236281Z",
            "url": "https://files.pythonhosted.org/packages/98/a8/1cd5ebdcd15bf0949370ab2931d7fb02a1d113536a1b53a0052ae3ef10ff/streaming_form_data-1.15.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be0d8c6465b106e9d9f1073786162177a247f4e55f3b4da037050b5e221afa55",
                "md5": "e1c04bb61a8d9af2d6ffaebaa3fbcfeb",
                "sha256": "b9cda6a8c290424b8c5c00cfaf18103030fc256fe68d3291635f4b180e9b6ae6"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e1c04bb61a8d9af2d6ffaebaa3fbcfeb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 74245,
            "upload_time": "2024-03-19T18:04:29",
            "upload_time_iso_8601": "2024-03-19T18:04:29.729108Z",
            "url": "https://files.pythonhosted.org/packages/be/0d/8c6465b106e9d9f1073786162177a247f4e55f3b4da037050b5e221afa55/streaming_form_data-1.15.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e5898dcc034024279092a77ae2e9281d35ea20502b8dfa0694baabf8fb9a18a1",
                "md5": "3fa647b26a367e60a4e0f291876c6633",
                "sha256": "ef03c03b318804fb634af7961759a74c03bef665c0c9174e186a7a345f77ce1f"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3fa647b26a367e60a4e0f291876c6633",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 85501,
            "upload_time": "2024-03-19T18:04:31",
            "upload_time_iso_8601": "2024-03-19T18:04:31.327460Z",
            "url": "https://files.pythonhosted.org/packages/e5/89/8dcc034024279092a77ae2e9281d35ea20502b8dfa0694baabf8fb9a18a1/streaming_form_data-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f4020fc9a3ce0fb3fad7d861d6bb02d47754353cdd36b4cebe2374d8174bd90",
                "md5": "4635cfeb222611c2abc0fde2e66266f2",
                "sha256": "6360053030d3c4032dd49f923f5fa536063534fb2c100fcb7b733fe83bc320e2"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "4635cfeb222611c2abc0fde2e66266f2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 485824,
            "upload_time": "2024-03-19T18:04:32",
            "upload_time_iso_8601": "2024-03-19T18:04:32.357342Z",
            "url": "https://files.pythonhosted.org/packages/8f/40/20fc9a3ce0fb3fad7d861d6bb02d47754353cdd36b4cebe2374d8174bd90/streaming_form_data-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aeceb4bcfc82176f94e90d34621b9ad71763fa32c79d5289d7b342f2a01f84bb",
                "md5": "2cacad90db32b3a63adfc9ee6ebcb618",
                "sha256": "2a6cd81dd069e5ed0703042ac14126526b8eb39067b92a7f3dd7c2a89dcdbbf5"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2cacad90db32b3a63adfc9ee6ebcb618",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 511320,
            "upload_time": "2024-03-19T18:04:33",
            "upload_time_iso_8601": "2024-03-19T18:04:33.637037Z",
            "url": "https://files.pythonhosted.org/packages/ae/ce/b4bcfc82176f94e90d34621b9ad71763fa32c79d5289d7b342f2a01f84bb/streaming_form_data-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc28b00808ecbefb4fc13de215a8f7000c3ce87ad06d811428645c9d82392021",
                "md5": "74a80471ebdb31dc2fe9e453aa302233",
                "sha256": "6c85d472a245dc64c17d9f339c1ebdf3d1db608fbf85e6024e59e2c81a7d365d"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "74a80471ebdb31dc2fe9e453aa302233",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 487257,
            "upload_time": "2024-03-19T18:04:35",
            "upload_time_iso_8601": "2024-03-19T18:04:35.563840Z",
            "url": "https://files.pythonhosted.org/packages/fc/28/b00808ecbefb4fc13de215a8f7000c3ce87ad06d811428645c9d82392021/streaming_form_data-1.15.0-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6155c804e87b7d790cfb1814c4502cab96eaa0476136f9cbbbac21a575a77131",
                "md5": "842364f72109a7f02ed40c294a6c9aad",
                "sha256": "5a8a4e2be7d2d6034892a419ae0f1486b1479edc7a6003c4215cb4f5f2d76b08"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "842364f72109a7f02ed40c294a6c9aad",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 507318,
            "upload_time": "2024-03-19T18:04:37",
            "upload_time_iso_8601": "2024-03-19T18:04:37.545178Z",
            "url": "https://files.pythonhosted.org/packages/61/55/c804e87b7d790cfb1814c4502cab96eaa0476136f9cbbbac21a575a77131/streaming_form_data-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "58422c191122cf6aff4da96ca2238109d6421a9816784f0d47399ab64b44b25f",
                "md5": "dd5a7f761f62a8a9ea595ac36154c3a4",
                "sha256": "3c158ed2791e574f28ef0c0b91a94fb941751306bf495163ed84bad3f68fe7ea"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "dd5a7f761f62a8a9ea595ac36154c3a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 65391,
            "upload_time": "2024-03-19T18:04:38",
            "upload_time_iso_8601": "2024-03-19T18:04:38.956352Z",
            "url": "https://files.pythonhosted.org/packages/58/42/2c191122cf6aff4da96ca2238109d6421a9816784f0d47399ab64b44b25f/streaming_form_data-1.15.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8d184f39dfe569347d034258e793a3141d8da5a32deac184f469c5c6607bee01",
                "md5": "dee1dda880bd1a9e0b18afeaa37a68d8",
                "sha256": "f99868952c57684cc341c58a877664ab72d3a1d948037264b26517626024e8f1"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "dee1dda880bd1a9e0b18afeaa37a68d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 74647,
            "upload_time": "2024-03-19T18:04:40",
            "upload_time_iso_8601": "2024-03-19T18:04:40.126411Z",
            "url": "https://files.pythonhosted.org/packages/8d/18/4f39dfe569347d034258e793a3141d8da5a32deac184f469c5c6607bee01/streaming_form_data-1.15.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f00b6eeb3901f288e0db7967b8b42ca008f5f0caa2ce6ff3c243f6b4260e4f0",
                "md5": "b589a8a89caca85fe6f73c3ebcaa54ac",
                "sha256": "4fa2c947fcda4fc8fd2071e50fc75f111d3a9756b7d9b97b2665d7ab27d9eda1"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b589a8a89caca85fe6f73c3ebcaa54ac",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 84174,
            "upload_time": "2024-03-19T18:04:41",
            "upload_time_iso_8601": "2024-03-19T18:04:41.716541Z",
            "url": "https://files.pythonhosted.org/packages/7f/00/b6eeb3901f288e0db7967b8b42ca008f5f0caa2ce6ff3c243f6b4260e4f0/streaming_form_data-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f3ee874b13a956586e313e72ff2c350be64b37c37269b748e515bc1ec623f06c",
                "md5": "b46b0aa410a1d069debebafbd417c7ba",
                "sha256": "55aadcfdb342b0732cd3875a41cd39d688e44024f0ec48e931a82797089d3390"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "b46b0aa410a1d069debebafbd417c7ba",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 456433,
            "upload_time": "2024-03-19T18:04:42",
            "upload_time_iso_8601": "2024-03-19T18:04:42.835317Z",
            "url": "https://files.pythonhosted.org/packages/f3/ee/874b13a956586e313e72ff2c350be64b37c37269b748e515bc1ec623f06c/streaming_form_data-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "569d9fc375acb4cf18e393eef31388982f34b32cf8ff127fafe0bfaf729f45c3",
                "md5": "5871b484b6ed060dd0037fc41e3e04f5",
                "sha256": "0c0ecfa687b5b22e299a155351d646aab132e67b1c71c45e078a8800cb573358"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5871b484b6ed060dd0037fc41e3e04f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 479155,
            "upload_time": "2024-03-19T18:04:44",
            "upload_time_iso_8601": "2024-03-19T18:04:44.113100Z",
            "url": "https://files.pythonhosted.org/packages/56/9d/9fc375acb4cf18e393eef31388982f34b32cf8ff127fafe0bfaf729f45c3/streaming_form_data-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f400cd220b172eec230c08729e094a5c40cefc7a20393521351a1c448c19154",
                "md5": "108f39fd83bd48758587280bab495acc",
                "sha256": "2f20bc096d2328fa6acf91907e7106a9271f4b82b063691af084e98055a21361"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "108f39fd83bd48758587280bab495acc",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 480706,
            "upload_time": "2024-03-19T18:04:45",
            "upload_time_iso_8601": "2024-03-19T18:04:45.404866Z",
            "url": "https://files.pythonhosted.org/packages/7f/40/0cd220b172eec230c08729e094a5c40cefc7a20393521351a1c448c19154/streaming_form_data-1.15.0-cp38-cp38-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "824c25e5f473e850c40e2ef7480979742906337956829a05bacbbfd83cdfcf90",
                "md5": "80548ccb823e25344dce57fa93aa2345",
                "sha256": "900443d27c8f5c86a63ffe7019de1f8282f22363e5e2e921d16dc2372bb551b9"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "80548ccb823e25344dce57fa93aa2345",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 501972,
            "upload_time": "2024-03-19T18:04:46",
            "upload_time_iso_8601": "2024-03-19T18:04:46.784850Z",
            "url": "https://files.pythonhosted.org/packages/82/4c/25e5f473e850c40e2ef7480979742906337956829a05bacbbfd83cdfcf90/streaming_form_data-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ab200bbaaa7010dd41e4beda0eff48b032b95c0f043f46bf237c3b32628807b",
                "md5": "94c43ee32ea0f82a0b0668a63c2f6b00",
                "sha256": "29312e70ed095b33bacee80bcd941328627d8f471f92f515e2aa7bfbcbe5bf43"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "94c43ee32ea0f82a0b0668a63c2f6b00",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 65516,
            "upload_time": "2024-03-19T18:04:48",
            "upload_time_iso_8601": "2024-03-19T18:04:48.796565Z",
            "url": "https://files.pythonhosted.org/packages/0a/b2/00bbaaa7010dd41e4beda0eff48b032b95c0f043f46bf237c3b32628807b/streaming_form_data-1.15.0-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "739f5b9b8ccddf2f55cbf870ef32b49d8ed1dac43057880d23a6159e4fbbc843",
                "md5": "15853aab98cf009c57db91a53a2a36b4",
                "sha256": "ec3d34a196af6412518615855f707fb71d4271af5a0b0dd3a123b11f4de730a6"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "15853aab98cf009c57db91a53a2a36b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 74605,
            "upload_time": "2024-03-19T18:04:49",
            "upload_time_iso_8601": "2024-03-19T18:04:49.970578Z",
            "url": "https://files.pythonhosted.org/packages/73/9f/5b9b8ccddf2f55cbf870ef32b49d8ed1dac43057880d23a6159e4fbbc843/streaming_form_data-1.15.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdf1e39eef2170144d2db68debd99db83cd5db00291570fc40cd75c9c9b3ce36",
                "md5": "d5a300a005909ca367a06307e0b323c1",
                "sha256": "2d3343abbcc9d41e727c4aeb084fa5b87e46cc5b72dd8811c7e204b379ca4d7b"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d5a300a005909ca367a06307e0b323c1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 84185,
            "upload_time": "2024-03-19T18:04:50",
            "upload_time_iso_8601": "2024-03-19T18:04:50.990274Z",
            "url": "https://files.pythonhosted.org/packages/cd/f1/e39eef2170144d2db68debd99db83cd5db00291570fc40cd75c9c9b3ce36/streaming_form_data-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d0ee749385066bde85cf5fc34ed93abfcf63af56188b88cc1a51e52259ca1e28",
                "md5": "3c23d021067faf0837a923f37eb366f3",
                "sha256": "4e076ff1bd7acbfc8ea118ac08d5467b5aef1606c1bd719012f32edaa7a35490"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "3c23d021067faf0837a923f37eb366f3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 446927,
            "upload_time": "2024-03-19T18:04:52",
            "upload_time_iso_8601": "2024-03-19T18:04:52.032374Z",
            "url": "https://files.pythonhosted.org/packages/d0/ee/749385066bde85cf5fc34ed93abfcf63af56188b88cc1a51e52259ca1e28/streaming_form_data-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "696373273d31e4436c9e3af8966325d6a23abdbdc8c9d419024029b41a7042b7",
                "md5": "93f68b4f9ff96e36794c8c42c56d8143",
                "sha256": "d59ca1a32fea68cab56906ca65942f850820997c693ec3446d6f91e578687a0f"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "93f68b4f9ff96e36794c8c42c56d8143",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 467851,
            "upload_time": "2024-03-19T18:04:53",
            "upload_time_iso_8601": "2024-03-19T18:04:53.289309Z",
            "url": "https://files.pythonhosted.org/packages/69/63/73273d31e4436c9e3af8966325d6a23abdbdc8c9d419024029b41a7042b7/streaming_form_data-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "205c33b29a4e1f0021367c73adf357707c6d49bed520e131c1b1fb42b6d58c7c",
                "md5": "c42742e60ec9f3420c7d3811015e93f2",
                "sha256": "5a3eeef08e437fab17444fc2c0a8299db31035b029d5c9a22ee2dfc4a58d7de3"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "c42742e60ec9f3420c7d3811015e93f2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 449466,
            "upload_time": "2024-03-19T18:04:55",
            "upload_time_iso_8601": "2024-03-19T18:04:55.235817Z",
            "url": "https://files.pythonhosted.org/packages/20/5c/33b29a4e1f0021367c73adf357707c6d49bed520e131c1b1fb42b6d58c7c/streaming_form_data-1.15.0-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6eab5fcb69cef708c06c44ce7e0e49693d32f7f24b38c192f10c9547db9fbc8f",
                "md5": "b6c93a239ebfc576712acdba0fffdd1b",
                "sha256": "0be4071c2414a82dd8e7c1abb9d36ff08c2c85fc5cc8ff644dc770bf708225f7"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b6c93a239ebfc576712acdba0fffdd1b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 465596,
            "upload_time": "2024-03-19T18:04:56",
            "upload_time_iso_8601": "2024-03-19T18:04:56.429723Z",
            "url": "https://files.pythonhosted.org/packages/6e/ab/5fcb69cef708c06c44ce7e0e49693d32f7f24b38c192f10c9547db9fbc8f/streaming_form_data-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ebdfa0d3f5fb4b478a8eedfdfc81beb3b6f9e135f81784162aa154e683b9193",
                "md5": "8605e74fc279690089a956106611dcbc",
                "sha256": "30ef2030bf1b22a705ba379d1958e9c103626ae9f037cbdfffe40dca5c529a89"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "8605e74fc279690089a956106611dcbc",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 65529,
            "upload_time": "2024-03-19T18:04:57",
            "upload_time_iso_8601": "2024-03-19T18:04:57.858886Z",
            "url": "https://files.pythonhosted.org/packages/0e/bd/fa0d3f5fb4b478a8eedfdfc81beb3b6f9e135f81784162aa154e683b9193/streaming_form_data-1.15.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8ac1553cbdfd31d710981c7fa8d49593a99266152ffb26d59b36c3bf76ccc22b",
                "md5": "6c053d4f754094549b3a192e4ed09934",
                "sha256": "fdcbbfc3f94babaeff4e95efb1b062feee75021a0a6239af5c6209d21b212ba0"
            },
            "downloads": -1,
            "filename": "streaming_form_data-1.15.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6c053d4f754094549b3a192e4ed09934",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 74551,
            "upload_time": "2024-03-19T18:04:58",
            "upload_time_iso_8601": "2024-03-19T18:04:58.936870Z",
            "url": "https://files.pythonhosted.org/packages/8a/c1/553cbdfd31d710981c7fa8d49593a99266152ffb26d59b36c3bf76ccc22b/streaming_form_data-1.15.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "edefa8d74a9521cfea78b3b2509ae7f4d7d04f1afd2e2317e61e90115e9a5a11",
                "md5": "34e8e720be17ec1c35d6580ff9ac7418",
                "sha256": "891e011bcc18dceea06f64b20d65d79f77830bf6d746ae89d8debdce16afeea5"
            },
            "downloads": -1,
            "filename": "streaming-form-data-1.15.0.tar.gz",
            "has_sig": false,
            "md5_digest": "34e8e720be17ec1c35d6580ff9ac7418",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 130033,
            "upload_time": "2024-03-19T18:05:00",
            "upload_time_iso_8601": "2024-03-19T18:05:00.039488Z",
            "url": "https://files.pythonhosted.org/packages/ed/ef/a8d74a9521cfea78b3b2509ae7f4d7d04f1afd2e2317e61e90115e9a5a11/streaming-form-data-1.15.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-19 18:05:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "siddhantgoel",
    "github_project": "streaming-form-data",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "streaming-form-data"
}
        
Elapsed time: 0.21470s