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
 
 

Reply via email to