PackageTrack Sign in Track my project

parsimonious

(Soon to be) the fastest pure-Python PEG parser I could muster

0.11.0 6.9M downloads/mo #1807 most downloaded on PyPI erikrose/parsimonious

What this package is like to depend on

Last release 9 months ago

12 Nov 2025

Release timing varies

gaps range from 2 weeks to 3.8 years

This project publishes no release notes

the list below is its commits, not an announcement

Nothing withdrawn

no release was ever pulled

14 years old

14 releases · first in 2012

1 release in the last 12 months

see the full history below

Release timeline

14 releases · Dec 2012 to Nov 2025
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 14
  1. 0.11.0 12 Nov 2025

    Nothing published for this version

  2. 0.10.0 03 Sep 2022
    Commits, not release notes

    This project publishes no release notes. Between 0.9.0 and 0.10.0 there were 21 commits, 19 of them substantive:

    • Faster node cache
    • Ensure all LazyReference objects are resolved
    • Remove unnecessary if-statement
    • Pythonic code: itervalues(rule_map) -> rule_map.values()
    • Binary grammars and string literal precedence fix (#202)
    • Fix RST formatting in README
    • Add a failing test for #134.
    • Add release note.
    • Fix star token grammar (#203)
    • Simplify reference resolution. (#205)
    • Add note to release log.
    • remove some redundant code in Sequence expression (#176)
    • Modernize Syntax for python 3 (#206)
    • Use --tb=native to stack traces less verbose.
    • Add ability to run particular tests.
    • Use raise from to improve exception messages.
    • Infinite recursion left associative (#211)
    • fixed recursion errors of Expressions.__eq__ (#212)
    • \0.10.0 Release (#214)
  3. 0.9.0 31 Mar 2022
    Commits, not release notes

    This project publishes no release notes. Between 0.8.1 and 0.9.0 there were 50 commits, 48 of them substantive:

    • Fix Grammar.repr backslash escaping
    • Add ascii flag
    • Remove py3.3 in travis-ci
    • Remove Python 3.3 from the trove classifiers.
    • Merge dropping of 3.3 support, which should fix Travis. Close #147. Fix #146.
    • Add ASCII flag to regex expressions.
    • Update README.rst
    • Update README.rst
    • Merge in an example for the readme. Close #150.
    • Added two ticks for the NodeVisitor class and key, values as variables in visit_entry(). Close #151.
    • Support functions, class methods, and descriptors for custom rules
    • Migrate callability tests & remove redundant grammar tests
    • Move to function-style print in README
    • Travis CI: Remove py34 add py37, py38
    • Fixup: ensure method-descriptor-binding is used during illustrative descriptor test case (h/t @evanh)
    • Fixup: update callability test case
    • Nit: rename dictionary key from 'descriptor' to 'descriptor_rule' for readability, particularly in callability unit test
    • Merge removal of Python 3.4 from CI and addition of 3.7 and 3.8. Close #165.
    • Merge function-style print in readme. Close #158.
    • Consistency: use single-quoted key names during dictionary access

    …and 28 more.

  4. 0.8.1 21 Jun 2018
    Commits, not release notes

    This project publishes no release notes. Between 0.8.0 and 0.8.1 there were 2 commits, 1 of them substantive:

    • use print function for Python 3 compatibility
  5. 0.8.0 05 Aug 2017
    Commits, not release notes

    This project publishes no release notes. Between 0.7.0 and 0.8.0 there were 40 commits, 39 of them substantive:

    • Remove 3.2 from the trove classifiers, since we can't get it to run under tox anymore.
    • Type check when comparing nodes
    • Better nose based test
    • No need for the None check anymore
    • Merge fix for crash when comparing Nodes with instances of other classes. Close #98.
    • Remove duplicate VisitationError import.
    • Remove duplicate VisitationError import. Close #100,
    • Expose BadGrammar and VisitationError as top-level imports. Fix #101.
    • Drop python 2.6 support and add python 3.6 to the build matrix.
    • Remove StrAndRepr from classes which define their own repr
    • Fix a bug in unicode encoding of reprs.
    • Add failing test that rule ordering is preserved.
    • Make visitor parse rules in order.
    • Remove direct calls to dict()
    • Add failing test that rule ordering is preserved on shallow copies.
    • Fix ordering of shallow copy.
    • Have Grammar inherit directly from OrderedDict.
    • Remove unused imports.
    • pin six>=1.9.0 for python_2_unicode_compatible
    • Merge six pinning at 1.9.0. Close #109.

    …and 19 more.

  6. 0.7.0 09 Sep 2016
    Commits, not release notes

    This project publishes no release notes. Between 0.6.2 and 0.7.0 there were 35 commits, 29 of them substantive:

    • Added the ability of parsimonious to parse lists of tokens.
    • Merge master in to get up to date.
    • Clean up Token.
    • Simplify design of token-based parsing.
    • Slightly improve tests, and fix a TokenMatcher bug that revealed. Move Token to utils.
    • Merge experimental token-based parsing, via TokenGrammar class, for those operating on pre-lexed streams of tokens.
    • Remove what turns out to be a useless slots definition from TokenMatcher, add a useful one to Token, and confirm with a test that slots does not behave in CPython according to the language docs.
    • Fix #53: Make Grammar an immutable mapping.
    • Drop Python 3.1 support.
    • Add .travis.yml file for travis support.
    • Fix #16: Keep parenthesis when printing expressions.
    • Use io.open to read README.rst
    • Fix spelling of a few comments
    • README: Syntax highlight Python samples
    • Add Py3 compatibility.
    • Update some glue code and fix some bugs
    • Add a test for repr py3k incompatibility
    • Fix string_escape bug
    • Update travis.yml to use tox-travis (hopefully).
    • Drop support for python 3.2 due to pip incompatibility

    …and 9 more.

  7. 0.6.2 20 Oct 2014
    Commits, not release notes

    This project publishes no release notes. Between 0.6.1 and 0.6.2 there were 1 commits, 1 of them substantive:

    • Speed up grammar compilation by 100x. Close #62. Bump version to 0.6.2.
  8. 0.6.1 24 Sep 2014
    Commits, not release notes

    This project publishes no release notes. Between 0.6 and 0.6.1 there were 1 commits, 1 of them substantive:

    • Fix bug which made the default rule of a grammar invalid when it contained a forward reference. Bump version to 0.6.1. Fix #61.
  9. 0.6 09 Sep 2014
    Commits, not release notes

    This project publishes no release notes. Between 0.5 and 0.6 there were 24 commits, 23 of them substantive:

    • Refactor RuleVisitor._resolve_refs
    • Improve exception message when you forget to declare a visitor method.
    • Make clear that the grammar is a string, not some magical pile of operator overloading.
    • Show the production visit_or_term unpacks.
    • Correct visit_or_term example.
    • Improve NodeVisitor documentation.
    • Add parse() and match() convenience methods to NodeVisitor, and add the concept of a default grammar for a visitor.
    • Implement grammar-from-docstrings visitors. Close #46. Consolidate public API in init.
    • Improve some Grammar docs.
    • Tersen just a little bit. Make members consistently a tuple, not sometimes None.
    • Drastically simplify _resolve_refs(). Close #34.
    • Stop relying on the object identity of multiple instantiations of ().
    • Make Grammars extensible through custom Python code using "custom rules". Close #47.
    • Replace GrammarFromDocstrings with @rule. Everything works fine except subclassing; I haven't figured that out yet.
    • Bring readme up to date.
    • Move custom rules to a custom kwarg.
    • Make _match() public. Close #52.
    • Make Compound public, in case anyone wants to make custom Expressions based on it.
    • Replace default_rule kwarg with .default(). Refs #30.
    • Make UndefinedLabel no longer a kind of VisitationError.

    …and 3 more.

  10. 0.5 21 May 2013
    Commits, not release notes

    This project publishes no release notes. Between 0.4 and 0.5 there were 12 commits, 11 of them substantive:

    • Work around tox bug where it sees that whole comment as part of the dir name.
    • Support multi-line rules, comments in the middle of rules, and all other sorts of horrific behavior. Fix #19.
    • Add error reporting. Fix #28.
    • Factor out some duplication in parse(), and tweak some comments and docs.
    • Add pos kwarg to Grammar.parse as well.
    • Add line and column reporting to ParseError.
    • Tweak a few things in the readme to be more encouraging.
    • Come up with a benchmarking framework, and add a basic speed test.
    • Tolerate whitespace after opening parens.
    • Add support for single-quoted literals. Ref #20.
    • Besmirch my error reporting, which isn't great, but I want to release for the other fixes.
  11. 0.4 17 Apr 2013

    Nothing published for this version

  12. 0.3 05 Jan 2013

    Nothing published for this version

  13. 0.2 12 Dec 2012

    Nothing published for this version

  14. 0.1 01 Dec 2012

    Nothing published for this version

Stop reading changelogs one package at a time.

Point PackageTrack at your project and get told which of your dependencies moved, which of those matter, and what to do about it.

Track my project