|
|
|
@@ -1,3 +1,193 @@
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Mon Jan 26 08:09:46 UTC 2026 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- update to 3.3.2:
|
|
|
|
|
|
|
|
* Defined pyparsing-specific warning classes so that they can
|
|
|
|
|
|
|
|
be selectively enabled or disabled without affecting warnings
|
|
|
|
|
|
|
|
raised by other libraries in the same Python
|
|
|
|
|
|
|
|
* Added `as_datetime` parse action to `pyparsing.common` - a
|
|
|
|
|
|
|
|
more generalized version of the `convert_to_datetime` parse
|
|
|
|
|
|
|
|
action (supports any expression that extracts date/time fields
|
|
|
|
|
|
|
|
into "year", "month", "day", etc. results names), and validates
|
|
|
|
|
|
|
|
that the parsed fields represent a valid date and time.
|
|
|
|
|
|
|
|
* Added `iso8601_date_validated` and `iso8601_datetime_validated`
|
|
|
|
|
|
|
|
expressions to `pyparsing.common`, which return a Python
|
|
|
|
|
|
|
|
`datetime.datetime`
|
|
|
|
|
|
|
|
* Various performance improvements in `ParseResults` class and
|
|
|
|
|
|
|
|
core functions, with 10-20% performance overall.
|
|
|
|
|
|
|
|
* Added `regex_inverter` web page (using PyScript) to
|
|
|
|
|
|
|
|
demonstrate using the `inv_regex.py` example.
|
|
|
|
|
|
|
|
* The version 3.3.0 release will begin emitting
|
|
|
|
|
|
|
|
`DeprecationWarnings` for pyparsing methods
|
|
|
|
|
|
|
|
that have been renamed to PEP8-compliant names (introduced
|
|
|
|
|
|
|
|
in pyparsing 3.0.0, in August, 2021, with legacy names
|
|
|
|
|
|
|
|
retained as aliases). In preparation, I added in pyparsing
|
|
|
|
|
|
|
|
3.2.2 a utility for finding and replacing the legacy method
|
|
|
|
|
|
|
|
names with the new names.
|
|
|
|
|
|
|
|
* Deprecated `indentedBlock`, when converted using the
|
|
|
|
|
|
|
|
`cvt_pyparsing_pep8_names` utility, will emit `UserWarnings`
|
|
|
|
|
|
|
|
that additional code changes will be required.
|
|
|
|
|
|
|
|
* Deprecated `locatedExpr`, when converted using the
|
|
|
|
|
|
|
|
`cvt_pyparsing_pep8_names` utility, will emit `UserWarnings`
|
|
|
|
|
|
|
|
that additional code changes may be required.
|
|
|
|
|
|
|
|
* Updated all examples and test cases to use PEP8 names (unless
|
|
|
|
|
|
|
|
the test case is specifically designed to test behavior of a
|
|
|
|
|
|
|
|
legacy method). Added railroad diagrams for some examples.
|
|
|
|
|
|
|
|
* Added exception handling when calling `formatted_message()`,
|
|
|
|
|
|
|
|
so that `str(exception)` always returns at least _something_.
|
|
|
|
|
|
|
|
* All unit tests pass with Python 3.14, including 3.14t. This
|
|
|
|
|
|
|
|
does _not_ necessarily mean that pyparsing is now thread-safe,
|
|
|
|
|
|
|
|
just that when run in the free-threaded interpreter, there
|
|
|
|
|
|
|
|
were no errors. None of the unit tests try to do any parsing
|
|
|
|
|
|
|
|
with multiple threads - they test the basic functionality
|
|
|
|
|
|
|
|
of the library, under various versions of packrat and
|
|
|
|
|
|
|
|
left-recursive parsing.
|
|
|
|
|
|
|
|
* Added AI instructions so that AI agents can be prompted with
|
|
|
|
|
|
|
|
best practices for generating parsers using pyparsing code.
|
|
|
|
|
|
|
|
* Implemented a TINY language parser/interpreter using
|
|
|
|
|
|
|
|
pyparsing, in the `examples/tiny` directory. This is a little
|
|
|
|
|
|
|
|
tutorial language that I used to demonstrate how to use pyparsing to
|
|
|
|
|
|
|
|
build a simple interpreter, following a recommended
|
|
|
|
|
|
|
|
parser+AST+engine+run structure.
|
|
|
|
|
|
|
|
* Fixed minor formatting bugs in
|
|
|
|
|
|
|
|
`pyparsing.testing.with_line_numbers`, found during
|
|
|
|
|
|
|
|
development of the TINY language example.
|
|
|
|
|
|
|
|
* Added test in `DelimitedList` and `nested_expr` which auto-
|
|
|
|
|
|
|
|
suppress delimiting commas to avoid wrapping in a `Suppress`
|
|
|
|
|
|
|
|
if delimiter is already a `Suppress`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Wed Nov 26 10:48:14 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Update to 3.2.5
|
|
|
|
|
|
|
|
* JINX! Well, 3.2.4 had a bug for `Word` expressions that include a space
|
|
|
|
|
|
|
|
character, if that expression was then copied, either directly with .copy() or
|
|
|
|
|
|
|
|
by adding a results name, or included in another construct (like `DelimitedList`)
|
|
|
|
|
|
|
|
that makes a copy internally. Issue #618, reported by mstinberg, among others -
|
|
|
|
|
|
|
|
thanks, and sorry for the inconvenience.
|
|
|
|
|
|
|
|
- from version 3.2.4
|
|
|
|
|
|
|
|
* Barring any catastrophic bugs in this release, this will be the last release in
|
|
|
|
|
|
|
|
the 3.2.x line. The next release, 3.3.0, will begin emitting `DeprecationWarnings`
|
|
|
|
|
|
|
|
when the pre-PEP8 methods are used (see header notes above for more information,
|
|
|
|
|
|
|
|
including available automation for converting any existing code using
|
|
|
|
|
|
|
|
pyparsing with the old names).
|
|
|
|
|
|
|
|
* Fixed bug when using a copy of a `Word` expression (either by using the explicit
|
|
|
|
|
|
|
|
`copy()` method, or attaching a results name), and setting a new expression name,
|
|
|
|
|
|
|
|
a raised `ParseException` still used the original expression name. Also affected
|
|
|
|
|
|
|
|
`Regex` expressions with `as_match` or `as_group_list` = True. Reported by
|
|
|
|
|
|
|
|
Waqas Ilyas, in Issue #612 - good catch!
|
|
|
|
|
|
|
|
* Fixed type annotation for `replace_with`, to accept `Any` type. Fixes Issue #602,
|
|
|
|
|
|
|
|
reported by esquonk.
|
|
|
|
|
|
|
|
* Added locking around potential race condition in `ParserElement.reset_cache`, as
|
|
|
|
|
|
|
|
well as other cache-related methods. Fixes Issue #604, reported by CarlosDescalziIM.
|
|
|
|
|
|
|
|
* Substantial update to docstrings and doc generation in preparation for 3.3.0,
|
|
|
|
|
|
|
|
great effort by FeRD, thanks!
|
|
|
|
|
|
|
|
* Notable addition by FeRD to convert docstring examples to work with doctest! This
|
|
|
|
|
|
|
|
was long overdue, thanks so much!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Thu Apr 10 17:09:14 UTC 2025 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- update to 3.2.3:
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* Fixed bug in `nested_expr` where nested contents were
|
|
|
|
|
|
|
|
stripped of whitespace when the default whitespace characters
|
|
|
|
|
|
|
|
were cleared
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* Fixed syntax warning raised in `bigquery_view_parser.py`,
|
|
|
|
|
|
|
|
invalid escape sequence "\s".
|
|
|
|
|
|
|
|
* Added support for Python 3.14.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Tue Feb 4 18:56:03 UTC 2025 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- update to 3.2.1:
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* Add missing type annotations to `match_only_at_col`,
|
|
|
|
|
|
|
|
`replace_with`, `remove_quotes`, `with_attribute`, and
|
|
|
|
|
|
|
|
`with_class`. Issue #585 reported by rafrafrek.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Mon Oct 28 17:00:03 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- update to 3.2.0:
|
|
|
|
|
|
|
|
* 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 `typing` module
|
|
|
|
|
|
|
|
(e.g., `list[str]` vs `List[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 in `ParserElement.set_break()`
|
|
|
|
|
|
|
|
to `breakpoint()`.
|
|
|
|
|
|
|
|
- Converted `typing.NamedTuple` to `dataclasses.dataclass`
|
|
|
|
|
|
|
|
in railroad diagramming code.
|
|
|
|
|
|
|
|
- Added `from __future__ import annotations` to clean up
|
|
|
|
|
|
|
|
some type annotations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
|
|
|
|
Sat Aug 31 12:00:10 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- update to 3.1.4:
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* 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, while
|
|
|
|
|
|
|
|
investigating #558
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* Fixed bug (and corresponding test code) in `delta_time`
|
|
|
|
|
|
|
|
example that did not handle weekday references in time
|
|
|
|
|
|
|
|
expressions
|
|
|
|
|
|
|
|
* Minor performance speedup in `trim_arity`, to benefit any
|
|
|
|
|
|
|
|
parsers using parse actions.
|
|
|
|
|
|
|
|
* Added early testing support for Python 3.13 with JIT enabled.
|
|
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sat Mar 16 10:01:30 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
Sat Mar 16 10:01:30 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|