diff --git a/pandas/core/arrays/period.py b/pandas/core/arrays/period.py index f14ba8a2a0de7..13c7c012ee866 100644 --- a/pandas/core/arrays/period.py +++ b/pandas/core/arrays/period.py @@ -833,7 +833,7 @@ def dt64arr_to_periodarr(data, freq, tz=None): if not (is_datetime64_ns_dtype(data.dtype) or is_datetime64tz_dtype(data.dtype)): - raise ValueError('Wrong dtype: %s' % data.dtype) + raise ValueError('Wrong dtype: {dtype}'.format(dtype=data.dtype)) if isinstance(data, ABCIndexClass): if freq is None: diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index f76c77a5d3944..87af732af041b 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -1437,11 +1437,11 @@ def date_range(start=None, end=None, periods=None, freq=None, tz=None, if freq is None and com._any_none(periods, start, end): freq = 'D' - result = DatetimeArray._generate_range( + dtarr = DatetimeArray._generate_range( start=start, end=end, periods=periods, freq=freq, tz=tz, normalize=normalize, closed=closed, **kwargs) - return DatetimeIndex(result, name=name) + return DatetimeIndex(dtarr, name=name) def bdate_range(start=None, end=None, periods=None, freq='B', tz=None, diff --git a/pandas/core/indexes/timedeltas.py b/pandas/core/indexes/timedeltas.py index 53a451aec0f5c..2406fe9943892 100644 --- a/pandas/core/indexes/timedeltas.py +++ b/pandas/core/indexes/timedeltas.py @@ -169,6 +169,8 @@ def _join_i8_wrapper(joinf, **kwargs): _object_ops = TimedeltaArray._object_ops _field_ops = TimedeltaArray._field_ops _datetimelike_ops = TimedeltaArray._datetimelike_ops + _datetimelike_methods = TimedeltaArray._datetimelike_methods + _other_ops = TimedeltaArray._other_ops # ------------------------------------------------------------------- # Constructors @@ -790,6 +792,6 @@ def timedelta_range(start=None, end=None, periods=None, freq=None, freq = 'D' freq, freq_infer = dtl.maybe_infer_freq(freq) - result = TimedeltaArray._generate_range(start, end, periods, freq, - closed=closed) - return TimedeltaIndex(result, name=name) + tdarr = TimedeltaArray._generate_range(start, end, periods, freq, + closed=closed) + return TimedeltaIndex(tdarr, name=name) diff --git a/pandas/tests/arrays/test_timedeltas.py b/pandas/tests/arrays/test_timedeltas.py index d418d8376b71a..30ca5828d0ba1 100644 --- a/pandas/tests/arrays/test_timedeltas.py +++ b/pandas/tests/arrays/test_timedeltas.py @@ -37,6 +37,7 @@ def test_copy(self): arr = TimedeltaArray(data, copy=True) assert arr._data is not data + assert arr._data.base is not data class TestTimedeltaArray(object): diff --git a/pandas/tests/indexes/datetimes/test_construction.py b/pandas/tests/indexes/datetimes/test_construction.py index 173b5e5733e96..bca99d27bda56 100644 --- a/pandas/tests/indexes/datetimes/test_construction.py +++ b/pandas/tests/indexes/datetimes/test_construction.py @@ -7,8 +7,7 @@ import pytest import pytz -from pandas._libs.tslib import OutOfBoundsDatetime -from pandas._libs.tslibs import conversion +from pandas._libs.tslibs import OutOfBoundsDatetime, conversion import pandas as pd from pandas import ( diff --git a/pandas/tests/indexes/datetimes/test_tools.py b/pandas/tests/indexes/datetimes/test_tools.py index c24c1025ea63c..13f9648d46216 100644 --- a/pandas/tests/indexes/datetimes/test_tools.py +++ b/pandas/tests/indexes/datetimes/test_tools.py @@ -24,6 +24,7 @@ from pandas import ( DataFrame, DatetimeIndex, Index, NaT, Series, Timestamp, compat, date_range, isna, to_datetime) +from pandas.core.arrays import DatetimeArrayMixin as DatetimeArray from pandas.core.tools import datetimes as tools from pandas.util import testing as tm from pandas.util.testing import assert_series_equal @@ -246,6 +247,18 @@ def test_to_datetime_parse_timezone_keeps_name(self): class TestToDatetime(object): + @pytest.mark.parametrize('tz', [None, 'US/Central']) + def test_to_datetime_dtarr(self, tz): + # DatetimeArray + dti = date_range('1965-04-03', periods=19, freq='2W', tz=tz) + arr = DatetimeArray(dti) + + result = to_datetime(arr) + assert result is arr + + result = to_datetime(arr, box=True) + assert result is arr + def test_to_datetime_pydatetime(self): actual = pd.to_datetime(datetime(2008, 1, 15)) assert actual == datetime(2008, 1, 15)