You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "dependabot[bot] (via GitHub)" <gi...@apache.org> on 2026/10/01 22:12:16 UTC
[PR] Build: Bump pyparsing from 3.3.2 to 3.3.3 [iceberg-python]
dependabot[bot] opened a new pull request, #4055:
URL: https://github.com/apache/iceberg-python/pull/4055
Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.3.2 to 3.3.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pyparsing/pyparsing/blob/master/CHANGES">pyparsing's changelog</a>.</em></p>
<blockquote>
<h2>Version 3.3.3 - in development</h2>
<ul>
<li>
<p>Added support for Python 3.15.</p>
</li>
<li>
<p>Parse actions that return a tuple value for a named expression formerly saved
just the first value of the tuple. Now they return the entire tuple. Partially
fixes Issue <a href="https://redirect.github.com/pyparsing/pyparsing/issues/401">#401</a>, PR <a href="https://redirect.github.com/pyparsing/pyparsing/issues/640">#640</a> submitted by Vincent Gao et AI.</p>
</li>
<li>
<p>Fixed CI unit test jobs selecting a tox environment with no test commands.
The matrix and fallback now select <code>py-unit</code>, as diagnosed and proposed by
glaziermag in issue <a href="https://redirect.github.com/pyparsing/pyparsing/issues/662">#662</a>; submitted by Neal Lin et AI.</p>
</li>
<li>
<p>Fixed <code>Dict</code> returning an empty nested <code>ParseResults.as_dict()</code> as <code>[]</code>
instead of <code>{}</code>. Incorporates partial solution submitted in PR <a href="https://redirect.github.com/pyparsing/pyparsing/issues/635">#635</a>
submitted by Leo Ji.</p>
<p>Additional fixes found as part of this work:</p>
<ul>
<li>
<p>Removed vestigial unused <code>ParseResults._modal</code> attribute.</p>
</li>
<li>
<p>Fixed incidental bug when Dict tries to create a dict with a <code>ParseResults</code>
value for a key (not hashable).</p>
</li>
</ul>
</li>
<li>
<p>Fixed <code>Word(..., max=n)</code> raising instead of matching up to <code>max</code> characters
when the character set contained whitespace - <code>Word(nums, max=3)</code> and
<code>Word(nums + " ", max=3)</code> gave opposite results on
the same input. Now both forms match up to <code>max</code> and leave the rest for
the next parser. PR <a href="https://redirect.github.com/pyparsing/pyparsing/issues/646">#646</a> submitted by Andrew Chen et AI.</p>
</li>
<li>
<p>Fixed <code>QuotedString</code> stripping whitespace that is part of a multi-character
quote delimiter, e.g. the leading newline in <code>QuotedString("\n;", multiline=True)</code>. The delimiter was silently collapsed to <code>";"</code>, so the
newline was ignored when matching. <code>QuotedString</code> now only rejects
quote_char/end_quote_char values that are empty or entirely whitespace, and
preserves any surrounding whitespace that is part of a valid delimiter.
Reported in issue <a href="https://redirect.github.com/pyparsing/pyparsing/issues/492">#492</a>.</p>
</li>
<li>
<p>Fixed <code>pyparsing_common.as_datetime</code> raising <code>Invalid date/time: microsecond must be in 0..999999</code> for valid ISO-8601 timestamps whose fractional seconds
round up to a full second (e.g. <code>2021-06-15T12:30:59.9999995</code>, common in
nanosecond-precision timestamps). The rounded microseconds are now added via
<code>timedelta</code> so the value carries into the next second instead of overflowing
the <code>datetime</code> microsecond argument. PR submitted by Andrew Chen et AI.</p>
</li>
<li>
<p>Fixed debug output corruption when a parsed line contains a carriage return or
other control character. <code>set_debug()</code> printed the source line verbatim, so a
stray <code>\r</code> returned the terminal cursor to column 0 and overwrote the "Match ...
at loc" text. Control characters in the debug line are now shown escaped, and the
marker caret stays aligned with the match location. Issue <a href="https://redirect.github.com/pyparsing/pyparsing/issues/496">#496</a>, reported by
Matthew Rowles.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pyparsing/pyparsing/commit/d90d38b283efaece7ac7cace7050ba55cb82abe5"><code>d90d38b</code></a> Update flit version and exclusion of generated railroad diagrams from source ...</li>
<li><a href="https://github.com/pyparsing/pyparsing/commit/4220992ced5a7631bc637172202cf37e42a01a4d"><code>4220992</code></a> Updated CI to execute unit tests, PR <a href="https://redirect.github.com/pyparsing/pyparsing/issues/663">#663</a>; update test_unit.py to add test ca...</li>
<li><a href="https://github.com/pyparsing/pyparsing/commit/e266043733fdc83a51c5f961fb4f8027230b75e3"><code>e266043</code></a> Reworked internal recursive implementations to use local stack vars or iterat...</li>
<li>See full diff in <a href="https://github.com/pyparsing/pyparsing/compare/3.3.2...3.3.3">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] Build: Bump pyparsing from 3.3.2 to 3.3.3 [iceberg-python]
Posted by "sanjana459 (via GitHub)" <gi...@apache.org>.
sanjana459 commented on PR #4055:
URL: https://github.com/apache/iceberg-python/pull/4055#issuecomment-6031590123
@Fokko I looked into these two failures. pyparsing 3.3.3 replaced `infix_notation` with a new iterative implementation, and when an operand fails to parse it drops that error and raises a new one at the start of the operand. So it's not only the test wording: on 3.3.3 a bad row filter like `foo = ` used to report `Expected ... (at char 6)` and now reports a grammar dump at char 0. Upstream has a related open regression (pyparsing/pyparsing#672); a 3.3.4 was mentioned but hasn't been released.
Two options that work on both 3.3.2 and 3.3.3:
1. Write the NOT/AND/OR precedence explicitly with a `Forward` instead of `infix_notation` (~10 lines). The existing tests pass unchanged on both versions, and on 10k random filters it gave the same results and error positions as the current grammar. Trade-off: it doesn't get 3.3.3's support for very deeply nested parentheses.
2. Keep `infix_notation`, name the predicate so the 3.3.3 message is readable, and relax the two assertions. Smaller, but error positions on 3.3.3 still point at the start of the operand.
I'd lean toward 1. Happy to open a PR for whichever you prefer.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] Build: Bump pyparsing from 3.3.2 to 3.3.3 [iceberg-python]
Posted by "Fokko (via GitHub)" <gi...@apache.org>.
Fokko commented on PR #4055:
URL: https://github.com/apache/iceberg-python/pull/4055#issuecomment-5946469787
Yes, this is the reason why we have dependabot. Pyparsing is known for breaking stuff. Maybe we can check if we can change the code in such a way that it works for 3.3.2 and 3.3.3
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] Build: Bump pyparsing from 3.3.2 to 3.3.3 [iceberg-python]
Posted by "sanjana459 (via GitHub)" <gi...@apache.org>.
sanjana459 commented on PR #4055:
URL: https://github.com/apache/iceberg-python/pull/4055#issuecomment-6031643551
Small follow-up after looking at the commits on this branch: the test module currently fails to import (`NameError: name 'BooleanExpression' is not defined`, it's still used by `test_boolean_as_operand`), which is why CI is red. With the import restored, the updated assertions pass on 3.3.3 but fail on 3.3.2, since they match 3.3.3's new message (including the char-0 position). Either option above would make it pass on both.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] Build: Bump pyparsing from 3.3.2 to 3.3.3 [iceberg-python]
Posted by "ebyhr (via GitHub)" <gi...@apache.org>.
ebyhr commented on PR #4055:
URL: https://github.com/apache/iceberg-python/pull/4055#issuecomment-5944197468
```
______________________________ test_with_function ______________________________
def test_with_function() -> None:
with pytest.raises(ParseException) as exc_info:
parser.parse("foo = 1 and lower(bar) = '2'")
> assert "Expected end of text, found 'and'" in str(exc_info)
E assert "Expected end of text, found 'and'" in '<ExceptionInfo Expected {{{W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in \'"\'} [. {W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in \'"\'}]...}]... \'not\' \'like\' string enclosed in single quotes} | \'true\' | \'false\'}, found \'lower\' (at char 12), (line:1, col:13) tblen=3>'
E + where '<ExceptionInfo Expected {{{W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in \'"\'} [. {W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in \'"\'}]...}]... \'not\' \'like\' string enclosed in single quotes} | \'true\' | \'false\'}, found \'lower\' (at char 12), (line:1, col:13) tblen=3>' = str(<ExceptionInfo Expected {{{W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in '"'} [. {W:(A-Z_a-z, $0-9A-Z_a-z) | string enclosed in '"'}]...}]... 'not' 'like' string enclosed in single quotes} | 'true' | 'false'}, found 'lower' (at char 12), (line:1, col:13) tblen=3>)
tests/expressions/test_parser.py:223: AssertionError
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org