@@ -10,7 +10,7 @@ cimport cython
10
10
from cython cimport Py_ssize_t
11
11
12
12
13
- from datetime import datetime
13
+ from cpython. datetime cimport datetime
14
14
import time
15
15
16
16
import numpy as np
@@ -37,7 +37,7 @@ from dateutil.parser import DEFAULTPARSER
37
37
from dateutil.parser import parse as du_parse
38
38
39
39
from ccalendar import MONTH_NUMBERS
40
- from nattype import nat_strings
40
+ from nattype import nat_strings, NaT
41
41
42
42
# ----------------------------------------------------------------------
43
43
# Constants
@@ -54,9 +54,6 @@ cdef object _TIMEPAT = re.compile(r'^([01]?[0-9]|2[0-3]):([0-5][0-9])')
54
54
55
55
cdef set _not_datelike_strings = {' a' , ' A' , ' m' , ' M' , ' p' , ' P' , ' t' , ' T' }
56
56
57
- NAT_SENTINEL = object ()
58
- # This allows us to reference NaT without having to import it
59
-
60
57
# ----------------------------------------------------------------------
61
58
62
59
@@ -136,9 +133,6 @@ def parse_time_string(arg, freq=None, dayfirst=None, yearfirst=None):
136
133
res = parse_datetime_string_with_reso(arg, freq = freq,
137
134
dayfirst = dayfirst,
138
135
yearfirst = yearfirst)
139
- if res[0 ] is NAT_SENTINEL:
140
- from pandas._libs.tslib import NaT
141
- res = (NaT,) + res[1 :]
142
136
return res
143
137
144
138
@@ -206,7 +200,7 @@ cdef inline object _parse_dateabbr_string(object date_string, object default,
206
200
# should be NaT???
207
201
208
202
if date_string in nat_strings:
209
- return NAT_SENTINEL, NAT_SENTINEL , ' '
203
+ return NaT, NaT , ' '
210
204
211
205
date_string = date_string.upper()
212
206
date_len = len (date_string)
@@ -407,7 +401,7 @@ def try_parse_dates(ndarray[object] values, parser=None,
407
401
408
402
# EAFP here
409
403
try :
410
- for i from 0 <= i < n :
404
+ for i in range (n) :
411
405
if values[i] == ' ' :
412
406
result[i] = np.nan
413
407
else :
@@ -419,7 +413,7 @@ def try_parse_dates(ndarray[object] values, parser=None,
419
413
parse_date = parser
420
414
421
415
try :
422
- for i from 0 <= i < n :
416
+ for i in range (n) :
423
417
if values[i] == ' ' :
424
418
result[i] = np.nan
425
419
else :
@@ -459,7 +453,7 @@ def try_parse_date_and_time(ndarray[object] dates, ndarray[object] times,
459
453
else :
460
454
parse_time = time_parser
461
455
462
- for i from 0 <= i < n :
456
+ for i in range (n) :
463
457
d = parse_date(str (dates[i]))
464
458
t = parse_time(str (times[i]))
465
459
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,
479
473
raise ValueError (' Length of years/months/days must all be equal' )
480
474
result = np.empty(n, dtype = ' O' )
481
475
482
- for i from 0 <= i < n :
476
+ for i in range (n) :
483
477
result[i] = datetime(int (years[i]), int (months[i]), int (days[i]))
484
478
485
479
return result
@@ -505,7 +499,7 @@ def try_parse_datetime_components(ndarray[object] years,
505
499
raise ValueError (' Length of all datetime components must be equal' )
506
500
result = np.empty(n, dtype = ' O' )
507
501
508
- for i from 0 <= i < n :
502
+ for i in range (n) :
509
503
float_secs = float (seconds[i])
510
504
secs = int (float_secs)
511
505
0 commit comments