@@ -138,11 +138,11 @@ cdef int64_t get_daytime_conversion_factor(int from_index, int to_index) nogil:
138138 return daytime_conversion_factor_matrix[row - 6 ][col - 6 ]
139139
140140
141- cdef int64_t nofunc(int64_t ordinal, asfreq_info * af_info):
142- return np.iinfo(np.int32).min
141+ cdef int64_t nofunc(int64_t ordinal, asfreq_info * af_info) nogil :
142+ return INT32_MIN
143143
144144
145- cdef int64_t no_op(int64_t ordinal, asfreq_info * af_info):
145+ cdef int64_t no_op(int64_t ordinal, asfreq_info * af_info) nogil :
146146 return ordinal
147147
148148
@@ -270,7 +270,8 @@ cdef int64_t DtoB_weekday(int64_t unix_date) nogil:
270270 return ((unix_date + 4 ) // 7 ) * 5 + ((unix_date + 4 ) % 7 ) - 4
271271
272272
273- cdef int64_t DtoB(npy_datetimestruct * dts, int roll_back, int64_t unix_date):
273+ cdef int64_t DtoB(npy_datetimestruct * dts, int roll_back,
274+ int64_t unix_date) nogil:
274275 cdef:
275276 int day_of_week = dayofweek(dts.year, dts.month, dts.day)
276277
@@ -286,21 +287,23 @@ cdef int64_t DtoB(npy_datetimestruct *dts, int roll_back, int64_t unix_date):
286287 return DtoB_weekday(unix_date)
287288
288289
289- cdef inline int64_t upsample_daytime(int64_t ordinal, asfreq_info * af_info):
290+ cdef inline int64_t upsample_daytime(int64_t ordinal,
291+ asfreq_info * af_info) nogil:
290292 if (af_info.is_end):
291293 return (ordinal + 1 ) * af_info.intraday_conversion_factor - 1
292294 else :
293295 return ordinal * af_info.intraday_conversion_factor
294296
295297
296- cdef inline int64_t downsample_daytime(int64_t ordinal, asfreq_info * af_info):
298+ cdef inline int64_t downsample_daytime(int64_t ordinal,
299+ asfreq_info * af_info) nogil:
297300 return ordinal // (af_info.intraday_conversion_factor)
298301
299302
300303cdef inline int64_t transform_via_day(int64_t ordinal,
301304 asfreq_info * af_info,
302305 freq_conv_func first_func,
303- freq_conv_func second_func):
306+ freq_conv_func second_func) nogil :
304307 cdef:
305308 int64_t result
306309
@@ -313,7 +316,7 @@ cdef inline int64_t transform_via_day(int64_t ordinal,
313316# Conversion _to_ Daily Freq
314317
315318cdef void AtoD_ym(int64_t ordinal, int64_t * year,
316- int * month, asfreq_info * af_info):
319+ int * month, asfreq_info * af_info) nogil :
317320 year[0 ] = ordinal + 1970
318321 month[0 ] = 1
319322
@@ -327,7 +330,7 @@ cdef void AtoD_ym(int64_t ordinal, int64_t *year,
327330 year[0 ] -= 1
328331
329332
330- cdef int64_t asfreq_AtoDT(int64_t ordinal, asfreq_info * af_info):
333+ cdef int64_t asfreq_AtoDT(int64_t ordinal, asfreq_info * af_info) nogil :
331334 cdef:
332335 int64_t unix_date, year
333336 int month
@@ -341,7 +344,7 @@ cdef int64_t asfreq_AtoDT(int64_t ordinal, asfreq_info *af_info):
341344
342345
343346cdef void QtoD_ym(int64_t ordinal, int * year,
344- int * month, asfreq_info * af_info):
347+ int * month, asfreq_info * af_info) nogil :
345348 year[0 ] = ordinal // 4 + 1970
346349 month[0 ] = (ordinal % 4 ) * 3 + 1
347350
@@ -353,7 +356,7 @@ cdef void QtoD_ym(int64_t ordinal, int *year,
353356 year[0 ] -= 1
354357
355358
356- cdef int64_t asfreq_QtoDT(int64_t ordinal, asfreq_info * af_info):
359+ cdef int64_t asfreq_QtoDT(int64_t ordinal, asfreq_info * af_info) nogil :
357360 cdef:
358361 int64_t unix_date
359362 int year, month
@@ -366,12 +369,12 @@ cdef int64_t asfreq_QtoDT(int64_t ordinal, asfreq_info *af_info):
366369 return upsample_daytime(unix_date, af_info)
367370
368371
369- cdef void MtoD_ym(int64_t ordinal, int * year, int * month):
372+ cdef void MtoD_ym(int64_t ordinal, int * year, int * month) nogil :
370373 year[0 ] = ordinal // 12 + 1970
371374 month[0 ] = ordinal % 12 + 1
372375
373376
374- cdef int64_t asfreq_MtoDT(int64_t ordinal, asfreq_info * af_info):
377+ cdef int64_t asfreq_MtoDT(int64_t ordinal, asfreq_info * af_info) nogil :
375378 cdef:
376379 int64_t unix_date
377380 int year, month
@@ -384,7 +387,7 @@ cdef int64_t asfreq_MtoDT(int64_t ordinal, asfreq_info *af_info):
384387 return upsample_daytime(unix_date, af_info)
385388
386389
387- cdef int64_t asfreq_WtoDT(int64_t ordinal, asfreq_info * af_info):
390+ cdef int64_t asfreq_WtoDT(int64_t ordinal, asfreq_info * af_info) nogil :
388391 ordinal = (ordinal * 7 + af_info.from_end - 4 +
389392 (7 - 1 ) * (af_info.is_end - 1 ))
390393 return upsample_daytime(ordinal, af_info)
@@ -393,7 +396,7 @@ cdef int64_t asfreq_WtoDT(int64_t ordinal, asfreq_info *af_info):
393396# --------------------------------------------------------------------
394397# Conversion _to_ BusinessDay Freq
395398
396- cdef int64_t asfreq_AtoB(int64_t ordinal, asfreq_info * af_info):
399+ cdef int64_t asfreq_AtoB(int64_t ordinal, asfreq_info * af_info) nogil :
397400 cdef:
398401 int roll_back
399402 npy_datetimestruct dts
@@ -404,7 +407,7 @@ cdef int64_t asfreq_AtoB(int64_t ordinal, asfreq_info *af_info):
404407 return DtoB(& dts, roll_back, unix_date)
405408
406409
407- cdef int64_t asfreq_QtoB(int64_t ordinal, asfreq_info * af_info):
410+ cdef int64_t asfreq_QtoB(int64_t ordinal, asfreq_info * af_info) nogil :
408411 cdef:
409412 int roll_back
410413 npy_datetimestruct dts
@@ -415,7 +418,7 @@ cdef int64_t asfreq_QtoB(int64_t ordinal, asfreq_info *af_info):
415418 return DtoB(& dts, roll_back, unix_date)
416419
417420
418- cdef int64_t asfreq_MtoB(int64_t ordinal, asfreq_info * af_info):
421+ cdef int64_t asfreq_MtoB(int64_t ordinal, asfreq_info * af_info) nogil :
419422 cdef:
420423 int roll_back
421424 npy_datetimestruct dts
@@ -426,7 +429,7 @@ cdef int64_t asfreq_MtoB(int64_t ordinal, asfreq_info *af_info):
426429 return DtoB(& dts, roll_back, unix_date)
427430
428431
429- cdef int64_t asfreq_WtoB(int64_t ordinal, asfreq_info * af_info):
432+ cdef int64_t asfreq_WtoB(int64_t ordinal, asfreq_info * af_info) nogil :
430433 cdef:
431434 int roll_back
432435 npy_datetimestruct dts
@@ -437,7 +440,7 @@ cdef int64_t asfreq_WtoB(int64_t ordinal, asfreq_info *af_info):
437440 return DtoB(& dts, roll_back, unix_date)
438441
439442
440- cdef int64_t asfreq_DTtoB(int64_t ordinal, asfreq_info * af_info):
443+ cdef int64_t asfreq_DTtoB(int64_t ordinal, asfreq_info * af_info) nogil :
441444 cdef:
442445 int roll_back
443446 npy_datetimestruct dts
@@ -452,7 +455,7 @@ cdef int64_t asfreq_DTtoB(int64_t ordinal, asfreq_info *af_info):
452455# ----------------------------------------------------------------------
453456# Conversion _from_ Daily Freq
454457
455- cdef int64_t asfreq_DTtoA(int64_t ordinal, asfreq_info * af_info):
458+ cdef int64_t asfreq_DTtoA(int64_t ordinal, asfreq_info * af_info) nogil :
456459 cdef:
457460 npy_datetimestruct dts
458461
@@ -464,7 +467,7 @@ cdef int64_t asfreq_DTtoA(int64_t ordinal, asfreq_info *af_info):
464467 return < int64_t> (dts.year - 1970 )
465468
466469
467- cdef int DtoQ_yq(int64_t ordinal, asfreq_info * af_info, int * year):
470+ cdef int DtoQ_yq(int64_t ordinal, asfreq_info * af_info, int * year) nogil :
468471 cdef:
469472 npy_datetimestruct dts
470473 int quarter
@@ -485,7 +488,7 @@ cdef int DtoQ_yq(int64_t ordinal, asfreq_info *af_info, int *year):
485488 return quarter
486489
487490
488- cdef int64_t asfreq_DTtoQ(int64_t ordinal, asfreq_info * af_info):
491+ cdef int64_t asfreq_DTtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
489492 cdef:
490493 int year, quarter
491494
@@ -495,7 +498,7 @@ cdef int64_t asfreq_DTtoQ(int64_t ordinal, asfreq_info *af_info):
495498 return < int64_t> ((year - 1970 ) * 4 + quarter - 1 )
496499
497500
498- cdef int64_t asfreq_DTtoM(int64_t ordinal, asfreq_info * af_info):
501+ cdef int64_t asfreq_DTtoM(int64_t ordinal, asfreq_info * af_info) nogil :
499502 cdef:
500503 npy_datetimestruct dts
501504
@@ -504,38 +507,38 @@ cdef int64_t asfreq_DTtoM(int64_t ordinal, asfreq_info *af_info):
504507 return < int64_t> ((dts.year - 1970 ) * 12 + dts.month - 1 )
505508
506509
507- cdef int64_t asfreq_DTtoW(int64_t ordinal, asfreq_info * af_info):
510+ cdef int64_t asfreq_DTtoW(int64_t ordinal, asfreq_info * af_info) nogil :
508511 ordinal = downsample_daytime(ordinal, af_info)
509512 return (ordinal + 3 - af_info.to_end) // 7 + 1
510513
511514
512515# --------------------------------------------------------------------
513516# Conversion _from_ BusinessDay Freq
514517
515- cdef int64_t asfreq_BtoDT(int64_t ordinal, asfreq_info * af_info):
518+ cdef int64_t asfreq_BtoDT(int64_t ordinal, asfreq_info * af_info) nogil :
516519 ordinal = ((ordinal + 3 ) // 5 ) * 7 + (ordinal + 3 ) % 5 - 3
517520 return upsample_daytime(ordinal, af_info)
518521
519522
520- cdef int64_t asfreq_BtoA(int64_t ordinal, asfreq_info * af_info):
523+ cdef int64_t asfreq_BtoA(int64_t ordinal, asfreq_info * af_info) nogil :
521524 return transform_via_day(ordinal, af_info,
522525 < freq_conv_func> asfreq_BtoDT,
523526 < freq_conv_func> asfreq_DTtoA)
524527
525528
526- cdef int64_t asfreq_BtoQ(int64_t ordinal, asfreq_info * af_info):
529+ cdef int64_t asfreq_BtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
527530 return transform_via_day(ordinal, af_info,
528531 < freq_conv_func> asfreq_BtoDT,
529532 < freq_conv_func> asfreq_DTtoQ)
530533
531534
532- cdef int64_t asfreq_BtoM(int64_t ordinal, asfreq_info * af_info):
535+ cdef int64_t asfreq_BtoM(int64_t ordinal, asfreq_info * af_info) nogil :
533536 return transform_via_day(ordinal, af_info,
534537 < freq_conv_func> asfreq_BtoDT,
535538 < freq_conv_func> asfreq_DTtoM)
536539
537540
538- cdef int64_t asfreq_BtoW(int64_t ordinal, asfreq_info * af_info):
541+ cdef int64_t asfreq_BtoW(int64_t ordinal, asfreq_info * af_info) nogil :
539542 return transform_via_day(ordinal, af_info,
540543 < freq_conv_func> asfreq_BtoDT,
541544 < freq_conv_func> asfreq_DTtoW)
@@ -544,25 +547,25 @@ cdef int64_t asfreq_BtoW(int64_t ordinal, asfreq_info *af_info):
544547# ----------------------------------------------------------------------
545548# Conversion _from_ Annual Freq
546549
547- cdef int64_t asfreq_AtoA(int64_t ordinal, asfreq_info * af_info):
550+ cdef int64_t asfreq_AtoA(int64_t ordinal, asfreq_info * af_info) nogil :
548551 return transform_via_day(ordinal, af_info,
549552 < freq_conv_func> asfreq_AtoDT,
550553 < freq_conv_func> asfreq_DTtoA)
551554
552555
553- cdef int64_t asfreq_AtoQ(int64_t ordinal, asfreq_info * af_info):
556+ cdef int64_t asfreq_AtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
554557 return transform_via_day(ordinal, af_info,
555558 < freq_conv_func> asfreq_AtoDT,
556559 < freq_conv_func> asfreq_DTtoQ)
557560
558561
559- cdef int64_t asfreq_AtoM(int64_t ordinal, asfreq_info * af_info):
562+ cdef int64_t asfreq_AtoM(int64_t ordinal, asfreq_info * af_info) nogil :
560563 return transform_via_day(ordinal, af_info,
561564 < freq_conv_func> asfreq_AtoDT,
562565 < freq_conv_func> asfreq_DTtoM)
563566
564567
565- cdef int64_t asfreq_AtoW(int64_t ordinal, asfreq_info * af_info):
568+ cdef int64_t asfreq_AtoW(int64_t ordinal, asfreq_info * af_info) nogil :
566569 return transform_via_day(ordinal, af_info,
567570 < freq_conv_func> asfreq_AtoDT,
568571 < freq_conv_func> asfreq_DTtoW)
@@ -571,25 +574,25 @@ cdef int64_t asfreq_AtoW(int64_t ordinal, asfreq_info *af_info):
571574# ----------------------------------------------------------------------
572575# Conversion _from_ Quarterly Freq
573576
574- cdef int64_t asfreq_QtoQ(int64_t ordinal, asfreq_info * af_info):
577+ cdef int64_t asfreq_QtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
575578 return transform_via_day(ordinal, af_info,
576579 < freq_conv_func> asfreq_QtoDT,
577580 < freq_conv_func> asfreq_DTtoQ)
578581
579582
580- cdef int64_t asfreq_QtoA(int64_t ordinal, asfreq_info * af_info):
583+ cdef int64_t asfreq_QtoA(int64_t ordinal, asfreq_info * af_info) nogil :
581584 return transform_via_day(ordinal, af_info,
582585 < freq_conv_func> asfreq_QtoDT,
583586 < freq_conv_func> asfreq_DTtoA)
584587
585588
586- cdef int64_t asfreq_QtoM(int64_t ordinal, asfreq_info * af_info):
589+ cdef int64_t asfreq_QtoM(int64_t ordinal, asfreq_info * af_info) nogil :
587590 return transform_via_day(ordinal, af_info,
588591 < freq_conv_func> asfreq_QtoDT,
589592 < freq_conv_func> asfreq_DTtoM)
590593
591594
592- cdef int64_t asfreq_QtoW(int64_t ordinal, asfreq_info * af_info):
595+ cdef int64_t asfreq_QtoW(int64_t ordinal, asfreq_info * af_info) nogil :
593596 return transform_via_day(ordinal, af_info,
594597 < freq_conv_func> asfreq_QtoDT,
595598 < freq_conv_func> asfreq_DTtoW)
@@ -598,19 +601,19 @@ cdef int64_t asfreq_QtoW(int64_t ordinal, asfreq_info *af_info):
598601# ----------------------------------------------------------------------
599602# Conversion _from_ Monthly Freq
600603
601- cdef int64_t asfreq_MtoA(int64_t ordinal, asfreq_info * af_info):
604+ cdef int64_t asfreq_MtoA(int64_t ordinal, asfreq_info * af_info) nogil :
602605 return transform_via_day(ordinal, af_info,
603606 < freq_conv_func> asfreq_MtoDT,
604607 < freq_conv_func> asfreq_DTtoA)
605608
606609
607- cdef int64_t asfreq_MtoQ(int64_t ordinal, asfreq_info * af_info):
610+ cdef int64_t asfreq_MtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
608611 return transform_via_day(ordinal, af_info,
609612 < freq_conv_func> asfreq_MtoDT,
610613 < freq_conv_func> asfreq_DTtoQ)
611614
612615
613- cdef int64_t asfreq_MtoW(int64_t ordinal, asfreq_info * af_info):
616+ cdef int64_t asfreq_MtoW(int64_t ordinal, asfreq_info * af_info) nogil :
614617 return transform_via_day(ordinal, af_info,
615618 < freq_conv_func> asfreq_MtoDT,
616619 < freq_conv_func> asfreq_DTtoW)
@@ -619,25 +622,25 @@ cdef int64_t asfreq_MtoW(int64_t ordinal, asfreq_info *af_info):
619622# ----------------------------------------------------------------------
620623# Conversion _from_ Weekly Freq
621624
622- cdef int64_t asfreq_WtoA(int64_t ordinal, asfreq_info * af_info):
625+ cdef int64_t asfreq_WtoA(int64_t ordinal, asfreq_info * af_info) nogil :
623626 return transform_via_day(ordinal, af_info,
624627 < freq_conv_func> asfreq_WtoDT,
625628 < freq_conv_func> asfreq_DTtoA)
626629
627630
628- cdef int64_t asfreq_WtoQ(int64_t ordinal, asfreq_info * af_info):
631+ cdef int64_t asfreq_WtoQ(int64_t ordinal, asfreq_info * af_info) nogil :
629632 return transform_via_day(ordinal, af_info,
630633 < freq_conv_func> asfreq_WtoDT,
631634 < freq_conv_func> asfreq_DTtoQ)
632635
633636
634- cdef int64_t asfreq_WtoM(int64_t ordinal, asfreq_info * af_info):
637+ cdef int64_t asfreq_WtoM(int64_t ordinal, asfreq_info * af_info) nogil :
635638 return transform_via_day(ordinal, af_info,
636639 < freq_conv_func> asfreq_WtoDT,
637640 < freq_conv_func> asfreq_DTtoM)
638641
639642
640- cdef int64_t asfreq_WtoW(int64_t ordinal, asfreq_info * af_info):
643+ cdef int64_t asfreq_WtoW(int64_t ordinal, asfreq_info * af_info) nogil :
641644 return transform_via_day(ordinal, af_info,
642645 < freq_conv_func> asfreq_WtoDT,
643646 < freq_conv_func> asfreq_DTtoW)
@@ -971,7 +974,7 @@ cdef int get_yq(int64_t ordinal, int freq, int *quarter, int *year):
971974 return qtr_freq
972975
973976
974- cdef inline int month_to_quarter(int month):
977+ cdef inline int month_to_quarter(int month) nogil :
975978 return (month - 1 ) // 3 + 1
976979
977980
@@ -1024,9 +1027,6 @@ def periodarr_to_dt64arr(int64_t[:] periodarr, int freq):
10241027
10251028 with nogil:
10261029 for i in range (l):
1027- if periodarr[i] == NPY_NAT:
1028- out[i] = NPY_NAT
1029- continue
10301030 out[i] = period_ordinal_to_dt64(periodarr[i], freq)
10311031
10321032 return out.base # .base to access underlying np.ndarray
0 commit comments