Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency pyparsing to v3 #150

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

pbelmann
Copy link
Member

@pbelmann pbelmann commented Mar 8, 2022

This PR contains the following updates:

Package Update Change
pyparsing major ==2.4.6 -> ==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. PR
    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, PR 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

v2.4.7

  • Backport of selected fixes from 3.0.0 work:
    . Each bug with Regex expressions
    . And expressions not properly constructing with generator
    . Traceback abbreviation
    . Bug in delta_time example
    . Fix regexen in pyparsing_common.real and .sci_real
    . Avoid FutureWarning on Python 3.7 or later
    . Cleanup output in runTests if comments are embedded in test string

Configuration

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

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

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

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


  • If you want to rebase/retry this PR, check this box.

This PR has been generated by Renovate Bot.

@pbelmann pbelmann force-pushed the renovate/pyparsing-3.x branch from db6804b to e7c99ce Compare April 10, 2022 11:20
@pbelmann pbelmann force-pushed the renovate/pyparsing-3.x branch from e7c99ce to d651d12 Compare June 8, 2022 12:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants