This is an automated email from the ASF dual-hosted git repository.

kevinjqliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git


The following commit(s) were added to refs/heads/main by this push:
     new e7590446 mypy: Ignore missing annotations globally (#2704)
e7590446 is described below

commit e759044601feaf34c99b5c154322b8b52e4f6a30
Author: Fokko Driesprong <[email protected]>
AuthorDate: Fri Nov 7 20:05:38 2025 +0000

    mypy: Ignore missing annotations globally (#2704)
    
    Weirdly, this also showed some new issues:
    
    ```
    
mypy.....................................................................Failed
    - hook id: mypy
    - exit code: 1
      mkdocs/gen_doc_stubs.py:20: error: Unused "type: ignore" comment  
[unused-ignore]
      mkdocs/gen_doc_stubs.py:21: error: Unused "type: ignore" comment  
[unused-ignore]
      tests/utils/test_manifest.py:51: error: "Callable[[FileIO, str], 
tuple[ManifestFile, ...]]" has no attribute "cache_clear"  [attr-defined]
      tests/conftest.py:101: error: Unused "type: ignore" comment  
[unused-ignore]
      Found 4 errors in 3 files (checked 166 source files)
    ```
    
    <!--
    Thanks for opening a pull request!
    -->
    
    <!-- In the case this PR will resolve an issue, please replace
    ${GITHUB_ISSUE_ID} below with the actual Github issue id. -->
    <!-- Closes #${GITHUB_ISSUE_ID} -->
    
    # Rationale for this change
    
    ## Are these changes tested?
    
    ## Are there any user-facing changes?
    
    <!-- In the case of user-facing changes, please add the changelog label.
    -->
    
    ---------
    
    Co-authored-by: Kevin Liu <[email protected]>
    Co-authored-by: Kevin Liu <[email protected]>
---
 mkdocs/gen_doc_stubs.py      |   4 +-
 pyiceberg/manifest.py        |   6 +-
 pyproject.toml               | 343 -------------------------------------------
 tests/conftest.py            |   2 +-
 tests/utils/test_manifest.py |   4 +-
 5 files changed, 10 insertions(+), 349 deletions(-)

diff --git a/mkdocs/gen_doc_stubs.py b/mkdocs/gen_doc_stubs.py
index bd3b1281..a804d65d 100644
--- a/mkdocs/gen_doc_stubs.py
+++ b/mkdocs/gen_doc_stubs.py
@@ -17,8 +17,8 @@
 
 from pathlib import Path
 
-import griffe  # type: ignore
-import mkdocs_gen_files  # type: ignore
+import griffe
+import mkdocs_gen_files
 
 nav = mkdocs_gen_files.Nav()
 
diff --git a/pyiceberg/manifest.py b/pyiceberg/manifest.py
index 40163a18..3c211f5e 100644
--- a/pyiceberg/manifest.py
+++ b/pyiceberg/manifest.py
@@ -874,7 +874,11 @@ class ManifestFile(Record):
         return hash(self.manifest_path)
 
 
-@cached(cache=LRUCache(maxsize=128), key=lambda io, manifest_list: 
hashkey(manifest_list), lock=threading.RLock())
+# Global cache for manifest lists
+_manifest_cache: LRUCache[Any, Tuple[ManifestFile, ...]] = 
LRUCache(maxsize=128)
+
+
+@cached(cache=_manifest_cache, key=lambda io, manifest_list: 
hashkey(manifest_list), lock=threading.RLock())
 def _manifests(io: FileIO, manifest_list: str) -> Tuple[ManifestFile, ...]:
     """Read and cache manifests from the given manifest list, returning a 
tuple to prevent modification."""
     file = io.new_input(manifest_list)
diff --git a/pyproject.toml b/pyproject.toml
index e0fb73c0..ba5cc4b2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -119,178 +119,6 @@ mkdocs-material = "9.6.23"
 mkdocs-material-extensions = "1.3.1"
 mkdocs-section-index = "0.3.10"
 
-[[tool.mypy.overrides]]
-module = "pytest_mock.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyarrow.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "google.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pandas.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "snappy.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "zstandard.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pydantic.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pydantic_core.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pytest.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "fastavro.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "mmh3.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "hive_metastore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "thrift.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "requests_mock.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "click.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "rich.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "fsspec.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "s3fs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "azure.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "adlfs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "gcsfs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "packaging.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "tests.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "boto3"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "botocore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "mypy_boto3_glue.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "mypy_boto3_dynamodb.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "moto"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "aiobotocore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "aiohttp.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "duckdb.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "ray.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "daft.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyparsing.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyspark.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "strictyaml.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "sortedcontainers.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "sqlalchemy.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "Cython.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "setuptools.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "tenacity.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyiceberg_core.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "google.*"
-ignore_missing_imports = true
-
 [tool.poetry.scripts]
 pyiceberg = "pyiceberg.cli.console:run"
 
@@ -362,177 +190,6 @@ warn_unused_ignores = true
 disallow_any_generics = true
 disallow_untyped_defs = true
 implicit_reexport = false
-
-[[tool.mypy.overrides]]
-module = "pyarrow.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pandas.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "snappy.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "zstandard.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pydantic.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pydantic_core.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pytest.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "fastavro.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "mmh3.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "hive_metastore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "thrift.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "requests_mock.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "click.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "rich.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "fsspec.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "s3fs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "azure.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "adlfs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "gcsfs.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "huggingface_hub.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "packaging.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "tests.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "boto3"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "botocore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "mypy_boto3_glue.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "moto"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "aiobotocore.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "aiohttp.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "duckdb.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "ray.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "daft.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "bodo.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyparsing.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyspark.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "strictyaml.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "sortedcontainers.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "sqlalchemy.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "Cython.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "setuptools.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "tenacity.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "polars.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "datafusion.*"
-ignore_missing_imports = true
-
-[[tool.mypy.overrides]]
-module = "pyroaring.*"
 ignore_missing_imports = true
 
 [tool.coverage.run]
diff --git a/tests/conftest.py b/tests/conftest.py
index 9ac033d1..706baea3 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -97,7 +97,7 @@ from pyiceberg.utils.datetime import datetime_to_millis
 
 if TYPE_CHECKING:
     import pyarrow as pa
-    from moto.server import ThreadedMotoServer  # type: ignore
+    from moto.server import ThreadedMotoServer
     from pyspark.sql import SparkSession
 
     from pyiceberg.io.pyarrow import PyArrowFileIO
diff --git a/tests/utils/test_manifest.py b/tests/utils/test_manifest.py
index 51cbf06b..df2166fd 100644
--- a/tests/utils/test_manifest.py
+++ b/tests/utils/test_manifest.py
@@ -33,7 +33,7 @@ from pyiceberg.manifest import (
     ManifestEntryStatus,
     ManifestFile,
     PartitionFieldSummary,
-    _manifests,
+    _manifest_cache,
     read_manifest_list,
     write_manifest,
     write_manifest_list,
@@ -48,7 +48,7 @@ from pyiceberg.types import IntegerType, NestedField
 @pytest.fixture(autouse=True)
 def clear_global_manifests_cache() -> None:
     # Clear the global cache before each test
-    _manifests.cache_clear()
+    _manifest_cache.clear()
 
 
 def _verify_metadata_with_fastavro(avro_file: str, expected_metadata: 
Dict[str, str]) -> None:

Reply via email to