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: