pyparsing v4.2 Release Notes

Release Date: 2019-07-30 // over 4 years ago
  • 🔖 Version 2.4.2 - July, 2019

    ⚡️ Updated the shorthand notation that has been added for repetition
    expressions: expr[min, max], with '...' valid as a min or max value:

    • expr[...] and expr[0, ...] are equivalent to ZeroOrMore(expr)
    • expr[1, ...] is equivalent to OneOrMore(expr)
    • expr[n, ...] or expr[n,] is equivalent
      to expr*n + ZeroOrMore(expr)
      (read as "n or more instances of expr")
    • expr[..., n] is equivalent to expr*(0, n)
    • expr[m, n] is equivalent to expr*(m, n)
      👻 Note that expr[..., n] and expr[m, n] do not raise an exception
      if more than n exprs exist in the input stream. If this
      behavior is desired, then write expr[..., n] + ~expr.

    👍 Better interpretation of [...] as ZeroOrMore raised by crowsonkb,
    thanks for keeping me in line!

    ⬆️ If upgrading from 2.4.1 or 2.4.1.1 and you have used expr[...]
    ⚡️ for OneOrMore(expr), it must be updated to expr[1, ...].

    The defaults on all the __diag__ switches have been set to False,
    ⚠ to avoid getting alarming warnings. To use these diagnostics, set
    📜 them to True after importing pyparsing.

    Example:

    import pyparsing as pp
    pp. __diag__.warn_multiple_tokens_in_named_alternation = True
    

    Fixed bug introduced by the use of getitem for repetition,
    overlooking Python's legacy implementation of iteration
    by sequentially calling getitem with increasing numbers until
    getting an IndexError. Found during investigation of problem
    reported by murlock, merci!