./devel/py-pyparsing, Parsing module for Python

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 3.2.3, Package name: py312-pyparsing-3.2.3, Maintainer: pkgsrc-users

The pyparsing module is an alternative approach to creating and executing
simple grammars, vs. the traditional lex/yacc approach, or the use of regular
expressions. The pyparsing module provides a library of classes that client
code uses to construct the grammar directly in Python code.


Required to run:
[devel/py-setuptools] [lang/python37]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 1063.094 KB

Version history: (Expand)


CVS history: (Expand)


   2025-04-12 13:44:18 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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.