Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork298
pyparsing 3.2.0rc1
Pre-releaseChanges since 3.2.0b3:
- Fixed handling of
IndexErrorraised in a parse action. QuotedStringparser now handles\xnn,\ooo, and\unnnncharacters whenconvert_whitespace_escapesis True.- Reformatted CHANGES file for final release.
All changes in 3.2.0:
Version 3.2.0 - October, 2024
Discontinued support for Python 3.6, 3.7, and 3.8. Adopted new Python features from Python versions 3.7-3.9:
- Updated type annotations to use built-in container types instead of names imported from the
typingmodule (e.g.,list[str]vsList[str]). - Reworked portions of the packrat cache to leverage insertion-preserving ordering in dicts (including removal of uses of
OrderedDict). - Changed
pdb.set_trace()call inParserElement.set_break()tobreakpoint(). - Converted
typing.NamedTupletodataclasses.dataclassin railroad diagramming code. - Added
from __future__ import annotationsto clean up some type annotations. (with assistance from ISyncWithFoo, issue#535, thanks for the help!)
- Updated type annotations to use built-in container types instead of names imported from the
POSSIBLE BREAKING CHANGES
The following bugfixes may result in subtle changes in the results returned or exceptions raised by pyparsing.
Fixed code in
ParseElementEnhancesubclasses that replaced detailed exception messages raised in contained expressions with a less-specific and less-informative generic exception message and location.If your code has conditional logic based on the message content in raised
ParseExceptions, this bugfix may require changes in your code.Fixed bug in
transform_string()where whitespace in the input string was not properly preserved in the output string.If your code uses
transform_string, this bugfix may require changes in your code.Fixed bug where an
IndexErrorraised in a parse action was incorrectly handled as anIndexErrorraised as part of theParserElementparsing methods, and reraised as aParseException. Now anIndexErrorthat raises inside a parse action will properly propagate out as anIndexError. (Issue#573, reported by August Karlstedt, thanks!)If your code raises
IndexErrors in parse actions, this bugfix may require changes in your code.
FIXES AND NEW FEATURES
Added type annotations to remainder of
pyparsingpackage, and addedmypyrun totox.ini, so that type annotations are now run as part of pyparsing's CI. Addresses Issue#373, raised by Iwan Aucamp, thanks!Exception message format can now be customized, by overriding
ParseBaseException.format_message:def custom_exception_message(exc) -> str: found_phrase = f", found {exc.found}" if exc.found else "" return f"{exc.lineno}:{exc.column} {exc.msg}{found_phrase}"ParseBaseException.formatted_message = custom_exception_message(PR#571 submitted by Odysseyas Krystalakos, nice work!)
run_testsnow detects if an exception is raised in a parse action, and will report it with an enhanced error message, with the exception type, string, and parse action name.QuotedStringnow handles translation of escaped integer, hex, octal, and Unicode sequences to their corresponding characters.Fixed the displayed output of
Regexterms to deduplicate repeated backslashes, for easier reading in debugging, printing, and railroad diagrams.Fixed (or at least reduced) elusive bug when generating railroad diagrams, where some diagram elements were just empty blocks. Fix submitted by RoDuth, thanks a ton!
Fixed railroad diagrams that get generated with a parser containing a Regex element defined using a verbose pattern - the pattern gets flattened and comments removed before creating the corresponding diagram element.
Defined a more performant regular expression used internally by
common_html_entity.Regexinstances can now be created using a callable that takes no arguments and just returns a string or a compiled regular expression, so that creating complex regular expression patterns can be deferred until they are actually used for the first time in the parser.Added optional
flattenBoolean argument toParseResults.as_list(), to return the parsed values in a flattened list.Added
indentandbase_1arguments topyparsing.testing.with_line_numbers. When usingwith_line_numbersinside a parse action, setbase_1=False, since the reportedlocvalue is 0-based.indentcan be a leading string (typically of spaces or tabs) to indent the numbered string passed towith_line_numbers. Added while working on#557, reported by Bernd Wechner.
NEW/ENHANCED EXAMPLES
Added query syntax to
mongodb_query_expression.pywith:- better support for array fields ("contains", "contains all", "contains any", and "contains none")
- "like" and "not like" operators to support SQL "%" wildcard matching and "=~" operator to support regex matching
- text search using "search for"
- dates and datetimes as query values
a[0]style array referencing
Added
lox_parser.pyexample, a parser for the Lox language used as a tutorial in Robert Nystrom's "Crafting Interpreters" (http://craftinginterpreters.com/). With helpful corrections from RoDuth.Added
complex_chemical_formulas.pyexample, to add parsing capability for formulas such as "3(C₆H₅OH)₂".Updated
tag_emitter.pyto use newTagclass, introduced in pyparsing 3.1.3.
Assets4
Uh oh!
There was an error while loading.Please reload this page.