Repository URL to install this package:
Version:
1.8.1 ▾
|
streaming-form-data
/
METADATA
|
---|
Metadata-Version: 2.1
Name: streaming-form-data
Version: 1.8.1
Summary: Streaming parser for multipart/form-data
Home-page: https://github.com/siddhantgoel/streaming-form-data
Author: Siddhant Goel
Author-email: me@sgoel.dev
License: UNKNOWN
Keywords: form-data,forms,http,multipart,web
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.6
Description-Content-Type: text/markdown
# Streaming multipart/form-data parser
[](https://github.com/siddhantgoel/streaming-form-data/workflows/streaming-form-data/badge.svg)
[](https://pypi.python.org/pypi/streaming-form-data)
[](https://pypi.python.org/pypi/streaming-form-data)
[](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).
## Installation
```bash
$ pip install streaming-form-data
```
In case you prefer cloning the Github repository and installing manually, please
note that `master` 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 ValueTarget, FileTarget, NullTarget
>>>
>>> headers = {'Content-Type': 'multipart/form-data; boundary=boundary'}
>>>
>>> parser = StreamingFormDataParser(headers=headers)
>>>
>>> parser.register('name', ValueTarget())
>>> parser.register('file', FileTarget('/tmp/file.txt'))
>>> 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.6+ 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 -
`pip install -r requirements-dev.txt`
3. That's basically it. You should now be able to run the test suite -
`make test`.
Please note that `tests/test_parser_stress.py` stress tests the parser with
large inputs, which can take a while. As an alternative, pass the filename as an
argument to `py.test` to run tests selectively.
[pip-tools]: https://pypi.org/project/pip-tools/
[Read the Docs]: https://streaming-form-data.readthedocs.io/