-
Added new
Tag
ParserElement, for inserting metadata into the parsed results. This allows a parser to add metadata or annotations to the parsed tokens. TheTag
element also accepts an optionalvalue
parameter, defaulting toTrue
. See the newtag_metadata.py
example in theexamples
directory.Example:
# add tag indicating mood end_punc = "." | ("!" + Tag("enthusiastic"))) greeting = "Hello" + Word(alphas) + end_punc result = greeting.parse_string("Hello World.") print(result.dump()) result = greeting.parse_string("Hello World!") print(result.dump())
prints:
['Hello', 'World', '.'] ['Hello', 'World', '!'] - enthusiastic: True
-
Added example
mongodb_query_expression.py
, to convert human-readable infix query expressions (such asa==100 and b>=200
) and transform them into the equivalent query argument for the pymongo package ({'$and': [{'a': 100}, {'b': {'$gte': 200}}]}
). Supports many equality and inequality operators - see the docstring for thetransform_query
function for more examples. -
Fixed issue where PEP8 compatibility names for
ParserElement
static methods were not themselves defined asstaticmethods
. When called using aParserElement
instance, this resulted in aTypeError
exception. Reported by eylenburg (#548). -
To address a compatibility issue in RDFLib, added a property setter for the
ParserElement.name
property, to callParserElement.set_name
. -
Modified
ParserElement.set_name()
to accept a None value, to clear the defined name and corresponding error message for aParserElement
. -
Updated railroad diagram generation for
ZeroOrMore
andOneOrMore
expressions withstop_on
expressions, while investigating #558, reported by user Gu_f. -
Added
<META>
tag to HTML generated for railroad diagrams to force UTF-8 encoding with older browsers, to better display Unicode parser characters. -
Fixed some cosmetics/bugs in railroad diagrams:
- fixed groups being shown even when
show_groups
=False - show results names as quoted strings when
show_results_names
=True - only use integer loop counter if repetition > 2
- fixed groups being shown even when
-
Some type annotations added for parse action related methods, thanks August Karlstedt (#551).
-
Added exception type to
trace_parse_action
exception output, while investigating SO question posted by medihack. -
Added
set_name
calls to internal expressions generated ininfix_notation
, for improved railroad diagramming. -
delta_time
,lua_parser
,decaf_parser
, androman_numerals
examples cleaned up to use latest PEP8 names and add minor enhancements. -
Fixed bug (and corresponding test code) in
delta_time
example that did not handle weekday references in time expressions (like "Monday at 4pm") when the weekday was the same as the current weekday. -
Minor performance speedup in
trim_arity
, to benefit any parsers using parse actions. -
Added early testing support for Python 3.13 with JIT enabled.