Skip to content

Commit 86f821b

Browse files
jbrockmendelproost
authored andcommitted
DEPR: pandas.core.index (pandas-dev#30193)
1 parent 967b175 commit 86f821b

33 files changed

+68
-46
lines changed

doc/source/user_guide/io.rst

+1
Original file line numberDiff line numberDiff line change
@@ -4683,6 +4683,7 @@ See the documentation for `pyarrow <https://arrow.apache.org/docs/python/>`__ an
46834683
Write to a parquet file.
46844684

46854685
.. ipython:: python
4686+
:okwarning:
46864687
46874688
df.to_parquet('example_pa.parquet', engine='pyarrow')
46884689
df.to_parquet('example_fp.parquet', engine='fastparquet')

doc/source/whatsnew/v1.0.0.rst

+4-1
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,8 @@ Optional libraries below the lowest tested version may still work, but are not c
433433
+-----------------+-----------------+---------+
434434
| pytables | 3.4.2 | |
435435
+-----------------+-----------------+---------+
436+
| s3fs | 0.3.0 | X |
437+
+-----------------+-----------------+---------+
436438
| scipy | 0.19.0 | |
437439
+-----------------+-----------------+---------+
438440
| sqlalchemy | 1.1.4 | |
@@ -454,7 +456,7 @@ See :ref:`install.dependencies` and :ref:`install.optional_dependencies` for mor
454456
Other API changes
455457
^^^^^^^^^^^^^^^^^
456458

457-
- Bumpded the minimum supported version of ``s3fs`` from 0.0.8 to 0.3.0 (:issue:`28616`)
459+
- Bumped the minimum supported version of ``s3fs`` from 0.0.8 to 0.3.0 (:issue:`28616`)
458460
- :class:`pandas.core.groupby.GroupBy.transform` now raises on invalid operation names (:issue:`27489`)
459461
- :meth:`pandas.api.types.infer_dtype` will now return "integer-na" for integer and ``np.nan`` mix (:issue:`27283`)
460462
- :meth:`MultiIndex.from_arrays` will no longer infer names from arrays if ``names=None`` is explicitly provided (:issue:`27292`)
@@ -492,6 +494,7 @@ Deprecations
492494
- :meth:`Categorical.take_nd` is deprecated, use :meth:`Categorical.take` instead (:issue:`27745`)
493495
- The parameter ``numeric_only`` of :meth:`Categorical.min` and :meth:`Categorical.max` is deprecated and replaced with ``skipna`` (:issue:`25303`)
494496
- The parameter ``label`` in :func:`lreshape` has been deprecated and will be removed in a future version (:issue:`29742`)
497+
- ``pandas.core.index`` has been deprecated and will be removed in a future version, the public classes are available in the top-level namespace (:issue:`19711`)
495498
-
496499

497500
.. _whatsnew_1000.prior_deprecations:

pandas/_libs/internals.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ cdef class BlockPlacement:
9696
return self._as_array
9797

9898
def isin(self, arr):
99-
from pandas.core.index import Int64Index
99+
from pandas.core.indexes.api import Int64Index
100100
return Int64Index(self.as_array, copy=False).isin(arr)
101101

102102
@property

pandas/_libs/lib.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ def astype_str(arr: ndarray, skipna: bool=False) -> ndarray[object]:
598598
@cython.boundscheck(False)
599599
def clean_index_list(obj: list):
600600
"""
601-
Utility used in ``pandas.core.index.ensure_index``.
601+
Utility used in ``pandas.core.indexes.api.ensure_index``.
602602
"""
603603
cdef:
604604
Py_ssize_t i, n = len(obj)

pandas/core/api.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import numpy as np
44

5+
from pandas._libs import NaT, Period, Timedelta, Timestamp
6+
from pandas._libs.missing import NA
7+
58
from pandas.core.dtypes.dtypes import (
69
CategoricalDtype,
710
DatetimeTZDtype,
@@ -26,24 +29,23 @@
2629
from pandas.core.arrays.string_ import StringDtype
2730
from pandas.core.construction import array
2831
from pandas.core.groupby import Grouper, NamedAgg
29-
from pandas.core.index import (
32+
from pandas.core.indexes.api import (
3033
CategoricalIndex,
3134
DatetimeIndex,
3235
Float64Index,
3336
Index,
3437
Int64Index,
3538
IntervalIndex,
3639
MultiIndex,
37-
NaT,
3840
PeriodIndex,
3941
RangeIndex,
4042
TimedeltaIndex,
4143
UInt64Index,
4244
)
43-
from pandas.core.indexes.datetimes import Timestamp, bdate_range, date_range
45+
from pandas.core.indexes.datetimes import bdate_range, date_range
4446
from pandas.core.indexes.interval import Interval, interval_range
45-
from pandas.core.indexes.period import Period, period_range
46-
from pandas.core.indexes.timedeltas import Timedelta, timedelta_range
47+
from pandas.core.indexes.period import period_range
48+
from pandas.core.indexes.timedeltas import timedelta_range
4749
from pandas.core.indexing import IndexSlice
4850
from pandas.core.series import Series
4951
from pandas.core.tools.datetimes import to_datetime
@@ -55,5 +57,3 @@
5557

5658
# DataFrame needs to be imported after NamedAgg to avoid a circular import
5759
from pandas.core.frame import DataFrame # isort:skip
58-
59-
from pandas._libs.missing import NA

pandas/core/arrays/sparse/scipy_sparse.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"""
66
from collections import OrderedDict
77

8-
from pandas.core.index import Index, MultiIndex
8+
from pandas.core.indexes.api import Index, MultiIndex
99
from pandas.core.series import Series
1010

1111

pandas/core/construction.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949

5050
if TYPE_CHECKING:
5151
from pandas.core.series import Series # noqa: F401
52-
from pandas.core.index import Index # noqa: F401
52+
from pandas.core.indexes.api import Index # noqa: F401
5353

5454

5555
def array(

pandas/core/frame.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@
9393
from pandas.core.arrays.datetimelike import DatetimeLikeArrayMixin as DatetimeLikeArray
9494
from pandas.core.arrays.sparse import SparseFrameAccessor
9595
from pandas.core.generic import NDFrame, _shared_docs
96-
from pandas.core.index import Index, ensure_index, ensure_index_from_sequences
9796
from pandas.core.indexes import base as ibase
97+
from pandas.core.indexes.api import Index, ensure_index, ensure_index_from_sequences
9898
from pandas.core.indexes.datetimes import DatetimeIndex
9999
from pandas.core.indexes.multi import maybe_droplevels
100100
from pandas.core.indexes.period import PeriodIndex

pandas/core/generic.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
from pandas.core.base import PandasObject, SelectionMixin
7474
import pandas.core.common as com
7575
from pandas.core.construction import create_series_with_explicit_dtype
76-
from pandas.core.index import (
76+
from pandas.core.indexes.api import (
7777
Index,
7878
InvalidIndexError,
7979
MultiIndex,

pandas/core/groupby/groupby.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class providing the base-class of operations.
5959
from pandas.core.frame import DataFrame
6060
from pandas.core.generic import NDFrame
6161
from pandas.core.groupby import base, ops
62-
from pandas.core.index import CategoricalIndex, Index, MultiIndex
62+
from pandas.core.indexes.api import CategoricalIndex, Index, MultiIndex
6363
from pandas.core.series import Series
6464
from pandas.core.sorting import get_group_index_sorter
6565

pandas/core/groupby/grouper.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from pandas.core.frame import DataFrame
2727
from pandas.core.groupby import ops
2828
from pandas.core.groupby.categorical import recode_for_groupby, recode_from_groupby
29-
from pandas.core.index import CategoricalIndex, Index, MultiIndex
29+
from pandas.core.indexes.api import CategoricalIndex, Index, MultiIndex
3030
from pandas.core.series import Series
3131

3232
from pandas.io.formats.printing import pprint_thing

pandas/core/groupby/ops.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
from pandas.core.frame import DataFrame
4444
from pandas.core.generic import NDFrame
4545
from pandas.core.groupby import base, grouper
46-
from pandas.core.index import Index, MultiIndex, ensure_index
46+
from pandas.core.indexes.api import Index, MultiIndex, ensure_index
4747
from pandas.core.series import Series
4848
from pandas.core.sorting import (
4949
compress_group_index,

pandas/core/index.py

+9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import warnings
2+
13
from pandas.core.indexes.api import ( # noqa:F401
24
CategoricalIndex,
35
DatetimeIndex,
@@ -19,3 +21,10 @@
1921
get_objs_combined_axis,
2022
)
2123
from pandas.core.indexes.multi import _sparsify # noqa:F401
24+
25+
# GH#30193
26+
warnings.warn(
27+
"pandas.core.index is deprecated and will be removed in a future version. "
28+
"The public classes are available in the top-level namespace.",
29+
FutureWarning,
30+
)

pandas/core/indexes/api.py

-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
)
3838

3939

40-
# TODO: there are many places that rely on these private methods existing in
41-
# pandas.core.index
4240
__all__ = [
4341
"Index",
4442
"MultiIndex",

pandas/core/indexes/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5462,6 +5462,6 @@ def _validate_join_method(method):
54625462

54635463

54645464
def default_index(n):
5465-
from pandas.core.index import RangeIndex
5465+
from pandas.core.indexes.range import RangeIndex
54665466

54675467
return RangeIndex(0, n, name=None)

pandas/core/indexing.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
from pandas.core.dtypes.missing import _infer_fill_value, isna
2323

2424
import pandas.core.common as com
25-
from pandas.core.index import Index, InvalidIndexError
2625
from pandas.core.indexers import is_list_like_indexer, length_of_indexer
26+
from pandas.core.indexes.api import Index, InvalidIndexError
2727

2828

2929
# the supported indexers

pandas/core/internals/construction.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,13 @@
3737
from pandas.core import algorithms, common as com
3838
from pandas.core.arrays import Categorical
3939
from pandas.core.construction import sanitize_array
40-
from pandas.core.index import Index, ensure_index, get_objs_combined_axis
4140
from pandas.core.indexes import base as ibase
42-
from pandas.core.indexes.api import union_indexes
41+
from pandas.core.indexes.api import (
42+
Index,
43+
ensure_index,
44+
get_objs_combined_axis,
45+
union_indexes,
46+
)
4347
from pandas.core.internals import (
4448
create_block_manager_from_arrays,
4549
create_block_manager_from_blocks,

pandas/core/internals/managers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232

3333
import pandas.core.algorithms as algos
3434
from pandas.core.base import PandasObject
35-
from pandas.core.index import Index, MultiIndex, ensure_index
3635
from pandas.core.indexers import maybe_convert_indices
36+
from pandas.core.indexes.api import Index, MultiIndex, ensure_index
3737

3838
from pandas.io.formats.printing import pprint_thing
3939

pandas/core/reshape/pivot.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import pandas.core.common as com
1212
from pandas.core.frame import _shared_docs
1313
from pandas.core.groupby import Grouper
14-
from pandas.core.index import Index, MultiIndex, get_objs_combined_axis
14+
from pandas.core.indexes.api import Index, MultiIndex, get_objs_combined_axis
1515
from pandas.core.reshape.concat import concat
1616
from pandas.core.reshape.util import cartesian_product
1717
from pandas.core.series import Series

pandas/core/reshape/reshape.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from pandas.core.arrays.categorical import factorize_from_iterable
2626
from pandas.core.construction import extract_array
2727
from pandas.core.frame import DataFrame
28-
from pandas.core.index import Index, MultiIndex
28+
from pandas.core.indexes.api import Index, MultiIndex
2929
from pandas.core.series import Series
3030
from pandas.core.sorting import (
3131
compress_group_index,

pandas/core/series.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@
5959
is_empty_data,
6060
sanitize_array,
6161
)
62-
from pandas.core.index import (
62+
from pandas.core.indexers import maybe_convert_indices
63+
from pandas.core.indexes.accessors import CombinedDatetimelikeProperties
64+
from pandas.core.indexes.api import (
6365
Float64Index,
6466
Index,
6567
InvalidIndexError,
6668
MultiIndex,
6769
ensure_index,
6870
)
69-
from pandas.core.indexers import maybe_convert_indices
70-
from pandas.core.indexes.accessors import CombinedDatetimelikeProperties
7171
import pandas.core.indexes.base as ibase
7272
from pandas.core.indexes.datetimes import DatetimeIndex
7373
from pandas.core.indexes.period import PeriodIndex

pandas/core/window/common.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import pandas.core.common as com
1212
from pandas.core.generic import _shared_docs
1313
from pandas.core.groupby.base import GroupByMixin
14-
from pandas.core.index import MultiIndex
14+
from pandas.core.indexes.api import MultiIndex
1515

1616
_shared_docs = dict(**_shared_docs)
1717
_doc_template = """

pandas/core/window/rolling.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from pandas._typing import Axis, FrameOrSeries, Scalar
3939
from pandas.core.base import DataError, PandasObject, SelectionMixin, ShallowMixin
4040
import pandas.core.common as com
41-
from pandas.core.index import Index, ensure_index
41+
from pandas.core.indexes.api import Index, ensure_index
4242
from pandas.core.window.common import (
4343
WindowGroupByMixin,
4444
_doc_template,

pandas/io/formats/format.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
from pandas.core.arrays.timedeltas import TimedeltaArray
6969
from pandas.core.base import PandasObject
7070
import pandas.core.common as com
71-
from pandas.core.index import Index, ensure_index
71+
from pandas.core.indexes.api import Index, ensure_index
7272
from pandas.core.indexes.datetimes import DatetimeIndex
7373
from pandas.core.indexes.timedeltas import TimedeltaIndex
7474

@@ -984,7 +984,7 @@ def to_html(
984984
)
985985

986986
def _get_formatted_column_labels(self, frame: "DataFrame") -> List[List[str]]:
987-
from pandas.core.index import _sparsify
987+
from pandas.core.indexes.multi import _sparsify
988988

989989
columns = frame.columns
990990

pandas/io/parsers.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@
5050
from pandas.core import algorithms
5151
from pandas.core.arrays import Categorical
5252
from pandas.core.frame import DataFrame
53-
from pandas.core.index import Index, MultiIndex, RangeIndex, ensure_index_from_sequences
53+
from pandas.core.indexes.api import (
54+
Index,
55+
MultiIndex,
56+
RangeIndex,
57+
ensure_index_from_sequences,
58+
)
5459
from pandas.core.series import Series
5560
from pandas.core.tools import datetimes as tools
5661

pandas/io/pytables.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
from pandas.core.arrays.categorical import Categorical
6262
import pandas.core.common as com
6363
from pandas.core.computation.pytables import PyTablesExpr, maybe_expression
64-
from pandas.core.index import ensure_index
64+
from pandas.core.indexes.api import ensure_index
6565

6666
from pandas.io.common import _stringify_path
6767
from pandas.io.formats.printing import adjoin, pprint_thing

pandas/plotting/_matplotlib/converter.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@
2424
)
2525
from pandas.core.dtypes.generic import ABCSeries
2626

27-
from pandas import get_option
27+
from pandas import Index, get_option
2828
import pandas.core.common as com
29-
from pandas.core.index import Index
3029
from pandas.core.indexes.datetimes import date_range
3130
from pandas.core.indexes.period import Period, PeriodIndex, period_range
3231
import pandas.core.tools.datetimes as tools

pandas/tests/arrays/categorical/test_constructors.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
Index,
1717
Interval,
1818
IntervalIndex,
19+
MultiIndex,
1920
NaT,
2021
Series,
2122
Timestamp,
@@ -285,8 +286,6 @@ def test_constructor_with_generator(self):
285286
tm.assert_categorical_equal(cat, exp)
286287

287288
# This uses xrange internally
288-
from pandas.core.index import MultiIndex
289-
290289
MultiIndex.from_product([range(5), ["a", "b", "c"]])
291290

292291
# check that categories accept generators and sequences

pandas/tests/indexes/test_base.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@
3333
period_range,
3434
)
3535
from pandas.core.algorithms import safe_sort
36-
from pandas.core.index import ensure_index, ensure_index_from_sequences
37-
from pandas.core.indexes.api import Index, MultiIndex, _get_combined_index
36+
from pandas.core.indexes.api import (
37+
Index,
38+
MultiIndex,
39+
_get_combined_index,
40+
ensure_index,
41+
ensure_index_from_sequences,
42+
)
3843
from pandas.tests.indexes.common import Base
3944
from pandas.tests.indexes.conftest import indices_dict
4045
import pandas.util.testing as tm

pandas/tests/indexing/multiindex/test_multiindex.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_multiindex_perf_warn(self):
2020
}
2121
).set_index(["jim", "joe"])
2222

23-
with tm.assert_produces_warning(PerformanceWarning, clear=[pd.core.index]):
23+
with tm.assert_produces_warning(PerformanceWarning):
2424
df.loc[(1, "z")]
2525

2626
df = df.iloc[[2, 1, 3, 0]]

pandas/tests/series/test_analytics.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
Categorical,
1313
CategoricalIndex,
1414
DataFrame,
15+
MultiIndex,
1516
Series,
1617
date_range,
1718
isna,
1819
notna,
1920
)
2021
from pandas.api.types import is_scalar
21-
from pandas.core.index import MultiIndex
2222
from pandas.core.indexes.datetimes import Timestamp
2323
from pandas.core.indexes.timedeltas import TimedeltaIndex
2424
import pandas.util.testing as tm

0 commit comments

Comments
 (0)