Skip to content

Commit 5ed012f

Browse files
jbrockmendelPingviinituutti
authored andcommitted
REF: use _constructor and ABCFoo to avoid runtime imports (pandas-dev#25272)
1 parent 1c82a55 commit 5ed012f

File tree

4 files changed

+14
-19
lines changed

4 files changed

+14
-19
lines changed

pandas/core/dtypes/dtypes.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
from pandas._libs.interval import Interval
99
from pandas._libs.tslibs import NaT, Period, Timestamp, timezones
1010

11-
from pandas.core.dtypes.generic import ABCCategoricalIndex, ABCIndexClass
11+
from pandas.core.dtypes.generic import (
12+
ABCCategoricalIndex, ABCDateOffset, ABCIndexClass)
1213

1314
from pandas import compat
1415

@@ -758,8 +759,7 @@ def __new__(cls, freq=None):
758759
# empty constructor for pickle compat
759760
return object.__new__(cls)
760761

761-
from pandas.tseries.offsets import DateOffset
762-
if not isinstance(freq, DateOffset):
762+
if not isinstance(freq, ABCDateOffset):
763763
freq = cls._parse_dtype_strict(freq)
764764

765765
try:
@@ -790,12 +790,10 @@ def construct_from_string(cls, string):
790790
Strict construction from a string, raise a TypeError if not
791791
possible
792792
"""
793-
from pandas.tseries.offsets import DateOffset
794-
795793
if (isinstance(string, compat.string_types) and
796794
(string.startswith('period[') or
797795
string.startswith('Period[')) or
798-
isinstance(string, DateOffset)):
796+
isinstance(string, ABCDateOffset)):
799797
# do not parse string like U as period[U]
800798
# avoid tuple to be regarded as freq
801799
try:

pandas/core/dtypes/missing.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ def _isna_ndarraylike(obj):
221221

222222
# box
223223
if isinstance(obj, ABCSeries):
224-
from pandas import Series
225-
result = Series(result, index=obj.index, name=obj.name, copy=False)
224+
result = obj._constructor(
225+
result, index=obj.index, name=obj.name, copy=False)
226226

227227
return result
228228

@@ -250,8 +250,8 @@ def _isna_ndarraylike_old(obj):
250250

251251
# box
252252
if isinstance(obj, ABCSeries):
253-
from pandas import Series
254-
result = Series(result, index=obj.index, name=obj.name, copy=False)
253+
result = obj._constructor(
254+
result, index=obj.index, name=obj.name, copy=False)
255255

256256
return result
257257

pandas/core/tools/datetimes.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -588,9 +588,8 @@ def to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False,
588588
if not cache_array.empty:
589589
result = arg.map(cache_array)
590590
else:
591-
from pandas import Series
592591
values = convert_listlike(arg._values, True, format)
593-
result = Series(values, index=arg.index, name=arg.name)
592+
result = arg._constructor(values, index=arg.index, name=arg.name)
594593
elif isinstance(arg, (ABCDataFrame, compat.MutableMapping)):
595594
result = _assemble_from_unit_mappings(arg, errors, box, tz)
596595
elif isinstance(arg, ABCIndexClass):
@@ -827,7 +826,6 @@ def to_time(arg, format=None, infer_time_format=False, errors='raise'):
827826
-------
828827
datetime.time
829828
"""
830-
from pandas.core.series import Series
831829

832830
def _convert_listlike(arg, format):
833831

@@ -892,9 +890,9 @@ def _convert_listlike(arg, format):
892890
return arg
893891
elif isinstance(arg, time):
894892
return arg
895-
elif isinstance(arg, Series):
893+
elif isinstance(arg, ABCSeries):
896894
values = _convert_listlike(arg._values, format)
897-
return Series(values, index=arg.index, name=arg.name)
895+
return arg._constructor(values, index=arg.index, name=arg.name)
898896
elif isinstance(arg, ABCIndexClass):
899897
return _convert_listlike(arg, format)
900898
elif is_list_like(arg):

pandas/core/tools/timedeltas.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
import numpy as np
88

9+
from pandas._libs.tslibs import NaT
910
from pandas._libs.tslibs.timedeltas import Timedelta, parse_timedelta_unit
1011

1112
from pandas.core.dtypes.common import is_list_like
1213
from pandas.core.dtypes.generic import ABCIndexClass, ABCSeries
1314

14-
import pandas as pd
1515
from pandas.core.arrays.timedeltas import sequence_to_td64ns
1616

1717

@@ -100,10 +100,9 @@ def to_timedelta(arg, unit='ns', box=True, errors='raise'):
100100
if arg is None:
101101
return arg
102102
elif isinstance(arg, ABCSeries):
103-
from pandas import Series
104103
values = _convert_listlike(arg._values, unit=unit,
105104
box=False, errors=errors)
106-
return Series(values, index=arg.index, name=arg.name)
105+
return arg._constructor(values, index=arg.index, name=arg.name)
107106
elif isinstance(arg, ABCIndexClass):
108107
return _convert_listlike(arg, unit=unit, box=box,
109108
errors=errors, name=arg.name)
@@ -136,7 +135,7 @@ def _coerce_scalar_to_timedelta_type(r, unit='ns', box=True, errors='raise'):
136135
return r
137136

138137
# coerce
139-
result = pd.NaT
138+
result = NaT
140139

141140
return result
142141

0 commit comments

Comments
 (0)