Skip to content

Latest commit

 

History

History
123 lines (69 loc) · 3.85 KB

CHANGELOG.md

File metadata and controls

123 lines (69 loc) · 3.85 KB

Changelog

2.3.1

  • This version contains no code changes.

  • The contents of setup.cfg are now in pyproject.toml; setup.cfg and setup.py have been removed.

  • Github codeql action is updated.

  • Requirements.txt has been renamed to requirements-dev.txt to clarify that ABNF has no package dependencies.

  • ABNF packages are now published to pypi using trusted publishing.

2.3.0

  • A bit of work with cProfiler led to 7x improvement in parsing speed on grammars used to test parsing speed.

  • abnf now supports python 3.9 - 3.13.

2.2.0

  • Added RFC 9111.

  • Removed changes to RFC 6266 grammar from https://www.rfc-editor.org/errata/eid5383, as that erratum has been rejected.

  • RFC 3986 rule 'Host' now uses first-match alternation as specified.

  • Rule.load_grammar now has an option 'strict' that specifies whether line endings in a source grammar are fixed.

2.1.0

  • Added python 3.11 to tox.

  • Added RFC 9110. #13

  • Prose-vals that are really rulenames wrapped in angle-brackets are now parsed as rulenames and become valid rules. #6

  • Added RFC 3987.

  • Rule.grammar can now be a string. Another decorator load_grammar has been added to load such.

  • RFC 7235 (now obsoleted by RFC 9110) no longer modifies the rule 'WWW-Authenticate', as the current parser correctly applies the rule as specified in the grammar.

  • Modify grammar following an erratum to RFC 6266 to remove an ambiguity in the grammar. #16

  • Implement RFC 6265 rule 'domain-value'.

2.0.2

  • Repetition now correctly handles the case self.repeat.min == 0.
    #15

  • Concatenation objects no longer cache parse results. This improves parsing performance significantly.

  • Node, LiteralNode objects now use slots.

  • Alternation.parse now yields matches as found.

2.0.1

  • CharValNodeVisitor now visits a node generated by parsing "" correctly. #11

2.0.0

  • Implement backtracking. This is potentially a breaking change, given the changes to parsing behavior. #4, #10, #11 .

  • Add grammars for RFC 3339, 3629, 5987, 6266, 9116.

  • Modify RFC 5322 rule ‘obs-unstruct’ following RFC errata.

1.2.1

  • Fix a bug in Repetition class. Refactoring to remove the use of a flatten function meant that matches needed to be counted explicitly instead of using the size of the matched nodes list. #10

  • Add more type hints, and a py.typed file.

1.2.0

  • Add type hints.

  • add RFC 7489 grammar (thanks to egobiah).

1.1.1

  • Imported rules are now created using the source rule's definition, instead of setting the target rule definition to the source rule. This was resulting in parse node trees with unexpected structure.

  • RFC 2735 credentials, challenge rules have been restored to their original definitions now that longest match alternation is the default.

1.1.0

  • Added class method Rule.from_file which loads a grammar from an ABNF rulelist in a file. #2

  • Added class attribute Rule.first_match_alternation. When false, alternation returns the longest match, with ties broken by order of match. When True, alternation returns the first match.

  • Added Rule.exclude_rule. This object method allows one to restrict an existing rule by excluding values that match another rule. The initial use case was to exclude keywords from matching identifiers.

  • Parsing is generally faster following some internal tinkering and refactoring.

1.0.1

  • Unicode characters > 127 expressed as num-val are now correctly parsed. #1

1.0.0

  • Initial release.