- 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 as theself.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