Skip to content

Roadmap

Paul McGuire edited this page Jun 20, 2020 · 12 revisions

This page will serve as a notice for planned release of features and bug-fixes in upcoming releases. I may not list every little change planned, just the main release drivers. Dates are omitted on purpose.

Pyparsing x.x.x (TBD)

  • PEP8 the API (will break lots of stuff)

Pyparsing 3.1.0

  • drop support for Python 3.5
  • adding type annotations
  • Convert the following examples into pip-installable projects:
    • delta_time
    • ebnf
    • lucene_parser
    • select_parser
    • arithmetic infix notation parser

Pyparsing 3.0.0

  • a1 release April, 2020

  • a2 release June, 2020

  • b1 release July, 2020

  • rc release September, 2020

  • release October, 2020

  • drop support for Python 2.x

  • drop deprecated features:

    • ParseResults.asXML()
    • operatorPrecedence synonym for infixNotation
    • upcaseTokens and downcaseTokens - moved to pyparsing_common
    • compatibility handling for __compat__.collect_all_And_tokens

Pyparsing 2.4.8 - late 2020

  • last 2.4.x release, with backports from 3.0.0 work
  • better Word default string
  • additional __diag__ flags to aid in 3.0.0 upgrades

Pyparsing 2.4.1

  • '...' as placeholder for SkipTo
  • '[]' notation to denote repetition
  • fix memory error
  • add __diag__ for diagnostic and debugging switches
  • conditionAsParseAction
  • drop support for Python 2.6

Pyparsing 2.4.0

  • split out new minor release to reflect unintentional API change caused by results naming bug fix in 2.3.1
  • add __compat__ for compatibility flags (similar to Pythons __future__) . __compat__.collect_all_And_tokens to False to disable API-breaking bugfix

Pyparsing 2.3.1

  • add ParseException.explain() method to aid in debugging parser errors
  • migrate docstrings from epydoc to sphinx, to support upload to readthedocs; maybe publish epydoc2sphinx pyparsing example in examples directory

Pyparsing 2.3.0

  • Note: these changes may break some current code. Fixing inconsistencies in ParseResults structure-building and exceptions:

    • convert IndexError's raised in parse actions to ParseExceptions that wrap the original IndexError Since IndexError sometimes occurs as part of pyparsing's normal parsing logic, IndexErrors that are raised during a parse action may get reinterpreted as parsing errors. To retain the information from the IndexError, these exceptions will now be raised as ParseExceptions that reference the original IndexError.
    • fix issue with ParseResults returned from a parse action in another level of ParseResults Occurs when a parse action is called and it returns the same tokens passed in: def parseAction(parse_string, locn, tokens): ... return tokens In this case, the return statement is unnecessary, since pyparsing will use the current tokens ParseResults if the parse action returns None. To prepare for this fix, remove any return statements in your parse actions that simply return the given tokens.
  • add unicode forms of printables, alphas, nums, etc.; probably as part of a pyparsing_unicode namespace class, similar to pyparsing_common

  • add PrecededBy for lookbehind expression (complement to FollowedBy)

Pyparsing 2.2.2 (released September 30, 2018)

  • add LICENSE and CODE_OF_CONDUCT files to repo, and include in source tarball on PyPI
  • fix ParseResult returned from SkipTo to be consistent

Pyparsing 2.2.1 (released in September, 2018)

  • main emphasis is migrating source control over to GitHub, with proper mods to setup.py for right 'pip install' behavior, now that many pivotal modules depend on pyparsing
  • fix DeprecationWarning in Python 3.7