Multifruits
Tasty multipart form data parser built with cython.
Install
pip install multifruits
Usage
multifruits has one Parser class and two helpers: extract_filename and
parse_content_disposition.
Parser
Parser needs the Content-Type header value and a handler, which could
define one or more of these methods:
on_body_begin()
on_part_begin()
on_header(name: bytes, value: bytes)
on_headers_complete()
on_data(data: bytes)
on_part_complete()
on_body_complete()
Example:
from multifruits import Parser
class MyHandler:
def on_part_begin(self):
self.part = MyPart()
def on_header(self, name, value):
self.part.headers[name] = value
def on_data(self, data):
self.part.write(data)
handler = MyHandler()
parser = Parser(handler, request.headers['Content-Type'])
parser.feed_data(request.body) # You can pass chunks
Helpers
parse_content_disposition
Takes raw Content-Disposition header value and returns the disposition type
(attachment, form-data, inline and so on) and the parameters parsed as a
dictionary.
Example:
dtype, params = parse_content_disposition(b'inline; filename="foo.html"')
assert dtype == b'inline'
assert params == {b'filename': b'foo.html'}
extract_filename
Takes parameters from parse_content_disposition as a dict and tries to
return the appropriated str filename (like filename*).
Example:
assert extract_filename({
b'filename*': "UTF-8''foo-ä-€.html".encode()
}) == 'foo-ä-€.html'
Build from source
You need a virtualenv with cython installed, then:
git clone https://github.com/pyrates/multifruits
cd multifruits
make compile
python setup.py develop
Tests
To run tests:
make test
Acknowledgements
Metadata
Release files for multifruits 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| multifruits-0.1.7.tar.gz | 94.1 kB | Without provenance | Details for multifruits-0.1.7.tar.gz |
Release files / multifruits-0.1.7.tar.gz
| Download URL | multifruits-0.1.7.tar.gz |
|---|---|
| Size | 94.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8985bb7b73001525f92cad2e0efa353c42a3ae67a7510d67f19143b09be41019
|
|
BLAKE2b-256 checksum How to use checksums |
8c815236fd520d50a5ae8fad51e063302e0a4a002b47fc5a9a015bc0047be931
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.7
|
Security for multifruits 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.