diff --git a/changelog/7203.internal.rst b/changelog/7203.internal.rst new file mode 100644 index 0000000000..95e395c385 --- /dev/null +++ b/changelog/7203.internal.rst @@ -0,0 +1 @@ +:user:`bouweandela` enabled [Ruff type checking (TC) rules](https://docs.astral.sh/ruff/rules/#flake8-type-checking-tc). diff --git a/lib/iris/_lazy_data.py b/lib/iris/_lazy_data.py index 26efb106fc..1a4eb565c9 100644 --- a/lib/iris/_lazy_data.py +++ b/lib/iris/_lazy_data.py @@ -9,8 +9,7 @@ """ from functools import lru_cache, partial, wraps -from types import ModuleType -from typing import Sequence +from typing import TYPE_CHECKING, Sequence import dask import dask.array as da @@ -21,6 +20,9 @@ import iris.exceptions +if TYPE_CHECKING: + from types import ModuleType + MAX_CACHE_SIZE = 100 """Maximum number of Dask arrays to cache.""" diff --git a/lib/iris/analysis/__init__.py b/lib/iris/analysis/__init__.py index ca0d01d728..8e68683b2d 100644 --- a/lib/iris/analysis/__init__.py +++ b/lib/iris/analysis/__init__.py @@ -45,8 +45,7 @@ from functools import wraps from inspect import getfullargspec import itertools -from numbers import Number -from typing import Optional, Protocol, Union +from typing import TYPE_CHECKING, Optional, Protocol, Union import warnings from cf_units import Unit @@ -65,6 +64,9 @@ from iris.exceptions import LazyAggregatorError import iris.util +if TYPE_CHECKING: + from numbers import Number + __all__ = ( "Aggregator", "AreaWeighted", diff --git a/lib/iris/common/metadata.py b/lib/iris/common/metadata.py index 5058cfbb69..7d56c6f684 100644 --- a/lib/iris/common/metadata.py +++ b/lib/iris/common/metadata.py @@ -20,12 +20,13 @@ import re from typing import TYPE_CHECKING, Any -import cf_units import numpy as np import numpy.ma as ma from xxhash import xxh64_hexdigest if TYPE_CHECKING: + import cf_units + from iris.common.mixin import CFVariableMixin from iris.coords import CellMethod from iris.util import Axis diff --git a/lib/iris/cube.py b/lib/iris/cube.py index 6653018055..c641c7f71a 100644 --- a/lib/iris/cube.py +++ b/lib/iris/cube.py @@ -31,7 +31,6 @@ from xml.dom.minidom import Document from cf_units import Unit -import dask.array as da import numpy as np import numpy.ma as ma from packaging.version import Version @@ -45,7 +44,6 @@ from iris.analysis.cartography import wrap_lons import iris.analysis.maths import iris.aux_factory -from iris.aux_factory import AuxCoordFactory from iris.common import CFVariableMixin, CubeMetadata, metadata_manager_factory from iris.common.metadata import BaseMetadata, CoordMetadata, metadata_filter from iris.common.mixin import LimitedAttributeDict @@ -61,10 +59,10 @@ ) if TYPE_CHECKING: - from typing import TYPE_CHECKING - + import dask.array as da from numpy.typing import ArrayLike + from iris.aux_factory import AuxCoordFactory import iris.mesh from iris.mesh import MeshCoord import iris.exceptions diff --git a/lib/iris/fileformats/netcdf/saver.py b/lib/iris/fileformats/netcdf/saver.py index 9655089d81..e3a820695c 100644 --- a/lib/iris/fileformats/netcdf/saver.py +++ b/lib/iris/fileformats/netcdf/saver.py @@ -66,7 +66,12 @@ if TYPE_CHECKING: from iris.cube import Cube - from iris.mesh.components import MeshXY + from iris.mesh.components import ( + MeshEdgeCoords, + MeshFaceCoords, + MeshNodeCoords, + MeshXY, + ) # Get the logger : shared logger for all in 'iris.fileformats.netcdf'. from . import logger @@ -990,13 +995,6 @@ def _add_aux_coords( NetCDF data compression keyword arguments. """ - from iris.mesh.components import ( - MeshEdgeCoords, - MeshFaceCoords, - MeshNodeCoords, - MeshXY, - ) - # Exclude any mesh coords, which are bundled in with the aux-coords. coords_to_add = [ coord for coord in cube.aux_coords if not hasattr(coord, "mesh") diff --git a/lib/iris/mesh/utils.py b/lib/iris/mesh/utils.py index eebfcb9ae1..61d3d55482 100644 --- a/lib/iris/mesh/utils.py +++ b/lib/iris/mesh/utils.py @@ -12,14 +12,16 @@ """ from collections.abc import Sequence -from typing import Union +from typing import TYPE_CHECKING, Union import dask.array as da import numpy as np -from iris.common.metadata import CoordMetadata from iris.cube import Cube +if TYPE_CHECKING: + from iris.common.metadata import CoordMetadata + def recombine_submeshes( mesh_cube: Cube, diff --git a/lib/iris/tests/stock/__init__.py b/lib/iris/tests/stock/__init__.py index f83d168468..3f639ce35a 100644 --- a/lib/iris/tests/stock/__init__.py +++ b/lib/iris/tests/stock/__init__.py @@ -8,9 +8,8 @@ from datetime import datetime from pathlib import Path -from typing import NamedTuple +from typing import TYPE_CHECKING, NamedTuple -from cartopy.crs import CRS from cf_units import Unit import numpy as np import numpy.ma as ma @@ -30,6 +29,9 @@ sample_2d_latlons, ) +if TYPE_CHECKING: + from cartopy.crs import CRS + def lat_lon_cube(): """Returns a cube with a latitude and longitude suitable for testing diff --git a/pyproject.toml b/pyproject.toml index bf5214ed2c..6b8b7f6512 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -329,10 +329,6 @@ ignore = [ # https://docs.astral.sh/ruff/rules/#flake8-tidy-imports-tid "TID", - # flake8-type-checking (TCH) - # https://docs.astral.sh/ruff/rules/#flake8-type-checking-tch - "TCH", - # flake8-unused-arguments (ARG) # https://docs.astral.sh/ruff/rules/#flake8-unused-arguments-arg "ARG",