Skip to content

Commit 5d0daa0

Browse files
jbrockmendeljreback
authored andcommitted
cleanup import reverse-dependencies (#21844)
1 parent 1d29dc4 commit 5d0daa0

15 files changed

+157
-140
lines changed

pandas/io/clipboards.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
""" io on the clipboard """
2-
from pandas import compat, get_option, option_context, DataFrame
3-
from pandas.compat import StringIO, PY2, PY3
42
import warnings
53

4+
from pandas.compat import StringIO, PY2, PY3
5+
6+
from pandas.core.dtypes.generic import ABCDataFrame
7+
from pandas import compat, get_option, option_context
8+
69

710
def read_clipboard(sep=r'\s+', **kwargs): # pragma: no cover
811
r"""
@@ -131,7 +134,7 @@ def to_clipboard(obj, excel=True, sep=None, **kwargs): # pragma: no cover
131134
elif sep is not None:
132135
warnings.warn('to_clipboard with excel=False ignores the sep argument')
133136

134-
if isinstance(obj, DataFrame):
137+
if isinstance(obj, ABCDataFrame):
135138
# str(df) has various unhelpful defaults, like truncation
136139
with option_context('display.max_colwidth', 999999):
137140
objstr = obj.to_string(**kwargs)

pandas/io/excel.py

+16-13
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,32 @@
99
import os
1010
import abc
1111
import warnings
12-
import numpy as np
12+
from textwrap import fill
1313
from io import UnsupportedOperation
14+
from distutils.version import LooseVersion
15+
16+
import numpy as np
17+
18+
import pandas._libs.json as json
19+
from pandas.util._decorators import Appender, deprecate_kwarg
20+
from pandas.errors import EmptyDataError
21+
22+
import pandas.compat as compat
23+
from pandas.compat import (map, zip, reduce, range, lrange, u, add_metaclass,
24+
string_types, OrderedDict)
1425

1526
from pandas.core.dtypes.common import (
1627
is_integer, is_float,
1728
is_bool, is_list_like)
1829

30+
from pandas.core import config
1931
from pandas.core.frame import DataFrame
32+
2033
from pandas.io.parsers import TextParser
21-
from pandas.errors import EmptyDataError
2234
from pandas.io.common import (_is_url, _urlopen, _validate_header_arg,
2335
get_filepath_or_buffer, _NA_VALUES,
2436
_stringify_path)
25-
import pandas._libs.json as json
26-
from pandas.compat import (map, zip, reduce, range, lrange, u, add_metaclass,
27-
string_types, OrderedDict)
28-
from pandas.core import config
2937
from pandas.io.formats.printing import pprint_thing
30-
import pandas.compat as compat
31-
from warnings import warn
32-
from distutils.version import LooseVersion
33-
from pandas.util._decorators import Appender, deprecate_kwarg
34-
from textwrap import fill
3538

3639
__all__ = ["read_excel", "ExcelWriter", "ExcelFile"]
3740

@@ -527,8 +530,8 @@ def _parse_excel(self,
527530
"is not implemented")
528531

529532
if parse_dates is True and index_col is None:
530-
warn("The 'parse_dates=True' keyword of read_excel was provided"
531-
" without an 'index_col' keyword value.")
533+
warnings.warn("The 'parse_dates=True' keyword of read_excel was "
534+
"provided without an 'index_col' keyword value.")
532535

533536
import xlrd
534537
from xlrd import (xldate, XL_CELL_DATE,

pandas/io/formats/csvs.py

+17-13
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@
99

1010
import csv as csvlib
1111
from zipfile import ZipFile
12+
1213
import numpy as np
1314

14-
from pandas.core.dtypes.missing import notna
15-
from pandas.core.index import Index, MultiIndex
15+
from pandas._libs import writers as libwriters
16+
1617
from pandas import compat
17-
from pandas.compat import (StringIO, range, zip)
18+
from pandas.compat import StringIO, range, zip
19+
20+
from pandas.core.dtypes.missing import notna
21+
from pandas.core.dtypes.generic import (
22+
ABCMultiIndex, ABCPeriodIndex, ABCDatetimeIndex, ABCIndexClass)
1823

1924
from pandas.io.common import (_get_handle, UnicodeWriter, _expand_user,
2025
_stringify_path)
21-
from pandas._libs import writers as libwriters
22-
from pandas.core.indexes.datetimes import DatetimeIndex
23-
from pandas.core.indexes.period import PeriodIndex
2426

2527

2628
class CSVFormatter(object):
@@ -68,7 +70,7 @@ def __init__(self, obj, path_or_buf=None, sep=",", na_rep='',
6870
self.date_format = date_format
6971

7072
self.tupleize_cols = tupleize_cols
71-
self.has_mi_columns = (isinstance(obj.columns, MultiIndex) and
73+
self.has_mi_columns = (isinstance(obj.columns, ABCMultiIndex) and
7274
not self.tupleize_cols)
7375

7476
# validate mi options
@@ -78,7 +80,7 @@ def __init__(self, obj, path_or_buf=None, sep=",", na_rep='',
7880
"columns")
7981

8082
if cols is not None:
81-
if isinstance(cols, Index):
83+
if isinstance(cols, ABCIndexClass):
8284
cols = cols.to_native_types(na_rep=na_rep,
8385
float_format=float_format,
8486
date_format=date_format,
@@ -90,7 +92,7 @@ def __init__(self, obj, path_or_buf=None, sep=",", na_rep='',
9092
# update columns to include possible multiplicity of dupes
9193
# and make sure sure cols is just a list of labels
9294
cols = self.obj.columns
93-
if isinstance(cols, Index):
95+
if isinstance(cols, ABCIndexClass):
9496
cols = cols.to_native_types(na_rep=na_rep,
9597
float_format=float_format,
9698
date_format=date_format,
@@ -111,8 +113,9 @@ def __init__(self, obj, path_or_buf=None, sep=",", na_rep='',
111113
self.chunksize = int(chunksize)
112114

113115
self.data_index = obj.index
114-
if (isinstance(self.data_index, (DatetimeIndex, PeriodIndex)) and
116+
if (isinstance(self.data_index, (ABCDatetimeIndex, ABCPeriodIndex)) and
115117
date_format is not None):
118+
from pandas import Index
116119
self.data_index = Index([x.strftime(date_format) if notna(x) else
117120
'' for x in self.data_index])
118121

@@ -197,7 +200,8 @@ def _save_header(self):
197200
header = self.header
198201
encoded_labels = []
199202

200-
has_aliases = isinstance(header, (tuple, list, np.ndarray, Index))
203+
has_aliases = isinstance(header, (tuple, list, np.ndarray,
204+
ABCIndexClass))
201205
if not (has_aliases or self.header):
202206
return
203207
if has_aliases:
@@ -214,7 +218,7 @@ def _save_header(self):
214218
# should write something for index label
215219
if index_label is not False:
216220
if index_label is None:
217-
if isinstance(obj.index, MultiIndex):
221+
if isinstance(obj.index, ABCMultiIndex):
218222
index_label = []
219223
for i, name in enumerate(obj.index.names):
220224
if name is None:
@@ -227,7 +231,7 @@ def _save_header(self):
227231
else:
228232
index_label = [index_label]
229233
elif not isinstance(index_label,
230-
(list, tuple, np.ndarray, Index)):
234+
(list, tuple, np.ndarray, ABCIndexClass)):
231235
# given a string for a DF with Index
232236
index_label = [index_label]
233237

pandas/io/formats/excel.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@
88
import numpy as np
99

1010
from pandas.compat import reduce
11-
from pandas.io.formats.css import CSSResolver, CSSWarning
12-
from pandas.io.formats.printing import pprint_thing
1311
import pandas.core.common as com
12+
1413
from pandas.core.dtypes.common import is_float, is_scalar
1514
from pandas.core.dtypes import missing
16-
from pandas import Index, MultiIndex, PeriodIndex
15+
from pandas.core.dtypes.generic import ABCMultiIndex, ABCPeriodIndex
16+
from pandas import Index
17+
18+
from pandas.io.formats.css import CSSResolver, CSSWarning
19+
from pandas.io.formats.printing import pprint_thing
1720
from pandas.io.formats.format import get_level_lengths
1821

1922

@@ -414,7 +417,7 @@ def _format_header_mi(self):
414417
coloffset = 0
415418
lnum = 0
416419

417-
if self.index and isinstance(self.df.index, MultiIndex):
420+
if self.index and isinstance(self.df.index, ABCMultiIndex):
418421
coloffset = len(self.df.index[0]) - 1
419422

420423
if self.merge_cells:
@@ -449,7 +452,7 @@ def _format_header_regular(self):
449452

450453
if self.index:
451454
coloffset = 1
452-
if isinstance(self.df.index, MultiIndex):
455+
if isinstance(self.df.index, ABCMultiIndex):
453456
coloffset = len(self.df.index[0])
454457

455458
colnames = self.columns
@@ -466,7 +469,7 @@ def _format_header_regular(self):
466469
header_style)
467470

468471
def _format_header(self):
469-
if isinstance(self.columns, MultiIndex):
472+
if isinstance(self.columns, ABCMultiIndex):
470473
gen = self._format_header_mi()
471474
else:
472475
gen = self._format_header_regular()
@@ -483,7 +486,7 @@ def _format_header(self):
483486

484487
def _format_body(self):
485488

486-
if isinstance(self.df.index, MultiIndex):
489+
if isinstance(self.df.index, ABCMultiIndex):
487490
return self._format_hierarchical_rows()
488491
else:
489492
return self._format_regular_rows()
@@ -507,7 +510,7 @@ def _format_regular_rows(self):
507510
else:
508511
index_label = self.df.index.names[0]
509512

510-
if isinstance(self.columns, MultiIndex):
513+
if isinstance(self.columns, ABCMultiIndex):
511514
self.rowcounter += 1
512515

513516
if index_label and self.header is not False:
@@ -516,7 +519,7 @@ def _format_regular_rows(self):
516519

517520
# write index_values
518521
index_values = self.df.index
519-
if isinstance(self.df.index, PeriodIndex):
522+
if isinstance(self.df.index, ABCPeriodIndex):
520523
index_values = self.df.index.to_timestamp()
521524

522525
for idx, idxval in enumerate(index_values):
@@ -548,7 +551,7 @@ def _format_hierarchical_rows(self):
548551
# with index names (blank if None) for
549552
# unambigous round-trip, unless not merging,
550553
# in which case the names all go on one row Issue #11328
551-
if isinstance(self.columns, MultiIndex) and self.merge_cells:
554+
if isinstance(self.columns, ABCMultiIndex) and self.merge_cells:
552555
self.rowcounter += 1
553556

554557
# if index labels are not empty go ahead and dump

pandas/io/formats/format.py

+10-12
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import numpy as np
1313

1414
from pandas._libs import lib
15-
from pandas._libs.tslibs import iNaT, Timestamp, Timedelta
15+
from pandas._libs.tslibs import NaT, iNaT, Timestamp, Timedelta
1616
from pandas._libs.tslib import format_array_from_datetime
1717

1818
from pandas import compat
@@ -33,20 +33,18 @@
3333
is_datetime64_dtype,
3434
is_timedelta64_dtype,
3535
is_list_like)
36-
from pandas.core.dtypes.generic import ABCSparseArray
36+
from pandas.core.dtypes.generic import ABCSparseArray, ABCMultiIndex
3737
from pandas.core.base import PandasObject
3838
import pandas.core.common as com
39-
from pandas.core.index import Index, MultiIndex, _ensure_index
39+
from pandas.core.index import Index, _ensure_index
4040
from pandas.core.config import get_option, set_option
4141
from pandas.core.indexes.datetimes import DatetimeIndex
4242
from pandas.core.indexes.period import PeriodIndex
4343

4444
from pandas.io.formats.terminal import get_terminal_size
45-
from pandas.io.common import (_expand_user, _stringify_path)
45+
from pandas.io.common import _expand_user, _stringify_path
4646
from pandas.io.formats.printing import adjoin, justify, pprint_thing
4747

48-
import pandas as pd
49-
5048

5149
common_docstring = """
5250
Parameters
@@ -248,7 +246,7 @@ def _get_footer(self):
248246

249247
def _get_formatted_index(self):
250248
index = self.tr_series.index
251-
is_multi = isinstance(index, MultiIndex)
249+
is_multi = isinstance(index, ABCMultiIndex)
252250

253251
if is_multi:
254252
have_header = any(name for name in index.names)
@@ -768,7 +766,7 @@ def _get_formatted_column_labels(self, frame):
768766

769767
columns = frame.columns
770768

771-
if isinstance(columns, MultiIndex):
769+
if isinstance(columns, ABCMultiIndex):
772770
fmt_columns = columns.format(sparsify=False, adjoin=False)
773771
fmt_columns = lzip(*fmt_columns)
774772
dtypes = self.frame.dtypes._values
@@ -824,7 +822,7 @@ def _get_formatted_index(self, frame):
824822

825823
fmt = self._get_formatter('__index__')
826824

827-
if isinstance(index, MultiIndex):
825+
if isinstance(index, ABCMultiIndex):
828826
fmt_index = index.format(sparsify=self.sparsify, adjoin=False,
829827
names=show_index_names, formatter=fmt)
830828
else:
@@ -850,7 +848,7 @@ def _get_formatted_index(self, frame):
850848
def _get_column_name_list(self):
851849
names = []
852850
columns = self.frame.columns
853-
if isinstance(columns, MultiIndex):
851+
if isinstance(columns, ABCMultiIndex):
854852
names.extend('' if name is None else name
855853
for name in columns.names)
856854
else:
@@ -937,7 +935,7 @@ def _format(x):
937935
if self.na_rep is not None and is_scalar(x) and isna(x):
938936
if x is None:
939937
return 'None'
940-
elif x is pd.NaT:
938+
elif x is NaT:
941939
return 'NaT'
942940
return self.na_rep
943941
elif isinstance(x, PandasObject):
@@ -1415,7 +1413,7 @@ def _cond(values):
14151413

14161414

14171415
def _has_names(index):
1418-
if isinstance(index, MultiIndex):
1416+
if isinstance(index, ABCMultiIndex):
14191417
return com._any_not_none(*index.names)
14201418
else:
14211419
return index.name is not None

pandas/io/formats/html.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
from textwrap import dedent
1010

11-
import pandas.core.common as com
12-
from pandas.core.index import MultiIndex
1311
from pandas import compat
1412
from pandas.compat import (lzip, range, map, zip, u,
1513
OrderedDict, unichr)
14+
15+
import pandas.core.common as com
16+
from pandas.core.dtypes.generic import ABCMultiIndex
1617
from pandas.core.config import get_option
18+
1719
from pandas.io.formats.printing import pprint_thing
1820
from pandas.io.formats.format import (get_level_lengths,
1921
buffer_put_lines)
@@ -117,7 +119,7 @@ def write_style(self):
117119
('tbody tr th',
118120
'vertical-align',
119121
'top')]
120-
if isinstance(self.columns, MultiIndex):
122+
if isinstance(self.columns, ABCMultiIndex):
121123
element_props.append(('thead tr th',
122124
'text-align',
123125
'left'))
@@ -205,7 +207,7 @@ def _column_header():
205207
else:
206208
row = []
207209

208-
if isinstance(self.columns, MultiIndex):
210+
if isinstance(self.columns, ABCMultiIndex):
209211
if self.fmt.has_column_names and self.fmt.index:
210212
row.append(single_column_table(self.columns.names))
211213
else:
@@ -224,7 +226,7 @@ def _column_header():
224226

225227
indent += self.indent_delta
226228

227-
if isinstance(self.columns, MultiIndex):
229+
if isinstance(self.columns, ABCMultiIndex):
228230
template = 'colspan="{span:d}" halign="left"'
229231

230232
if self.fmt.sparsify:
@@ -337,7 +339,7 @@ def _write_body(self, indent):
337339

338340
# write values
339341
if self.fmt.index:
340-
if isinstance(self.frame.index, MultiIndex):
342+
if isinstance(self.frame.index, ABCMultiIndex):
341343
self._write_hierarchical_rows(fmt_values, indent)
342344
else:
343345
self._write_regular_rows(fmt_values, indent)

0 commit comments

Comments
 (0)