- Support Python 3.14
- Drop support for Python 3.8 and 3.9
- Moved to wheelodex organization
- Migrated from setuptools to hatch
- Drop support for Python 3.7
- Support Python 3.13
- Include
py.typedfile in distribution
- Support Python 3.8 through 3.12
- Drop support for Python 2.7, 3.4, 3.5, and 3.6
- Removed
scan_file(),scan_lines(),HeaderParser.parse_file(), andHeaderParser.parse_lines()(all deprecated in v0.4.0) - Type annotations added
- The scanner options to the scanner functions are now keyword-only
scan()andscan_stanzas()can now parse strings directly. As a result,scan_string()andscan_stanzas_string()are now deprecated.- The
HeaderParsermethodsparse()andparse_stanzas()can now parse strings directly. As a result, theparse_string()andparse_stanzas_string()methods are now deprecated. - Added a
Scannerclass with methods for scanning a shared input. As a result, the following are now deprecated:scan_next_stanza()scan_next_stanza_string()HeaderParser.parse_next_stanza()HeaderParser.parse_next_stanza_string()
- Added a
scan()function combining the behavior ofscan_file()andscan_lines(), which are now deprecated - Gave
HeaderParseraparse()method combining the behavior ofparse_file()andparse_lines(), which are now deprecated - Added
scan_next_stanza()andscan_next_stanza_string()functions for scanning & consuming input only up to the end of the first header section - Added
scan_stanzas()andscan_stanzas_string()functions for scanning input composed entirely of multiple stanzas/header sections - Gave
HeaderParserparse_next_stanza()andparse_next_stanza_string()methods for parsing & consuming input only up to the end of the first header section - Gave
HeaderParserparse_stanzas()andparse_stanzas_string()methods for parsing input composed entirely of multiple stanzas/header sections
- Drop support for Python 3.3
- Gave
HeaderParserand the scanner functions options for configuring scanning behavior:separator_regexskip_leading_newlines
- Fixed a
DeprecationWarningin Python 3.7
NormalizedDict's default normalizer (exposed as thelower()function) now passes non-strings through unchangedHeaderParserinstances can now be compared for non-identity equalityHeaderParser.add_field()andHeaderParser.add_additional()now take an optionalactionargument for customizing the parser's behavior when a field is encountered- Made the
unfold()function public
Initial release