diff --git a/pandas/core/arrays/_ranges.py b/pandas/core/arrays/_ranges.py index c93fc94685358..f2582cd6f2e58 100644 --- a/pandas/core/arrays/_ranges.py +++ b/pandas/core/arrays/_ranges.py @@ -4,6 +4,8 @@ """ from __future__ import annotations +from typing import TYPE_CHECKING + import numpy as np from pandas._libs.lib import i8max @@ -14,7 +16,9 @@ Timestamp, iNaT, ) -from pandas._typing import npt + +if TYPE_CHECKING: + from pandas._typing import npt def generate_regular_range( diff --git a/pandas/core/arrays/arrow/dtype.py b/pandas/core/arrays/arrow/dtype.py index 2ba0711de98f9..2c719c0405e14 100644 --- a/pandas/core/arrays/arrow/dtype.py +++ b/pandas/core/arrays/arrow/dtype.py @@ -8,6 +8,7 @@ ) from decimal import Decimal import re +from typing import TYPE_CHECKING import numpy as np @@ -15,11 +16,6 @@ Timedelta, Timestamp, ) -from pandas._typing import ( - TYPE_CHECKING, - DtypeObj, - type_t, -) from pandas.compat import pa_version_under7p0 from pandas.util._decorators import cache_readonly @@ -33,6 +29,11 @@ import pyarrow as pa if TYPE_CHECKING: + from pandas._typing import ( + DtypeObj, + type_t, + ) + from pandas.core.arrays.arrow import ArrowExtensionArray diff --git a/pandas/core/arrays/arrow/extension_types.py b/pandas/core/arrays/arrow/extension_types.py index 25f597af5e3cf..05b70afc2e24c 100644 --- a/pandas/core/arrays/arrow/extension_types.py +++ b/pandas/core/arrays/arrow/extension_types.py @@ -1,13 +1,15 @@ from __future__ import annotations import json +from typing import TYPE_CHECKING import pyarrow -from pandas._typing import IntervalClosedType - from pandas.core.arrays.interval import VALID_CLOSED +if TYPE_CHECKING: + from pandas._typing import IntervalClosedType + class ArrowPeriodType(pyarrow.ExtensionType): def __init__(self, freq) -> None: diff --git a/pandas/core/arrays/base.py b/pandas/core/arrays/base.py index 1a082a7579dc3..4adc09be2f09d 100644 --- a/pandas/core/arrays/base.py +++ b/pandas/core/arrays/base.py @@ -25,20 +25,6 @@ import numpy as np from pandas._libs import lib -from pandas._typing import ( - ArrayLike, - AstypeArg, - AxisInt, - Dtype, - FillnaOptions, - PositionalIndexer, - ScalarIndexer, - SequenceIndexer, - Shape, - SortKind, - TakeIndexer, - npt, -) from pandas.compat import set_function_name from pandas.compat.numpy import function as nv from pandas.errors import AbstractMethodError @@ -90,8 +76,20 @@ if TYPE_CHECKING: from pandas._typing import ( + ArrayLike, + AstypeArg, + AxisInt, + Dtype, + FillnaOptions, NumpySorter, NumpyValueArrayLike, + PositionalIndexer, + ScalarIndexer, + SequenceIndexer, + Shape, + SortKind, + TakeIndexer, + npt, ) _extension_array_shared_docs: dict[str, str] = {} diff --git a/pandas/core/arrays/boolean.py b/pandas/core/arrays/boolean.py index 2dba557eda169..54bd4220bc060 100644 --- a/pandas/core/arrays/boolean.py +++ b/pandas/core/arrays/boolean.py @@ -12,11 +12,6 @@ lib, missing as libmissing, ) -from pandas._typing import ( - Dtype, - DtypeObj, - type_t, -) from pandas.core.dtypes.common import ( is_list_like, @@ -35,7 +30,12 @@ if TYPE_CHECKING: import pyarrow - from pandas._typing import npt + from pandas._typing import ( + Dtype, + DtypeObj, + npt, + type_t, + ) @register_extension_dtype diff --git a/pandas/core/arrays/categorical.py b/pandas/core/arrays/categorical.py index be6c8493963ea..3a8ea009962e3 100644 --- a/pandas/core/arrays/categorical.py +++ b/pandas/core/arrays/categorical.py @@ -25,18 +25,6 @@ lib, ) from pandas._libs.arrays import NDArrayBacked -from pandas._typing import ( - ArrayLike, - AstypeArg, - AxisInt, - Dtype, - NpDtype, - Ordered, - Shape, - SortKind, - npt, - type_t, -) from pandas.compat.numpy import function as nv from pandas.util._validators import validate_bool_kwarg @@ -109,6 +97,19 @@ from pandas.io.formats import console if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + AstypeArg, + AxisInt, + Dtype, + NpDtype, + Ordered, + Shape, + SortKind, + npt, + type_t, + ) + from pandas import ( DataFrame, Index, diff --git a/pandas/core/arrays/datetimes.py b/pandas/core/arrays/datetimes.py index 1624870705b8f..2a014e3b1b49c 100644 --- a/pandas/core/arrays/datetimes.py +++ b/pandas/core/arrays/datetimes.py @@ -42,13 +42,6 @@ tzconversion, ) from pandas._libs.tslibs.dtypes import abbrev_to_npy_unit -from pandas._typing import ( - DateTimeErrorChoices, - IntervalClosedType, - TimeAmbiguous, - TimeNonexistent, - npt, -) from pandas.errors import PerformanceWarning from pandas.util._exceptions import find_stack_level from pandas.util._validators import validate_inclusive @@ -87,6 +80,14 @@ ) if TYPE_CHECKING: + from pandas._typing import ( + DateTimeErrorChoices, + IntervalClosedType, + TimeAmbiguous, + TimeNonexistent, + npt, + ) + from pandas import DataFrame from pandas.core.arrays import PeriodArray diff --git a/pandas/core/arrays/numeric.py b/pandas/core/arrays/numeric.py index 2d9a3ae63259d..d5fd759adc202 100644 --- a/pandas/core/arrays/numeric.py +++ b/pandas/core/arrays/numeric.py @@ -15,11 +15,6 @@ lib, missing as libmissing, ) -from pandas._typing import ( - Dtype, - DtypeObj, - npt, -) from pandas.errors import AbstractMethodError from pandas.util._decorators import cache_readonly @@ -40,6 +35,12 @@ if TYPE_CHECKING: import pyarrow + from pandas._typing import ( + Dtype, + DtypeObj, + npt, + ) + T = TypeVar("T", bound="NumericArray") diff --git a/pandas/core/arrays/numpy_.py b/pandas/core/arrays/numpy_.py index 4effe97f2f04f..c97305e65e38b 100644 --- a/pandas/core/arrays/numpy_.py +++ b/pandas/core/arrays/numpy_.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING + import numpy as np from pandas._libs import lib @@ -7,13 +9,6 @@ get_unit_from_dtype, is_supported_unit, ) -from pandas._typing import ( - AxisInt, - Dtype, - NpDtype, - Scalar, - npt, -) from pandas.compat.numpy import function as nv from pandas.core.dtypes.astype import astype_array @@ -35,6 +30,15 @@ from pandas.core.construction import ensure_wrapped_if_datetimelike from pandas.core.strings.object_array import ObjectStringArrayMixin +if TYPE_CHECKING: + from pandas._typing import ( + AxisInt, + Dtype, + NpDtype, + Scalar, + npt, + ) + class PandasArray( OpsMixin, diff --git a/pandas/core/arrays/period.py b/pandas/core/arrays/period.py index afb6f02b1cd4a..64ce896077fc1 100644 --- a/pandas/core/arrays/period.py +++ b/pandas/core/arrays/period.py @@ -45,12 +45,6 @@ get_period_field_arr, period_asfreq_arr, ) -from pandas._typing import ( - AnyArrayLike, - Dtype, - NpDtype, - npt, -) from pandas.util._decorators import ( cache_readonly, doc, @@ -81,8 +75,12 @@ if TYPE_CHECKING: from pandas._typing import ( + AnyArrayLike, + Dtype, + NpDtype, NumpySorter, NumpyValueArrayLike, + npt, ) from pandas.core.arrays import ( diff --git a/pandas/core/arrays/sparse/array.py b/pandas/core/arrays/sparse/array.py index 78153890745d7..8c99f8d0b329a 100644 --- a/pandas/core/arrays/sparse/array.py +++ b/pandas/core/arrays/sparse/array.py @@ -28,19 +28,6 @@ SparseIndex, ) from pandas._libs.tslibs import NaT -from pandas._typing import ( - ArrayLike, - AstypeArg, - Axis, - AxisInt, - Dtype, - NpDtype, - PositionalIndexer, - Scalar, - ScalarIndexer, - SequenceIndexer, - npt, -) from pandas.compat.numpy import function as nv from pandas.errors import PerformanceWarning from pandas.util._exceptions import find_stack_level @@ -117,6 +104,20 @@ class ellipsis(Enum): SparseIndexKind = Literal["integer", "block"] + from pandas._typing import ( + ArrayLike, + AstypeArg, + Axis, + AxisInt, + Dtype, + NpDtype, + PositionalIndexer, + Scalar, + ScalarIndexer, + SequenceIndexer, + npt, + ) + from pandas import Series else: diff --git a/pandas/core/arrays/sparse/dtype.py b/pandas/core/arrays/sparse/dtype.py index c7a44d3606fa6..dadd161ceeb38 100644 --- a/pandas/core/arrays/sparse/dtype.py +++ b/pandas/core/arrays/sparse/dtype.py @@ -10,11 +10,6 @@ import numpy as np -from pandas._typing import ( - Dtype, - DtypeObj, - type_t, -) from pandas.errors import PerformanceWarning from pandas.util._exceptions import find_stack_level @@ -36,6 +31,12 @@ ) if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + DtypeObj, + type_t, + ) + from pandas.core.arrays.sparse.array import SparseArray diff --git a/pandas/core/arrays/sparse/scipy_sparse.py b/pandas/core/arrays/sparse/scipy_sparse.py index 723449dfcd4a3..1d190ad1919b3 100644 --- a/pandas/core/arrays/sparse/scipy_sparse.py +++ b/pandas/core/arrays/sparse/scipy_sparse.py @@ -10,13 +10,7 @@ Iterable, ) -import numpy as np - from pandas._libs import lib -from pandas._typing import ( - IndexLabel, - npt, -) from pandas.core.dtypes.missing import notna @@ -25,8 +19,14 @@ from pandas.core.series import Series if TYPE_CHECKING: + import numpy as np import scipy.sparse + from pandas._typing import ( + IndexLabel, + npt, + ) + def _check_is_partition(parts: Iterable, whole: Iterable): whole = set(whole) diff --git a/pandas/core/arrays/string_.py b/pandas/core/arrays/string_.py index 30b18bac7b73b..89f44de3386c7 100644 --- a/pandas/core/arrays/string_.py +++ b/pandas/core/arrays/string_.py @@ -14,13 +14,6 @@ missing as libmissing, ) from pandas._libs.arrays import NDArrayBacked -from pandas._typing import ( - AxisInt, - Dtype, - Scalar, - npt, - type_t, -) from pandas.compat import pa_version_under7p0 from pandas.compat.numpy import function as nv from pandas.util._decorators import doc @@ -58,8 +51,13 @@ import pyarrow from pandas._typing import ( + AxisInt, + Dtype, NumpySorter, NumpyValueArrayLike, + Scalar, + npt, + type_t, ) from pandas import Series diff --git a/pandas/core/arrays/string_arrow.py b/pandas/core/arrays/string_arrow.py index 2086a93ea6e14..d5c1f98e63f14 100644 --- a/pandas/core/arrays/string_arrow.py +++ b/pandas/core/arrays/string_arrow.py @@ -2,6 +2,7 @@ import re from typing import ( + TYPE_CHECKING, Callable, Union, ) @@ -13,11 +14,6 @@ lib, missing as libmissing, ) -from pandas._typing import ( - Dtype, - Scalar, - npt, -) from pandas.compat import pa_version_under7p0 from pandas.util._exceptions import find_stack_level @@ -48,6 +44,15 @@ from pandas.core.arrays.arrow._arrow_utils import fallback_performancewarning + +if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + Scalar, + npt, + ) + + ArrowStringScalarOrNAT = Union[str, libmissing.NAType] diff --git a/pandas/core/arrays/timedeltas.py b/pandas/core/arrays/timedeltas.py index 329d6a937728a..179de3925e371 100644 --- a/pandas/core/arrays/timedeltas.py +++ b/pandas/core/arrays/timedeltas.py @@ -39,13 +39,6 @@ parse_timedelta_unit, truediv_object_array, ) -from pandas._typing import ( - AxisInt, - DateTimeErrorChoices, - DtypeObj, - NpDtype, - npt, -) from pandas.compat.numpy import function as nv from pandas.util._validators import validate_endpoints @@ -74,6 +67,14 @@ from pandas.core.ops.common import unpack_zerodim_and_defer if TYPE_CHECKING: + from pandas._typing import ( + AxisInt, + DateTimeErrorChoices, + DtypeObj, + NpDtype, + npt, + ) + from pandas import DataFrame diff --git a/pyproject.toml b/pyproject.toml index 8fff3e6990470..87424c3e1a763 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -293,7 +293,6 @@ exclude = [ # to be enabled gradually "pandas/core/*" = ["PLR5501"] # TCH to be enabled gradually -"pandas/core/arrays/*" = ["TCH"] "pandas/core/nanops.py" = ["TCH"] "pandas/_libs/*" = ["TCH"] # Keep this one enabled