This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-4012-a46cbdf09a77bf893d05c3e49caf6b72b3c24d57 in repository https://gitbox.apache.org/repos/asf/iceberg-python.git
commit f7dcc3d92ccd87532f6332028e68b11b09446be3 Author: Kuldeep Yadav <[email protected]> AuthorDate: Thu Sep 24 19:15:54 2026 +0000 perf(table): import the expression parser lazily (#4012) Import the expression parser lazily in pyiceberg.table The parser is only used by _parse_row_filter for string row filters, but importing it at module level pulls in pyparsing (and unittest, argparse and difflib through pyparsing.testing) on every `import pyiceberg.table` and `load_catalog`. --- pyiceberg/table/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 0caba0e5d..2c5c26800 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -33,7 +33,6 @@ from typing import TYPE_CHECKING, Any, TypeVar from pydantic import Field -import pyiceberg.expressions.parser as parser from pyiceberg.exceptions import CommitFailedException, ValidationException from pyiceberg.expressions import AlwaysFalse, AlwaysTrue, And, BooleanExpression, EqualTo, IsNull, Or, Reference from pyiceberg.expressions.visitors import ( @@ -2042,6 +2041,8 @@ def _parse_row_filter(expr: str | BooleanExpression) -> BooleanExpression: Returns: An unbound BooleanExpression. """ + from pyiceberg.expressions import parser + return parser.parse(expr) if isinstance(expr, str) else expr
