diff --git a/pandas/_libs/tslibs/c_timestamp.pyx b/pandas/_libs/tslibs/c_timestamp.pyx index 67d9092ceb0d5..30f3f1c24e607 100644 --- a/pandas/_libs/tslibs/c_timestamp.pyx +++ b/pandas/_libs/tslibs/c_timestamp.pyx @@ -23,8 +23,6 @@ cimport numpy as cnp from numpy cimport int64_t, int8_t cnp.import_array() -from dateutil.tz import tzutc - from cpython.datetime cimport (datetime, PyDateTime_Check, PyDelta_Check, PyDateTime_IMPORT) @@ -38,9 +36,9 @@ from pandas._libs.tslibs.fields import get_start_end_field, get_date_name_field from pandas._libs.tslibs.nattype cimport c_NaT as NaT from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime from pandas._libs.tslibs.np_datetime cimport ( - reverse_ops, cmp_scalar, npy_datetimestruct, dt64_to_dtstruct) + reverse_ops, cmp_scalar) from pandas._libs.tslibs.timezones cimport ( - get_timezone, get_utcoffset, is_utc, tz_compare) + get_timezone, is_utc, tz_compare) from pandas._libs.tslibs.timezones import UTC from pandas._libs.tslibs.tzconversion cimport tz_convert_single @@ -381,5 +379,6 @@ cdef class _Timestamp(datetime): def timestamp(self): """Return POSIX timestamp as float.""" - # py27 compat, see GH#17329 + # GH 17329 + # Note: Naive timestamps will not match datetime.stdlib return round(self.value / 1e9, 6) diff --git a/pandas/_libs/tslibs/conversion.pyx b/pandas/_libs/tslibs/conversion.pyx index c0d0329ac0e72..1309ee948f86a 100644 --- a/pandas/_libs/tslibs/conversion.pyx +++ b/pandas/_libs/tslibs/conversion.pyx @@ -3,23 +3,20 @@ import cython import numpy as np cimport numpy as cnp -from numpy cimport uint8_t, int64_t, int32_t, intp_t, ndarray +from numpy cimport int64_t, int32_t, intp_t, ndarray cnp.import_array() import pytz -from dateutil.tz import tzutc # stdlib datetime imports from datetime import time as datetime_time from cpython.datetime cimport (datetime, tzinfo, PyDateTime_Check, PyDate_Check, - PyDateTime_IMPORT, PyDelta_Check) + PyDateTime_IMPORT) PyDateTime_IMPORT from pandas._libs.tslibs.c_timestamp cimport _Timestamp -from pandas._libs.tslibs.ccalendar import DAY_SECONDS, HOUR_SECONDS - from pandas._libs.tslibs.np_datetime cimport ( check_dts_bounds, npy_datetimestruct, pandas_datetime_to_datetimestruct, _string_to_dts, npy_datetime, dt64_to_dtstruct, dtstruct_to_dt64, @@ -42,7 +39,7 @@ from pandas._libs.tslibs.nattype cimport ( NPY_NAT, checknull_with_nat, c_NaT as NaT) from pandas._libs.tslibs.tzconversion import ( - tz_localize_to_utc, tz_convert, tz_convert_single) + tz_localize_to_utc, tz_convert_single) from pandas._libs.tslibs.tzconversion cimport _tz_convert_tzlocal_utc # ---------------------------------------------------------------------- diff --git a/pandas/_libs/tslibs/timedeltas.pyx b/pandas/_libs/tslibs/timedeltas.pyx index 8b71d64db26c6..2a35a9c803834 100644 --- a/pandas/_libs/tslibs/timedeltas.pyx +++ b/pandas/_libs/tslibs/timedeltas.pyx @@ -3,8 +3,6 @@ import collections import textwrap import warnings -import sys - import cython from cpython cimport Py_NE, Py_EQ, PyObject_RichCompare @@ -14,7 +12,7 @@ cimport numpy as cnp from numpy cimport int64_t cnp.import_array() -from cpython.datetime cimport (datetime, timedelta, +from cpython.datetime cimport (timedelta, PyDateTime_Check, PyDelta_Check, PyDateTime_IMPORT) PyDateTime_IMPORT diff --git a/pandas/_libs/tslibs/timestamps.pyx b/pandas/_libs/tslibs/timestamps.pyx index eb676d2265f9f..7340e716ec651 100644 --- a/pandas/_libs/tslibs/timestamps.pyx +++ b/pandas/_libs/tslibs/timestamps.pyx @@ -22,7 +22,6 @@ from pandas._libs.tslibs.conversion import normalize_i8_timestamps from pandas._libs.tslibs.conversion cimport ( _TSObject, convert_to_tsobject, convert_datetime_to_tsobject) -from pandas._libs.tslibs.fields import get_start_end_field, get_date_name_field from pandas._libs.tslibs.nattype cimport NPY_NAT, c_NaT as NaT from pandas._libs.tslibs.np_datetime cimport ( check_dts_bounds, npy_datetimestruct, dt64_to_dtstruct) diff --git a/pandas/core/arrays/datetimes.py b/pandas/core/arrays/datetimes.py index 09a3d53efdd07..a87801eeff57d 100644 --- a/pandas/core/arrays/datetimes.py +++ b/pandas/core/arrays/datetimes.py @@ -10,7 +10,7 @@ from pandas._libs import lib, tslib from pandas._libs.tslibs import ( NaT, Timestamp, ccalendar, conversion, fields, iNaT, normalize_date, - resolution as libresolution, timezones) + resolution as libresolution, timezones, tzconversion) import pandas.compat as compat from pandas.errors import PerformanceWarning from pandas.util._decorators import Appender @@ -784,7 +784,7 @@ def _local_timestamps(self): This is used to calculate time-of-day information as if the timestamps were timezone-naive. """ - return conversion.tz_convert(self.asi8, utc, self.tz) + return tzconversion.tz_convert(self.asi8, utc, self.tz) def tz_convert(self, tz): """ @@ -1032,8 +1032,8 @@ def tz_localize(self, tz, ambiguous='raise', nonexistent='raise', if self.tz is not None: if tz is None: - new_dates = conversion.tz_convert(self.asi8, timezones.UTC, - self.tz) + new_dates = tzconversion.tz_convert(self.asi8, timezones.UTC, + self.tz) else: raise TypeError("Already tz-aware, use tz_convert to convert.") else: diff --git a/pandas/tests/tslibs/test_conversion.py b/pandas/tests/tslibs/test_conversion.py index d909c981c3981..3bbd7ba2ed06d 100644 --- a/pandas/tests/tslibs/test_conversion.py +++ b/pandas/tests/tslibs/test_conversion.py @@ -7,7 +7,7 @@ from pytz import UTC from pandas._libs.tslib import iNaT -from pandas._libs.tslibs import conversion, timezones +from pandas._libs.tslibs import conversion, timezones, tzconversion from pandas import Timestamp, date_range import pandas.util.testing as tm @@ -17,7 +17,7 @@ def _compare_utc_to_local(tz_didx): def f(x): return conversion.tz_convert_single(x, UTC, tz_didx.tz) - result = conversion.tz_convert(tz_didx.asi8, UTC, tz_didx.tz) + result = tzconversion.tz_convert(tz_didx.asi8, UTC, tz_didx.tz) expected = np.vectorize(f)(tz_didx.asi8) tm.assert_numpy_array_equal(result, expected) @@ -27,7 +27,7 @@ def _compare_local_to_utc(tz_didx, utc_didx): def f(x): return conversion.tz_convert_single(x, tz_didx.tz, UTC) - result = conversion.tz_convert(utc_didx.asi8, tz_didx.tz, UTC) + result = tzconversion.tz_convert(utc_didx.asi8, tz_didx.tz, UTC) expected = np.vectorize(f)(utc_didx.asi8) tm.assert_numpy_array_equal(result, expected) @@ -56,9 +56,9 @@ def test_tz_convert_single_matches_tz_convert(tz_aware_fixture, freq): pytest.param(np.array([], dtype=np.int64), id="empty"), pytest.param(np.array([iNaT], dtype=np.int64), id="all_nat")]) def test_tz_convert_corner(arr): - result = conversion.tz_convert(arr, - timezones.maybe_get_tz("US/Eastern"), - timezones.maybe_get_tz("Asia/Tokyo")) + result = tzconversion.tz_convert(arr, + timezones.maybe_get_tz("US/Eastern"), + timezones.maybe_get_tz("Asia/Tokyo")) tm.assert_numpy_array_equal(result, arr) diff --git a/pandas/tseries/frequencies.py b/pandas/tseries/frequencies.py index ce5da63e9665b..c7b392a280694 100644 --- a/pandas/tseries/frequencies.py +++ b/pandas/tseries/frequencies.py @@ -9,13 +9,13 @@ from pandas._libs.algos import unique_deltas from pandas._libs.tslibs import Timedelta, Timestamp from pandas._libs.tslibs.ccalendar import MONTH_ALIASES, int_to_weekday -from pandas._libs.tslibs.conversion import tz_convert from pandas._libs.tslibs.fields import build_field_sarray import pandas._libs.tslibs.frequencies as libfreqs from pandas._libs.tslibs.offsets import _offset_to_period_map import pandas._libs.tslibs.resolution as libresolution from pandas._libs.tslibs.resolution import Resolution from pandas._libs.tslibs.timezones import UTC +from pandas._libs.tslibs.tzconversion import tz_convert from pandas.util._decorators import cache_readonly from pandas.core.dtypes.common import (