UNCLASSIFIED - NO CUI

Skip to content

Update dependency pyparsing to v3

renovate requested to merge renovate/pyparsing-3.x into development

This MR contains the following updates:

Package Type Update Change
pyparsing ironbank-pypi major 2.4.7 -> 3.0.7

Release Notes

pyparsing/pyparsing

v3.0.7

  • Fixed bug #​345, in which delimitedList changed expressions in place using expr.streamline(). Reported by Kim Gräsman, thanks!

  • Fixed bug #​346, when a string of word characters was passed to WordStart or WordEnd instead of just taking the default value. Originally posted as a question by Parag on StackOverflow, good catch!

  • Fixed bug #​350, in which White expressions could fail to match due to unintended whitespace-skipping. Reported by Fu Hanxi, thank you!

  • Fixed bug #​355, when a QuotedString is defined with characters in its quoteChar string containing regex-significant characters such as ., *, ?, [, ], etc.

  • Fixed bug in ParserElement.run_tests where comments would be displayed using with_line_numbers.

  • Added optional "min" and "max" arguments to delimited_list. MR submitted by Marius, thanks!

  • Added new API change note in whats_new_in_pyparsing_3_0_0, regarding a bug fix in the bool() behavior of ParseResults.

    Prior to pyparsing 3.0.x, the ParseResults class implementation of __bool__ would return False if the ParseResults item list was empty, even if it contained named results. In 3.0.0 and later, ParseResults will return True if either the item list is not empty or if the named results dict is not empty.

generate an empty ParseResults by parsing a blank string with

a ZeroOrMore

  result = Word(alphas)[...].parse_string("")
  print(result.as_list())
  print(result.as_dict())
  print(bool(result))

add a results name to the result

  result["name"] = "empty result"
  print(result.as_list())
  print(result.as_dict())
  print(bool(result))

Prints:

  []
  {}
  False

  []
  {'name': 'empty result'}
  True

In previous versions, the second call to bool() would return False.

  • Minor enhancement to Word generation of internal regular expression, to emit consecutive characters in range, such as "ab", as "ab", not "a-b".

  • Fixed character ranges for search terms using non-Western characters in booleansearchparser, MR submitted by tc-yu, nice work!

  • Additional type annotations on public methods.

v3.0.6

  • Added suppress_warning() method to individually suppress a warning on a specific ParserElement. Used to refactor original_text_for to preserve internal results names, which, while undocumented, had been adopted by some projects.

  • Fix bug when delimited_list was called with a str literal instead of a parse expression.

v3.0.5

  • Added return type annotations for col, line, and lineno.

  • Fixed bug when warn_ungrouped_named_tokens_in_collection warning was raised when assigning a results name to an original_text_for expression. (Issue #​110, would raise warning in packaging.)

  • Fixed internal bug where ParserElement.streamline() would not return self if already streamlined.

  • Changed run_tests() output to default to not showing line and column numbers. If line numbering is desired, call with with_line_numbers=True. Also fixed minor bug where separating line was not included after a test failure.

v3.0.4

  • Fixed bug in which Dict classes did not correctly return tokens as nested ParseResults, reported by and fix identified by Bu Sun Kim, many thanks!!!

  • Documented API-changing side-effect of converting ParseResults to use __slots__ to pre-define instance attributes. This means that code written like this (which was allowed in pyparsing 2.4.7):

    result = Word(alphas).parseString("abc") result.xyz = 100

    now raises this Python exception:

    AttributeError: 'ParseResults' object has no attribute 'xyz'

    To add new attribute values to ParseResults object in 3.0.0 and later, you must assign them using indexed notation:

    result["xyz"] = 100

    You will still be able to access this new value as an attribute or as an indexed item.

  • Fixed bug in railroad diagramming where the vertical limit would count all expressions in a group, not just those that would create visible railroad elements.

v3.0.3

  • Fixed regex typo in one_of fix for as_keyword=True.

  • Fixed a whitespace-skipping bug, Issue #​319, introduced as part of the revert of the LineStart changes. Reported by Marc-Alexandre Côté, thanks!

  • Added header column labeling > 100 in with_line_numbers - some input lines are longer than others.

v3.0.2

  • Reverted change in behavior with LineStart and StringStart, which changed the interpretation of when and how LineStart and StringStart should match when a line starts with spaces. In 3.0.0, the xxxStart expressions were not really treated like expressions in their own right, but as modifiers to the following expression when used like LineStart() + expr, so that if there were whitespace on the line before expr (which would match in versions prior to 3.0.0), the match would fail.

    3.0.0 implemented this by automatically promoting LineStart() + expr to AtLineStart(expr), which broke existing parsers that did not expect expr to necessarily be right at the start of the line, but only be the first token found on the line. This was reported as a regression in Issue #​317.

    In 3.0.2, pyparsing reverts to the previous behavior, but will retain the new AtLineStart and AtStringStart expression classes, so that parsers can chose whichever behavior applies in their specific instance. Specifically:

matches expr if it is the first token on the line

(allows for leading whitespace)

  LineStart() + expr

matches only if expr is found in column 1

  AtLineStart(expr)
  • Performance enhancement to one_of to always generate an internal Regex, even if caseless or as_keyword args are given as True (unless explicitly disabled by passing use_regex=False).

  • IndentedBlock class now works with recursive flag. By default, the results parsed by an IndentedBlock are grouped. This can be disabled by constructing the IndentedBlock with grouped=False.

v3.0.1

  • Fixed bug where Word(max=n) did not match word groups less than length 'n'. Thanks to Joachim Metz for catching this!

  • Fixed bug where ParseResults accidentally created recursive contents. Joachim Metz on this one also!

  • Fixed bug where warn_on_multiple_string_args_to_oneof warning is raised even when not enabled.

v3.0.0


Configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about this update again.


  • If you want to rebase/retry this MR, click this checkbox.

This MR has been generated by Renovate Bot.

Merge request reports