- Add
MultipleTargets
for handling multiple inputs for a single field - Allow using callables for
FileTarget
andDirectoryTarget
- Publish binary wheels for Python 3.13
- Build using Cython 3.0.11
- Support Python 3.13
- Add
GCSTarget
for streaming files directly to GCS
- Add
ListTarget
(thanks @ibrewster) - Build using Cython 3.0.10
- Build using Cython 3.0.9
- Add
CSVTarget
for processing CSV files (thanks @gabrielcedran)
- Introduce
strict
mode for raising an exception in case a non-registered target is passed (thanks @hbusul)
- Add
S3Target
for streaming files directly to S3 (thanks @tokicnikolaus)
- Replace deprecated
cgi
module usage withemail
(thanks @jasopolis) - Add support for Python 3.11 (thanks @jasopolis)
- Build using Cython 0.29.34
- Support Python 3.10
- Build using Cython 0.29.24
- Fix type annotation for Target objects (thanks @Wouterkoorn)
- Fix constant name in Tornado example (thanks @remram44)
- Handle the case when a user does not provide any file with
DirectoryTarget
(thanks @ibrewster) - Handle leading CRLF when needed (thanks @mephi42)
- Add
DirectoryTarget
for streaming different input files to an on-disk directory (thanks @NteRySin)
- Support Python 3.9
- Build using Cython 0.29.24
- Fix
Content-Type
header parsing bug (thanks @raethlein) - Build using Cython 0.29.21
- Build and publish binary wheels for Linux, macOS and Windows
- Fix build issues related to PEP 517
- Support Python 3.8
- Built using Cython 0.29.17
- Support registering multiple targets per same part
- Built using Cython 0.29.15
- Fix
pyproject.toml
- Update README
- Make file
content_type
(from theContent-Type
header) available asself.multipart_content_type
attribute inTarget
classes - Build using Cython 0.29.14
- Built using Cython 0.29.6
- Built using Cython 0.29.1
- Built using Cython 0.28.5
- Use
keys()
to iterate over request headers
- Built using Cython 0.28.4
- Improve documentation
- Add exception handling in the
_Parser
class (move to thePS_ERROR
state when targets raise an exception) - Support chunk-input validation in
Target
objects usingvalidator
callables - Add function hooks in
Target
classes which should be overridden instead of the actual functions themselves (users should now defineon_data_received
instead of overridingdata_received
)
- Include
streaming_form_data/_parser.pyx
file in the distribution to avoid installation errors
- Major performance improvements; we're now able to parse ~1800MB per second, from ~15MB per second in the previous version (thanks @kolomenkin)
- Fix parser bug which could lead to spurious CR or CRLF being added to the end of transferred form field value (thanks @kolomenkin)
- Make
filename
(from theContent-Disposition
header) available asself.multipart_filename
attribute inTarget
classes (thanks @kolomenkin) - Add example usage for
bottle
framework (thanks @kolomenkin) - Refactor tests to work with random bytes instead of increasing repository size with test files (thanks @kolomenkin)
- Make
Content-Type
header lookups truly case-insensitive (mixed cases also allowed) (thanks @kolomenkin)
- Make
Content-Type
header lookups case-insensitive
- Performance: mark
active
,found
, andinactive
properties onFinder
instances ascpdef
-ed methods, decreasing the Python-space operations for an increase in speed - Performance: remove
_Failed
exception and replace it with error codes, decreasing the Python-space operations for a speed increase - Include
Cython
-generated annotation file to keep an eye on the Python-interaction level
- Performance:
cdef
declarelong
variable responsible for iterating over the buffer
- Performance: avoid repeated function calls to check the buffer length
- Add Sphinx documentation and make them available on https://streaming-form-data.readthedocs.org
- Provide
parser.register
function for handling uploaded parts, replacing theexpected_parts
argument - Remove
Part
class from the user-facing API since it just makes the API look messy and verbose - Update documentation
- Include upload form in tornado usage example
- Call
unset_active_part
when a delimiter string is found
- Update README and tornado usage example
- Adjust import paths for the
Part
class
- Initial release