|
1 | 1 | # cython: profile=False
|
2 | 2 |
|
| 3 | +import warnings |
| 4 | + |
3 | 5 | cimport numpy as np
|
4 | 6 | from numpy cimport (int8_t, int32_t, int64_t, import_array, ndarray,
|
5 | 7 | NPY_INT64, NPY_DATETIME, NPY_TIMEDELTA)
|
@@ -637,22 +639,6 @@ class Timestamp(_Timestamp):
|
637 | 639 | return Timestamp(datetime.replace(self, **kwds),
|
638 | 640 | freq=self.freq)
|
639 | 641 |
|
640 |
| - def to_pydatetime(self, warn=True): |
641 |
| - """ |
642 |
| - If warn=True, issue warning if nanoseconds is nonzero |
643 |
| - """ |
644 |
| - cdef: |
645 |
| - pandas_datetimestruct dts |
646 |
| - _TSObject ts |
647 |
| - |
648 |
| - if self.nanosecond != 0 and warn: |
649 |
| - print 'Warning: discarding nonzero nanoseconds' |
650 |
| - ts = convert_to_tsobject(self, self.tzinfo, None, 0, 0) |
651 |
| - |
652 |
| - return datetime(ts.dts.year, ts.dts.month, ts.dts.day, |
653 |
| - ts.dts.hour, ts.dts.min, ts.dts.sec, |
654 |
| - ts.dts.us, ts.tzinfo) |
655 |
| - |
656 | 642 | def isoformat(self, sep='T'):
|
657 | 643 | base = super(_Timestamp, self).isoformat(sep=sep)
|
658 | 644 | if self.nanosecond == 0:
|
@@ -805,11 +791,11 @@ def _make_nan_func(func_name):
|
805 | 791 | f.__name__ = func_name
|
806 | 792 | return f
|
807 | 793 |
|
808 |
| -_nat_methods = ['date', 'now', 'replace', 'to_datetime', 'today'] |
| 794 | +_nat_methods = ['date', 'now', 'replace', 'to_pydatetime', 'today'] |
809 | 795 |
|
810 | 796 | _nan_methods = ['weekday', 'isoweekday', 'total_seconds']
|
811 | 797 |
|
812 |
| -_implemented_methods = ['to_datetime64', 'isoformat'] |
| 798 | +_implemented_methods = ['to_datetime', 'to_datetime64', 'isoformat'] |
813 | 799 | _implemented_methods.extend(_nat_methods)
|
814 | 800 | _implemented_methods.extend(_nan_methods)
|
815 | 801 |
|
@@ -986,7 +972,7 @@ cdef class _Timestamp(datetime):
|
986 | 972 | ots = other
|
987 | 973 | elif isinstance(other, datetime):
|
988 | 974 | if self.nanosecond == 0:
|
989 |
| - val = self.to_datetime() |
| 975 | + val = self.to_pydatetime() |
990 | 976 | return PyObject_RichCompareBool(val, other, op)
|
991 | 977 |
|
992 | 978 | try:
|
@@ -1048,7 +1034,7 @@ cdef class _Timestamp(datetime):
|
1048 | 1034 |
|
1049 | 1035 | cdef bint _compare_outside_nanorange(_Timestamp self, datetime other,
|
1050 | 1036 | int op) except -1:
|
1051 |
| - cdef datetime dtval = self.to_datetime() |
| 1037 | + cdef datetime dtval = self.to_pydatetime() |
1052 | 1038 |
|
1053 | 1039 | self._assert_tzawareness_compat(other)
|
1054 | 1040 |
|
@@ -1078,9 +1064,28 @@ cdef class _Timestamp(datetime):
|
1078 | 1064 | raise TypeError('Cannot compare tz-naive and tz-aware timestamps')
|
1079 | 1065 |
|
1080 | 1066 | cpdef datetime to_datetime(_Timestamp self):
|
| 1067 | + """ |
| 1068 | + DEPRECATED: use :meth:`to_pydatetime` instead. |
| 1069 | +
|
| 1070 | + Convert a Timestamp object to a native Python datetime object. |
| 1071 | + """ |
| 1072 | + warnings.warn("to_datetime is deprecated. Use self.to_pydatetime()", |
| 1073 | + FutureWarning, stacklevel=2) |
| 1074 | + return self.to_pydatetime(warn=False) |
| 1075 | + |
| 1076 | + cpdef datetime to_pydatetime(_Timestamp self, warn=True): |
| 1077 | + """ |
| 1078 | + Convert a Timestamp object to a native Python datetime object. |
| 1079 | +
|
| 1080 | + If warn=True, issue a warning if nanoseconds is nonzero. |
| 1081 | + """ |
1081 | 1082 | cdef:
|
1082 | 1083 | pandas_datetimestruct dts
|
1083 | 1084 | _TSObject ts
|
| 1085 | + |
| 1086 | + if self.nanosecond != 0 and warn: |
| 1087 | + warnings.warn("Discarding nonzero nanoseconds in conversion", |
| 1088 | + UserWarning, stacklevel=2) |
1084 | 1089 | ts = convert_to_tsobject(self, self.tzinfo, None, 0, 0)
|
1085 | 1090 | dts = ts.dts
|
1086 | 1091 | return datetime(dts.year, dts.month, dts.day,
|
|
0 commit comments