simple grammars, vs. the traditional lex/yacc approach, or the use of regular
expressions. The pyparsing module provides a library of classes that client
2025-04-12 13:44:18 by Adam Ciarcinski | Files touched by this commit (3) |  |
Log message:
py-pyparsing: updated to 3.2.3
Version 3.2.3 - March, 2025
- Fixed bug released in 3.2.2 in which `nested_expr` could overwrite parse actions
for defined content, and could truncate list of items within a nested list.
Fixes Issue 600, reported by hoxbro and luisglft, with helpful diag logs and
repro code.
Version 3.2.2 - March, 2025
- Released `cvt_pyparsing_pep8_names.py` conversion utility to upgrade \
pyparsing-based
programs and libraries that use legacy camelCase names to use the new \
PEP8-compliant
snake_case method names. The converter can also be imported into other scripts as
from pyparsing.tools.cvt_pyparsing_pep8_names import pep8_converter
- Fixed bug in `nested_expr` where nested contents were stripped of whitespace when
the default whitespace characters were cleared (raised in this StackOverflow
question https://stackoverflow.com/questions/79327649 by Ben Alan). Also addressed
bug in resolving PEP8 compliant argument name and legacy argument name.
- Fixed bug in `rest_of_line` and the underlying `Regex` class, in which matching a
pattern that could match an empty string (such as `".*"` or \
`"[A-Z]*"` would not raise
a `ParseException` at or beyond the end of the input string. This could cause an
infinite parsing loop when parsing `rest_of_line` at the end of the input string.
Reported by user Kylotan, thanks!
- Enhancements and extra input validation for \
`pyparsing.util.make_compressed_re` - see
usage in `examples/complex_chemical_formulas.py` and result in the generated \
railroad
diagram `examples/complex_chemical_formulas_diagram.html`. Properly escapes \
characters
like "." and "*" that have special meaning in regular \
expressions.
- Fixed bug in `one_of()` to properly escape characters that are regular \
expression markers
(such as '*', '+', '?', etc.) before building the internal regex.
- Better exception message for `MatchFirst` and `Or` expressions, showing all \
alternatives
rather than just the first one.
- Added return type annotation of "-> None" for all `__init__()` \
methods, to satisfy
`mypy --strict` type checking. PR submitted by FeRD, thank you!
- Added optional argument `show_hidden` to `create_diagram` to show
elements that are used internally by pyparsing, but are not part of the actual
parser grammar. For instance, the `Tag` class can insert values into the parsed
results but it does not actually parse any input, so by default it is not included
in a railroad diagram. By calling `create_diagram` with `show_hidden` = `True`,
these internal elements will be included. (You can see this in the tag_metadata.py
script in the examples directory.)
- Fixed bug in `number_words.py` example. Also added `ebnf_number_words.py` to \
demonstrate
using the `ebnf.py` EBNF parser generator to build a similar parser directly from
EBNF.
- Fixed syntax warning raised in `bigquery_view_parser.py`, invalid escape \
sequence "\s".
Reported by sameer-google, nice catch!
- Added support for Python 3.14.
|
2025-02-23 19:05:52 by Thomas Klausner | Files touched by this commit (2) |  |
Log message:
py-pyparsing: update for flit_core 3.11
Bump PKGREVISION.
|
2025-01-02 10:19:51 by Adam Ciarcinski | Files touched by this commit (2) |  |
Log message:
py-pyparsing: updated to 3.2.1
Version 3.2.1 - December, 2024
- Updated generated railroad diagrams to make non-terminal elements links to \
their related
sub-diagrams. This _greatly_ improves navigation of the diagram, especially for
large, complex parsers.
- Simplified railroad diagrams emitted for parsers using `infix_notation`, by hiding
lookahead terms. Renamed internally generated expressions for clarity, and improved
diagramming.
- Improved performance of `cpp_style_comment`, `c_style_comment`, `common.fnumber`
and `common.ieee_float` Regex expressions. PRs submitted by Gabriel Gerlero,
nice work, thanks!
- Add missing type annotations to `match_only_at_col`, `replace_with`, \
`remove_quotes`,
`with_attribute`, and `with_class`.
- Added generated diagrams for many of the examples.
- Replaced old examples/0README.html file with examples/README.md file.
|
2024-08-26 16:58:07 by Adam Ciarcinski | Files touched by this commit (2) |  |
Log message:
py-pyparsing: updated to 3.1.4
Version 3.1.4 - August, 2024
----------------------------
- Fix to type annotation that referenced `re.Pattern`. Since this type was \
introduced in
Python 3.7, using this type definition broke Python 3.6 installs of pyparsing. PR
submitted by Felix Fontein, nice work!
Version 3.1.3 - August, 2024
----------------------------
- Added new `Tag` ParserElement, for inserting metadata into the parsed results.
This allows a parser to add metadata or annotations to the parsed tokens.
The `Tag` element also accepts an optional `value` parameter, defaulting to `True`.
See the new `tag_metadata.py` example in the `examples` 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 as `a==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 the
`transform_query` function for more examples.
- Fixed issue where PEP8 compatibility names for `ParserElement` static methods were
not themselves defined as `staticmethods`. When called using a `ParserElement` \
instance,
this resulted in a `TypeError` exception.
- To address a compatibility issue in RDFLib, added a property setter for the
`ParserElement.name` property, to call `ParserElement.set_name`.
- Modified `ParserElement.set_name()` to accept a None value, to clear the defined
name and corresponding error message for a `ParserElement`.
- Updated railroad diagram generation for `ZeroOrMore` and `OneOrMore` \
expressions with
`stop_on` expressions.
- 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
- Some type annotations added for parse action related methods.
- Added exception type to `trace_parse_action` exception output, while investigating
SO question posted by medihack.
- Added `set_name` calls to internal expressions generated in `infix_notation`, for
improved railroad diagramming.
- `delta_time`, `lua_parser`, `decaf_parser`, and `roman_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.
|
2024-03-06 14:33:03 by Adam Ciarcinski | Files touched by this commit (2) |  |
Log message:
py-pyparsing: updated to 3.1.2
Version 3.1.2 - March, 2024
---------------------------
- Added `ieee_float` expression to `pyparsing.common`, which parses float values,
plus "NaN", "Inf", "Infinity". PR submitted by \
Bob Peterson
- Updated pep8 synonym wrappers for better type checking compatibility. PR submitted
by Ricardo Coccioli
- Fixed empty error message bug, PR submitted by InSync
pyparsing's exception messages to a former, more helpful form. If you have \
code that
parses the exception messages returned by pyparsing, this may require some code
changes.
- Added unit tests to test for exception message contents, with enhancement to
`pyparsing.testing.assertRaisesParseException` to accept an expected exception \
message.
- Updated example `select_parser.py` to use PEP8 names and added Groups for \
better retrieval
of parsed values from multiple SELECT clauses.
- Added example `email_address_parser.py`, as suggested by John Byrd
- Added example `directx_x_file_parser.py` to parse DirectX template definitions, and
generate a Pyparsing parser from a template to parse .x files.
- Some code refactoring to reduce code nesting, PRs submitted by InSync.
- All internal string expressions using '%' string interpolation and `str.format()`
converted to f-strings.
|
2023-10-26 00:25:07 by Thomas Klausner | Files touched by this commit (1) |
Log message:
py-pyparsing: remove unused file
|
2023-10-26 00:24:14 by Thomas Klausner | Files touched by this commit (2) |
Log message:
py-pyparsing: switch to bootstrap.mk
Bump PKGREVISION.
|
2023-07-31 09:19:59 by Adam Ciarcinski | Files touched by this commit (3) |  |
Log message:
py-pyparsing: updated to 3.1.1
Version 3.1.1 - July, 2023
--------------------------
- Fixed regression in Word(min).
- Fixed bug in bad exception messages raised by Forward expressions.
- Fixed regression in SkipTo, where ignored expressions were not checked when looking
for the target expression.
- Fixed type annotation for enable_packrat.
- Some general internal code cleanup.
|