diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index 1b8f08da07ea5..4037a9c7c6b4a 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -32,18 +32,6 @@ lib, reduction as libreduction, ) -from pandas._typing import ( - ArrayLike, - Axis, - AxisInt, - CorrelationMethod, - FillnaOptions, - IndexLabel, - Manager, - Manager2D, - SingleManager, - TakeIndexer, -) from pandas.errors import SpecificationError from pandas.util._decorators import ( Appender, @@ -96,6 +84,19 @@ from pandas.plotting import boxplot_frame_groupby if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + Axis, + AxisInt, + CorrelationMethod, + FillnaOptions, + IndexLabel, + Manager, + Manager2D, + SingleManager, + TakeIndexer, + ) + from pandas import Categorical from pandas.core.generic import NDFrame diff --git a/pandas/core/groupby/grouper.py b/pandas/core/groupby/grouper.py index 47d34e39bda6b..a6d5b59d7c5d0 100644 --- a/pandas/core/groupby/grouper.py +++ b/pandas/core/groupby/grouper.py @@ -17,12 +17,6 @@ from pandas._config import using_copy_on_write from pandas._libs import lib -from pandas._typing import ( - ArrayLike, - Axis, - NDFrameT, - npt, -) from pandas.errors import InvalidIndexError from pandas.util._decorators import cache_readonly from pandas.util._exceptions import find_stack_level @@ -52,6 +46,13 @@ from pandas.io.formats.printing import pprint_thing if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + Axis, + NDFrameT, + npt, + ) + from pandas.core.generic import NDFrame diff --git a/pandas/core/groupby/indexing.py b/pandas/core/groupby/indexing.py index 911ee0e8e4725..61e88565f8e33 100644 --- a/pandas/core/groupby/indexing.py +++ b/pandas/core/groupby/indexing.py @@ -9,7 +9,6 @@ import numpy as np -from pandas._typing import PositionalIndexer from pandas.util._decorators import ( cache_readonly, doc, @@ -21,6 +20,8 @@ ) if TYPE_CHECKING: + from pandas._typing import PositionalIndexer + from pandas import ( DataFrame, Series, diff --git a/pandas/core/groupby/numba_.py b/pandas/core/groupby/numba_.py index 282cb81e743f9..4d841228579ca 100644 --- a/pandas/core/groupby/numba_.py +++ b/pandas/core/groupby/numba_.py @@ -11,7 +11,6 @@ import numpy as np -from pandas._typing import Scalar from pandas.compat._optional import import_optional_dependency from pandas.core.util.numba_ import ( @@ -19,6 +18,9 @@ jit_user_function, ) +if TYPE_CHECKING: + from pandas._typing import Scalar + def validate_udf(func: Callable) -> None: """ diff --git a/pandas/core/indexers/utils.py b/pandas/core/indexers/utils.py index 0674831aaa6f3..d2f53af8ca1d9 100644 --- a/pandas/core/indexers/utils.py +++ b/pandas/core/indexers/utils.py @@ -10,8 +10,6 @@ import numpy as np -from pandas._typing import AnyArrayLike - from pandas.core.dtypes.common import ( is_array_like, is_bool_dtype, @@ -26,6 +24,8 @@ ) if TYPE_CHECKING: + from pandas._typing import AnyArrayLike + from pandas.core.frame import DataFrame from pandas.core.indexes.base import Index diff --git a/pandas/core/indexes/api.py b/pandas/core/indexes/api.py index fcf529f5be9ac..f880e1f10106d 100644 --- a/pandas/core/indexes/api.py +++ b/pandas/core/indexes/api.py @@ -1,7 +1,10 @@ from __future__ import annotations import textwrap -from typing import cast +from typing import ( + TYPE_CHECKING, + cast, +) import numpy as np @@ -9,7 +12,6 @@ NaT, lib, ) -from pandas._typing import Axis from pandas.errors import InvalidIndexError from pandas.core.dtypes.cast import find_common_type @@ -30,6 +32,8 @@ from pandas.core.indexes.range import RangeIndex from pandas.core.indexes.timedeltas import TimedeltaIndex +if TYPE_CHECKING: + from pandas._typing import Axis _sort_msg = textwrap.dedent( """\ Sorting because non-concatenation axis is not aligned. A future version diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 51ff92560fe5f..75ce22bd91f41 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -1,6 +1,7 @@ from __future__ import annotations from typing import ( + TYPE_CHECKING, Any, Hashable, ) @@ -8,11 +9,6 @@ import numpy as np from pandas._libs import index as libindex -from pandas._typing import ( - Dtype, - DtypeObj, - npt, -) from pandas.util._decorators import ( cache_readonly, doc, @@ -45,6 +41,12 @@ from pandas.io.formats.printing import pprint_thing +if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + DtypeObj, + npt, + ) _index_doc_kwargs: dict[str, str] = dict(ibase._index_doc_kwargs) _index_doc_kwargs.update({"target_klass": "CategoricalIndex"}) diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 9237423fb03b4..17fac22f578db 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -7,7 +7,6 @@ ABC, abstractmethod, ) -from datetime import datetime from typing import ( TYPE_CHECKING, Any, @@ -32,10 +31,6 @@ parsing, to_offset, ) -from pandas._typing import ( - Axis, - npt, -) from pandas.compat.numpy import function as nv from pandas.errors import NullFrequencyError from pandas.util._decorators import ( @@ -70,6 +65,13 @@ from pandas.core.tools.timedeltas import to_timedelta if TYPE_CHECKING: + from datetime import datetime + + from pandas._typing import ( + Axis, + npt, + ) + from pandas import CategoricalIndex _index_doc_kwargs = dict(ibase._index_doc_kwargs) diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index 096e501c7bd6e..11bb750e705f3 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -25,15 +25,6 @@ to_offset, ) from pandas._libs.tslibs.offsets import prefix_mapping -from pandas._typing import ( - Dtype, - DtypeObj, - Frequency, - IntervalClosedType, - TimeAmbiguous, - TimeNonexistent, - npt, -) from pandas.util._decorators import ( cache_readonly, doc, @@ -60,6 +51,16 @@ from pandas.core.tools.times import to_time if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + DtypeObj, + Frequency, + IntervalClosedType, + TimeAmbiguous, + TimeNonexistent, + npt, + ) + from pandas.core.api import ( DataFrame, PeriodIndex, diff --git a/pandas/core/indexes/extension.py b/pandas/core/indexes/extension.py index 81d502b60d609..8c8de96ad5b54 100644 --- a/pandas/core/indexes/extension.py +++ b/pandas/core/indexes/extension.py @@ -11,10 +11,6 @@ import numpy as np -from pandas._typing import ( - ArrayLike, - npt, -) from pandas.util._decorators import ( cache_readonly, doc, @@ -25,6 +21,11 @@ from pandas.core.indexes.base import Index if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + npt, + ) + from pandas.core.arrays import IntervalArray from pandas.core.arrays._mixins import NDArrayBackedExtensionArray diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 47a7e59ba0229..2daa990a1eb15 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -7,6 +7,7 @@ ) import textwrap from typing import ( + TYPE_CHECKING, Any, Hashable, Literal, @@ -26,12 +27,6 @@ Timestamp, to_offset, ) -from pandas._typing import ( - Dtype, - DtypeObj, - IntervalClosedType, - npt, -) from pandas.errors import InvalidIndexError from pandas.util._decorators import ( Appender, @@ -92,6 +87,13 @@ timedelta_range, ) +if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + DtypeObj, + IntervalClosedType, + npt, + ) _index_doc_kwargs = dict(ibase._index_doc_kwargs) _index_doc_kwargs.update( diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 2d4f0736e30fa..faa1e9658fa80 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -4,7 +4,10 @@ datetime, timedelta, ) -from typing import Hashable +from typing import ( + TYPE_CHECKING, + Hashable, +) import numpy as np @@ -16,11 +19,6 @@ Resolution, Tick, ) -from pandas._typing import ( - Dtype, - DtypeObj, - npt, -) from pandas.util._decorators import ( cache_readonly, doc, @@ -46,6 +44,12 @@ ) from pandas.core.indexes.extension import inherit_names +if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + DtypeObj, + npt, + ) _index_doc_kwargs = dict(ibase._index_doc_kwargs) _index_doc_kwargs.update({"target_klass": "PeriodIndex or list of Periods"}) _shared_doc_kwargs = { diff --git a/pandas/core/indexes/range.py b/pandas/core/indexes/range.py index 0be539a9c3216..48d826b6462fc 100644 --- a/pandas/core/indexes/range.py +++ b/pandas/core/indexes/range.py @@ -4,6 +4,7 @@ import operator from sys import getsizeof from typing import ( + TYPE_CHECKING, Any, Callable, Hashable, @@ -20,10 +21,6 @@ ) from pandas._libs.algos import unique_deltas from pandas._libs.lib import no_default -from pandas._typing import ( - Dtype, - npt, -) from pandas.compat.numpy import function as nv from pandas.util._decorators import ( cache_readonly, @@ -51,6 +48,11 @@ ) from pandas.core.ops.common import unpack_zerodim_and_defer +if TYPE_CHECKING: + from pandas._typing import ( + Dtype, + npt, + ) _empty_range = range(0) diff --git a/pandas/core/indexes/timedeltas.py b/pandas/core/indexes/timedeltas.py index e7ea54df62411..0afb928e7bddb 100644 --- a/pandas/core/indexes/timedeltas.py +++ b/pandas/core/indexes/timedeltas.py @@ -1,6 +1,8 @@ """ implement the TimedeltaIndex """ from __future__ import annotations +from typing import TYPE_CHECKING + from pandas._libs import ( index as libindex, lib, @@ -10,7 +12,6 @@ Timedelta, to_offset, ) -from pandas._typing import DtypeObj from pandas.core.dtypes.common import ( is_dtype_equal, @@ -28,6 +29,9 @@ from pandas.core.indexes.datetimelike import DatetimeTimedeltaMixin from pandas.core.indexes.extension import inherit_names +if TYPE_CHECKING: + from pandas._typing import DtypeObj + @inherit_names( ["__neg__", "__pos__", "__abs__", "total_seconds", "round", "floor", "ceil"] diff --git a/pandas/core/internals/api.py b/pandas/core/internals/api.py index 5e03621db2ad7..2080ed156ed62 100644 --- a/pandas/core/internals/api.py +++ b/pandas/core/internals/api.py @@ -8,10 +8,11 @@ """ from __future__ import annotations +from typing import TYPE_CHECKING + import numpy as np from pandas._libs.internals import BlockPlacement -from pandas._typing import Dtype from pandas.core.dtypes.common import ( is_datetime64tz_dtype, @@ -32,6 +33,9 @@ maybe_coerce_values, ) +if TYPE_CHECKING: + from pandas._typing import Dtype + def make_block( values, placement, klass=None, ndim=None, dtype: Dtype | None = None diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index d9eb78f6e9303..2de970466e19f 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -4,6 +4,7 @@ from __future__ import annotations from typing import ( + TYPE_CHECKING, Any, Callable, Hashable, @@ -18,13 +19,6 @@ algos as libalgos, lib, ) -from pandas._typing import ( - ArrayLike, - AxisInt, - DtypeObj, - QuantileInterpolation, - npt, -) from pandas.util._validators import validate_bool_kwarg from pandas.core.dtypes.astype import astype_array_safe @@ -93,6 +87,14 @@ to_native_types, ) +if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + AxisInt, + DtypeObj, + QuantileInterpolation, + npt, + ) T = TypeVar("T", bound="BaseArrayManager") diff --git a/pandas/core/internals/base.py b/pandas/core/internals/base.py index bb5d7e839a98c..7ed6863aa60c1 100644 --- a/pandas/core/internals/base.py +++ b/pandas/core/internals/base.py @@ -5,6 +5,7 @@ from __future__ import annotations from typing import ( + TYPE_CHECKING, Literal, TypeVar, final, @@ -12,12 +13,6 @@ import numpy as np -from pandas._typing import ( - ArrayLike, - AxisInt, - DtypeObj, - Shape, -) from pandas.errors import AbstractMethodError from pandas.core.dtypes.cast import ( @@ -31,6 +26,13 @@ default_index, ) +if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + AxisInt, + DtypeObj, + Shape, + ) T = TypeVar("T", bound="DataManager") diff --git a/pandas/core/internals/concat.py b/pandas/core/internals/concat.py index a33ce8fd5c459..cfa8b1de594a5 100644 --- a/pandas/core/internals/concat.py +++ b/pandas/core/internals/concat.py @@ -15,13 +15,6 @@ internals as libinternals, ) from pandas._libs.missing import NA -from pandas._typing import ( - ArrayLike, - AxisInt, - DtypeObj, - Manager, - Shape, -) from pandas.util._decorators import cache_readonly from pandas.core.dtypes.astype import astype_array @@ -64,6 +57,14 @@ from pandas.core.internals.managers import BlockManager if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + AxisInt, + DtypeObj, + Manager, + Shape, + ) + from pandas import Index from pandas.core.internals.blocks import Block diff --git a/pandas/core/internals/construction.py b/pandas/core/internals/construction.py index ce14145e18f06..f2d216d834b59 100644 --- a/pandas/core/internals/construction.py +++ b/pandas/core/internals/construction.py @@ -6,6 +6,7 @@ from collections import abc from typing import ( + TYPE_CHECKING, Any, Hashable, Sequence, @@ -15,12 +16,6 @@ from numpy import ma from pandas._libs import lib -from pandas._typing import ( - ArrayLike, - DtypeObj, - Manager, - npt, -) from pandas.core.dtypes.cast import ( construct_1d_arraylike_from_scalar, @@ -89,6 +84,13 @@ create_block_manager_from_column_arrays, ) +if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + DtypeObj, + Manager, + npt, + ) # --------------------------------------------------------------------- # BlockManager Interface diff --git a/pandas/core/internals/managers.py b/pandas/core/internals/managers.py index 4f064d161e447..500d79b1a0de7 100644 --- a/pandas/core/internals/managers.py +++ b/pandas/core/internals/managers.py @@ -2,6 +2,7 @@ import itertools from typing import ( + TYPE_CHECKING, Any, Callable, Hashable, @@ -23,15 +24,6 @@ lib, ) from pandas._libs.internals import BlockPlacement -from pandas._typing import ( - ArrayLike, - AxisInt, - DtypeObj, - QuantileInterpolation, - Shape, - npt, - type_t, -) from pandas.errors import PerformanceWarning from pandas.util._decorators import cache_readonly from pandas.util._exceptions import find_stack_level @@ -86,6 +78,16 @@ operate_blockwise, ) +if TYPE_CHECKING: + from pandas._typing import ( + ArrayLike, + AxisInt, + DtypeObj, + QuantileInterpolation, + Shape, + npt, + type_t, + ) T = TypeVar("T", bound="BaseBlockManager") diff --git a/pandas/core/internals/ops.py b/pandas/core/internals/ops.py index 24fc51a96d9df..2b2cc1bb57b22 100644 --- a/pandas/core/internals/ops.py +++ b/pandas/core/internals/ops.py @@ -6,10 +6,9 @@ NamedTuple, ) -from pandas._typing import ArrayLike - if TYPE_CHECKING: from pandas._libs.internals import BlockPlacement + from pandas._typing import ArrayLike from pandas.core.internals.blocks import Block from pandas.core.internals.managers import BlockManager diff --git a/pandas/core/methods/selectn.py b/pandas/core/methods/selectn.py index 241d55aa663f7..56dd9fa7658bc 100644 --- a/pandas/core/methods/selectn.py +++ b/pandas/core/methods/selectn.py @@ -15,10 +15,6 @@ import numpy as np from pandas._libs import algos as libalgos -from pandas._typing import ( - DtypeObj, - IndexLabel, -) from pandas.core.dtypes.common import ( is_bool_dtype, @@ -31,6 +27,11 @@ from pandas.core.dtypes.dtypes import BaseMaskedDtype if TYPE_CHECKING: + from pandas._typing import ( + DtypeObj, + IndexLabel, + ) + from pandas import ( DataFrame, Series, diff --git a/pandas/core/methods/to_dict.py b/pandas/core/methods/to_dict.py index f1cca4fd7ac50..5614b612660b9 100644 --- a/pandas/core/methods/to_dict.py +++ b/pandas/core/methods/to_dict.py @@ -1,6 +1,9 @@ from __future__ import annotations -from typing import Literal +from typing import ( + TYPE_CHECKING, + Literal, +) import warnings from pandas.util._exceptions import find_stack_level @@ -11,9 +14,11 @@ is_object_dtype, ) -from pandas import DataFrame from pandas.core import common as com +if TYPE_CHECKING: + from pandas import DataFrame + def to_dict( df: DataFrame, diff --git a/pyproject.toml b/pyproject.toml index b7e4a3cf2416f..edcf6384c432b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -293,11 +293,6 @@ exclude = [ # TCH to be enabled gradually "pandas/core/arrays/*" = ["TCH"] "pandas/core/io/*" = ["TCH"] -"pandas/core/indexers/*" = ["TCH"] -"pandas/core/indexes/*" = ["TCH"] -"pandas/core/internals/*" = ["TCH"] -"pandas/core/groupby/*" = ["TCH"] -"pandas/core/methods/*" = ["TCH"] "pandas/core/array_algos/*" = ["TCH"] "pandas/core/dtypes/*" = ["TCH"] "pandas/core/generic.py" = ["TCH"]