pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/py-pyparsing



Module Name:    pkgsrc
Committed By:   adam
Date:           Fri Dec 26 10:21:29 UTC 2025

Modified Files:
        pkgsrc/devel/py-pyparsing: Makefile PLIST distinfo

Log Message:
py-pyparsing: updated to 3.3.1

Version 3.3.1 - December, 2025

- Added license info to metadata, following PEP-639. Thanks to Gedalia Pasternak and
  Marc Mueller for submitted issue and PR.

Version 3.3.0 - December, 2025

===========================================================================================
 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.
 This utility is located at `pyparsing/tools/cvt_pep8_names.py`. This script will scan all
 Python files specified on the command line, and if the `-u` option is selected, will
 replace all occurrences of the old method names with the new PEP8-compliant names,
 updating the files in place.

 Here is an example that converts all the files in the pyparsing `/examples` directory:

      python -m pyparsing.tools.cvt_pyparsing_pep8_names -u examples/*.py

 The new names are compatible with pyparsing versions 3.0.0 and later.
===========================================================================================

- Deprecated `indentedBlock`, when converted using the `cvt_pyparsing_pep8_names`
  utility, will emit `UserWarnings` that additional code changes will be required.
  This is because the new `IndentedBlock` class no longer requires the calling code
  to supply an indent stack, while adding support for nested indentation levels
  and grouping.

- Deprecated `locatedExpr`, when converted using the `cvt_pyparsing_pep8_names`
  utility, will emit `UserWarnings` that additional code changes may be required.
  The new `Located` class removes the extra grouping level of the parsed values.
  (If the original `locatedExpr` parser was defined with a results name, then
  the extra grouping is retained, so that the results name nesting works properly;
  in this case, no code changes would 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. These instructions are in the
  `ai/best_practices.md` file, and can be accessed programmatically by calling
  `pyparsing.show_best_practices()` or running `python -m pyparsing.ai.show_best_practices`
  from the command line, after installing the `pyparsing` package.

- 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.
  The `docs` sub-directory also includes transcripts of the AI session used to create the
  parser and the interpreter. The `samples` sub-directory includes a few sample TINY programs.

- 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`.

- Added performance benchmarking tools and documentation:
  - `tests/perf_pyparsing.py` runs a series of benchmark parsing tests, exercising different
    aspects of the pyparsing package. For cross-version analysis, this script can export
    results as CSV and append to a consolidated data file.
  - Runner scripts `run_perf_all_tags.bat` (Windows) and `run_perf_all_tags.sh` (Ubuntu/bash)
    execute the benchmark across multiple Python versions (3.9–3.14) and pyparsing versions
    (3.1.1 through 3.3.0), aggregating results into `perf_pyparsing.csv` at the repo root.
  - See `tests/README.md` for usage instructions.

- Used performance benchmarking to identify and revert an inefficient utility method used in
  `transform_string` (introduced in pyparsing 3.2.0b2).


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 pkgsrc/devel/py-pyparsing/Makefile
cvs rdiff -u -r1.10 -r1.11 pkgsrc/devel/py-pyparsing/PLIST
cvs rdiff -u -r1.36 -r1.37 pkgsrc/devel/py-pyparsing/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/devel/py-pyparsing/Makefile
diff -u pkgsrc/devel/py-pyparsing/Makefile:1.39 pkgsrc/devel/py-pyparsing/Makefile:1.40
--- pkgsrc/devel/py-pyparsing/Makefile:1.39     Tue Sep 23 17:43:46 2025
+++ pkgsrc/devel/py-pyparsing/Makefile  Fri Dec 26 10:21:29 2025
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.39 2025/09/23 17:43:46 adam Exp $
+# $NetBSD: Makefile,v 1.40 2025/12/26 10:21:29 adam Exp $
 
-DISTNAME=      pyparsing-3.2.5
+DISTNAME=      pyparsing-3.3.1
 PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=    devel python
 MASTER_SITES=  ${MASTER_SITE_PYPI:=p/pyparsing/}

Index: pkgsrc/devel/py-pyparsing/PLIST
diff -u pkgsrc/devel/py-pyparsing/PLIST:1.10 pkgsrc/devel/py-pyparsing/PLIST:1.11
--- pkgsrc/devel/py-pyparsing/PLIST:1.10        Sat Apr 12 11:44:18 2025
+++ pkgsrc/devel/py-pyparsing/PLIST     Fri Dec 26 10:21:29 2025
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.10 2025/04/12 11:44:18 adam Exp $
+@comment $NetBSD: PLIST,v 1.11 2025/12/26 10:21:29 adam Exp $
 ${PYSITELIB}/${WHEEL_INFODIR}/METADATA
 ${PYSITELIB}/${WHEEL_INFODIR}/RECORD
 ${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
@@ -9,6 +9,16 @@ ${PYSITELIB}/pyparsing/__init__.pyo
 ${PYSITELIB}/pyparsing/actions.py
 ${PYSITELIB}/pyparsing/actions.pyc
 ${PYSITELIB}/pyparsing/actions.pyo
+${PYSITELIB}/pyparsing/ai/__init__.py
+${PYSITELIB}/pyparsing/ai/__init__.pyc
+${PYSITELIB}/pyparsing/ai/__init__.pyo
+${PYSITELIB}/pyparsing/ai/best_practices.md
+${PYSITELIB}/pyparsing/ai/show_best_practices/__init__.py
+${PYSITELIB}/pyparsing/ai/show_best_practices/__init__.pyc
+${PYSITELIB}/pyparsing/ai/show_best_practices/__init__.pyo
+${PYSITELIB}/pyparsing/ai/show_best_practices/__main__.py
+${PYSITELIB}/pyparsing/ai/show_best_practices/__main__.pyc
+${PYSITELIB}/pyparsing/ai/show_best_practices/__main__.pyo
 ${PYSITELIB}/pyparsing/common.py
 ${PYSITELIB}/pyparsing/common.pyc
 ${PYSITELIB}/pyparsing/common.pyo

Index: pkgsrc/devel/py-pyparsing/distinfo
diff -u pkgsrc/devel/py-pyparsing/distinfo:1.36 pkgsrc/devel/py-pyparsing/distinfo:1.37
--- pkgsrc/devel/py-pyparsing/distinfo:1.36     Tue Sep 23 17:43:46 2025
+++ pkgsrc/devel/py-pyparsing/distinfo  Fri Dec 26 10:21:29 2025
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.36 2025/09/23 17:43:46 adam Exp $
+$NetBSD: distinfo,v 1.37 2025/12/26 10:21:29 adam Exp $
 
-BLAKE2s (pyparsing-3.2.5.tar.gz) = b15f24d2ae99962ab0ce13a08682f75460f46d678a6f333e2dbf314407f242f8
-SHA512 (pyparsing-3.2.5.tar.gz) = e9c4e4c7a7e324331ced2214b5a406c538209fedd8b56ffa2a28b44b497be0d4a03b705e9ce9a449e8f126a8fa555e8c1572894b09dda0eda4e3da156ba7e3ff
-Size (pyparsing-3.2.5.tar.gz) = 1099274 bytes
+BLAKE2s (pyparsing-3.3.1.tar.gz) = 4cd8a24d0d6259f646fe81a5f4cb7feb779c727f799d9b60f9cd63018c74d8ee
+SHA512 (pyparsing-3.3.1.tar.gz) = 897335233a642fefd05e729d86caeb6d1bb6b5873d6f4cf67dd922d0ec188efd9c051e2dad60df08f4876b61923078bb03f4cd93e835fe12e5c4e1ff6d591daa
+Size (pyparsing-3.3.1.tar.gz) = 1550512 bytes



Home | Main Index | Thread Index | Old Index