@@ -10,7 +10,7 @@ cimport cython
1010from cython cimport Py_ssize_t
1111
1212
13- from datetime import datetime
13+ from cpython. datetime cimport datetime
1414import time
1515
1616import numpy as np
@@ -37,7 +37,7 @@ from dateutil.parser import DEFAULTPARSER
3737from dateutil.parser import parse as du_parse
3838
3939from ccalendar import MONTH_NUMBERS
40- from nattype import nat_strings
40+ from nattype import nat_strings, NaT
4141
4242# ----------------------------------------------------------------------
4343# Constants
@@ -54,9 +54,6 @@ cdef object _TIMEPAT = re.compile(r'^([01]?[0-9]|2[0-3]):([0-5][0-9])')
5454
5555cdef set _not_datelike_strings = {' a' , ' A' , ' m' , ' M' , ' p' , ' P' , ' t' , ' T' }
5656
57- NAT_SENTINEL = object ()
58- # This allows us to reference NaT without having to import it
59-
6057# ----------------------------------------------------------------------
6158
6259
@@ -136,9 +133,6 @@ def parse_time_string(arg, freq=None, dayfirst=None, yearfirst=None):
136133 res = parse_datetime_string_with_reso(arg, freq = freq,
137134 dayfirst = dayfirst,
138135 yearfirst = yearfirst)
139- if res[0 ] is NAT_SENTINEL:
140- from pandas._libs.tslib import NaT
141- res = (NaT,) + res[1 :]
142136 return res
143137
144138
@@ -206,7 +200,7 @@ cdef inline object _parse_dateabbr_string(object date_string, object default,
206200 # should be NaT???
207201
208202 if date_string in nat_strings:
209- return NAT_SENTINEL, NAT_SENTINEL , ' '
203+ return NaT, NaT , ' '
210204
211205 date_string = date_string.upper()
212206 date_len = len (date_string)
@@ -407,7 +401,7 @@ def try_parse_dates(ndarray[object] values, parser=None,
407401
408402 # EAFP here
409403 try :
410- for i from 0 <= i < n :
404+ for i in range (n) :
411405 if values[i] == ' ' :
412406 result[i] = np.nan
413407 else :
@@ -419,7 +413,7 @@ def try_parse_dates(ndarray[object] values, parser=None,
419413 parse_date = parser
420414
421415 try :
422- for i from 0 <= i < n :
416+ for i in range (n) :
423417 if values[i] == ' ' :
424418 result[i] = np.nan
425419 else :
@@ -459,7 +453,7 @@ def try_parse_date_and_time(ndarray[object] dates, ndarray[object] times,
459453 else :
460454 parse_time = time_parser
461455
462- for i from 0 <= i < n :
456+ for i in range (n) :
463457 d = parse_date(str (dates[i]))
464458 t = parse_time(str (times[i]))
465459 result[i] = datetime(d.year, d.month, d.day,
@@ -479,7 +473,7 @@ def try_parse_year_month_day(ndarray[object] years, ndarray[object] months,
479473 raise ValueError (' Length of years/months/days must all be equal' )
480474 result = np.empty(n, dtype = ' O' )
481475
482- for i from 0 <= i < n :
476+ for i in range (n) :
483477 result[i] = datetime(int (years[i]), int (months[i]), int (days[i]))
484478
485479 return result
@@ -505,7 +499,7 @@ def try_parse_datetime_components(ndarray[object] years,
505499 raise ValueError (' Length of all datetime components must be equal' )
506500 result = np.empty(n, dtype = ' O' )
507501
508- for i from 0 <= i < n :
502+ for i in range (n) :
509503 float_secs = float (seconds[i])
510504 secs = int (float_secs)
511505
0 commit comments