@@ -49,30 +49,30 @@ from pandas._libs.tslibs.tzconversion cimport (
4949
5050cdef inline object create_datetime_from_ts(
5151 int64_t value, npy_datetimestruct dts,
52- object tz, object freq):
52+ object tz, object freq, bint fold ):
5353 """ convenience routine to construct a datetime.datetime from its parts """
5454 return datetime(dts.year, dts.month, dts.day, dts.hour,
5555 dts.min, dts.sec, dts.us, tz)
5656
5757
5858cdef inline object create_date_from_ts(
5959 int64_t value, npy_datetimestruct dts,
60- object tz, object freq):
60+ object tz, object freq, bint fold ):
6161 """ convenience routine to construct a datetime.date from its parts """
6262 return date(dts.year, dts.month, dts.day)
6363
6464
6565cdef inline object create_time_from_ts(
6666 int64_t value, npy_datetimestruct dts,
67- object tz, object freq):
67+ object tz, object freq, bint fold ):
6868 """ convenience routine to construct a datetime.time from its parts """
6969 return time(dts.hour, dts.min, dts.sec, dts.us, tz)
7070
7171
7272@ cython.wraparound (False )
7373@ cython.boundscheck (False )
7474def ints_to_pydatetime (const int64_t[:] arr , object tz = None , object freq = None ,
75- str box = " datetime" ):
75+ bint fold = 0 , str box = " datetime" ):
7676 """
7777 Convert an i8 repr to an ndarray of datetimes, date, time or Timestamp
7878
@@ -104,7 +104,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
104104 str typ
105105 int64_t value, delta, local_value
106106 ndarray[object ] result = np.empty(n, dtype = object )
107- object (* func_create)(int64_t, npy_datetimestruct, object , object )
107+ object (* func_create)(int64_t, npy_datetimestruct, object , object , bint )
108108
109109 if box == " date" :
110110 assert (tz is None ), " tz should be None when converting to date"
@@ -129,7 +129,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
129129 result[i] = < object > NaT
130130 else :
131131 dt64_to_dtstruct(value, & dts)
132- result[i] = func_create(value, dts, tz, freq)
132+ result[i] = func_create(value, dts, tz, freq, fold )
133133 elif is_tzlocal(tz):
134134 for i in range (n):
135135 value = arr[i]
@@ -141,7 +141,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
141141 # using the i8 representation.
142142 local_value = tz_convert_utc_to_tzlocal(value, tz)
143143 dt64_to_dtstruct(local_value, & dts)
144- result[i] = func_create(value, dts, tz, freq)
144+ result[i] = func_create(value, dts, tz, freq, fold )
145145 else :
146146 trans, deltas, typ = get_dst_info(tz)
147147
@@ -155,7 +155,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
155155 else :
156156 # Adjust datetime64 timestamp, recompute datetimestruct
157157 dt64_to_dtstruct(value + delta, & dts)
158- result[i] = func_create(value, dts, tz, freq)
158+ result[i] = func_create(value, dts, tz, freq, fold )
159159
160160 elif typ == ' dateutil' :
161161 # no zone-name change for dateutil tzs - dst etc
@@ -168,7 +168,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
168168 # Adjust datetime64 timestamp, recompute datetimestruct
169169 pos = trans.searchsorted(value, side = ' right' ) - 1
170170 dt64_to_dtstruct(value + deltas[pos], & dts)
171- result[i] = func_create(value, dts, tz, freq)
171+ result[i] = func_create(value, dts, tz, freq, fold )
172172 else :
173173 # pytz
174174 for i in range (n):
@@ -182,7 +182,7 @@ def ints_to_pydatetime(const int64_t[:] arr, object tz=None, object freq=None,
182182 new_tz = tz._tzinfos[tz._transition_info[pos]]
183183
184184 dt64_to_dtstruct(value + deltas[pos], & dts)
185- result[i] = func_create(value, dts, new_tz, freq)
185+ result[i] = func_create(value, dts, new_tz, freq, fold )
186186
187187 return result
188188
0 commit comments