Update dependency pyparsing to v3
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 thebool()
behavior ofParseResults
.Prior to pyparsing 3.0.x, the
ParseResults
class implementation of__bool__
would returnFalse
if theParseResults
item list was empty, even if it contained named results. In 3.0.0 and later,ParseResults
will returnTrue
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 refactororiginal_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
, andlineno
. -
Fixed bug when
warn_ungrouped_named_tokens_in_collection
warning was raised when assigning a results name to anoriginal_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 nestedParseResults
, 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 foras_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
andStringStart
, which changed the interpretation of when and howLineStart
andStringStart
should match when a line starts with spaces. In 3.0.0, thexxxStart
expressions were not really treated like expressions in their own right, but as modifiers to the following expression when used likeLineStart() + expr
, so that if there were whitespace on the line beforeexpr
(which would match in versions prior to 3.0.0), the match would fail.3.0.0 implemented this by automatically promoting
LineStart() + expr
toAtLineStart(expr)
, which broke existing parsers that did not expectexpr
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
andAtStringStart
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 internalRegex
, even ifcaseless
oras_keyword
args are given asTrue
(unless explicitly disabled by passinguse_regex=False
). -
IndentedBlock
class now works withrecursive
flag. By default, the results parsed by anIndentedBlock
are grouped. This can be disabled by constructing theIndentedBlock
withgrouped=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
- A consolidated list of all the changes in the 3.0.0 release can be found in
docs/whats_new_in_3_0_0.rst
. (https://github.com/pyparsing/pyparsing/blob/master/docs/whats_new_in_3_0_0.rst)
Configuration
-
If you want to rebase/retry this MR, click this checkbox.
This MR has been generated by Renovate Bot.