@@ -138,11 +138,11 @@ cdef int64_t get_daytime_conversion_factor(int from_index, int to_index) nogil:
138
138
return daytime_conversion_factor_matrix[row - 6 ][col - 6 ]
139
139
140
140
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
143
143
144
144
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 :
146
146
return ordinal
147
147
148
148
@@ -270,7 +270,8 @@ cdef int64_t DtoB_weekday(int64_t unix_date) nogil:
270
270
return ((unix_date + 4 ) // 7 ) * 5 + ((unix_date + 4 ) % 7 ) - 4
271
271
272
272
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:
274
275
cdef:
275
276
int day_of_week = dayofweek(dts.year, dts.month, dts.day)
276
277
@@ -286,21 +287,23 @@ cdef int64_t DtoB(npy_datetimestruct *dts, int roll_back, int64_t unix_date):
286
287
return DtoB_weekday(unix_date)
287
288
288
289
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:
290
292
if (af_info.is_end):
291
293
return (ordinal + 1 ) * af_info.intraday_conversion_factor - 1
292
294
else :
293
295
return ordinal * af_info.intraday_conversion_factor
294
296
295
297
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:
297
300
return ordinal // (af_info.intraday_conversion_factor)
298
301
299
302
300
303
cdef inline int64_t transform_via_day(int64_t ordinal,
301
304
asfreq_info * af_info,
302
305
freq_conv_func first_func,
303
- freq_conv_func second_func):
306
+ freq_conv_func second_func) nogil :
304
307
cdef:
305
308
int64_t result
306
309
@@ -313,7 +316,7 @@ cdef inline int64_t transform_via_day(int64_t ordinal,
313
316
# Conversion _to_ Daily Freq
314
317
315
318
cdef void AtoD_ym(int64_t ordinal, int64_t * year,
316
- int * month, asfreq_info * af_info):
319
+ int * month, asfreq_info * af_info) nogil :
317
320
year[0 ] = ordinal + 1970
318
321
month[0 ] = 1
319
322
@@ -327,7 +330,7 @@ cdef void AtoD_ym(int64_t ordinal, int64_t *year,
327
330
year[0 ] -= 1
328
331
329
332
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 :
331
334
cdef:
332
335
int64_t unix_date, year
333
336
int month
@@ -341,7 +344,7 @@ cdef int64_t asfreq_AtoDT(int64_t ordinal, asfreq_info *af_info):
341
344
342
345
343
346
cdef void QtoD_ym(int64_t ordinal, int * year,
344
- int * month, asfreq_info * af_info):
347
+ int * month, asfreq_info * af_info) nogil :
345
348
year[0 ] = ordinal // 4 + 1970
346
349
month[0 ] = (ordinal % 4 ) * 3 + 1
347
350
@@ -353,7 +356,7 @@ cdef void QtoD_ym(int64_t ordinal, int *year,
353
356
year[0 ] -= 1
354
357
355
358
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 :
357
360
cdef:
358
361
int64_t unix_date
359
362
int year, month
@@ -366,12 +369,12 @@ cdef int64_t asfreq_QtoDT(int64_t ordinal, asfreq_info *af_info):
366
369
return upsample_daytime(unix_date, af_info)
367
370
368
371
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 :
370
373
year[0 ] = ordinal // 12 + 1970
371
374
month[0 ] = ordinal % 12 + 1
372
375
373
376
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 :
375
378
cdef:
376
379
int64_t unix_date
377
380
int year, month
@@ -384,7 +387,7 @@ cdef int64_t asfreq_MtoDT(int64_t ordinal, asfreq_info *af_info):
384
387
return upsample_daytime(unix_date, af_info)
385
388
386
389
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 :
388
391
ordinal = (ordinal * 7 + af_info.from_end - 4 +
389
392
(7 - 1 ) * (af_info.is_end - 1 ))
390
393
return upsample_daytime(ordinal, af_info)
@@ -393,7 +396,7 @@ cdef int64_t asfreq_WtoDT(int64_t ordinal, asfreq_info *af_info):
393
396
# --------------------------------------------------------------------
394
397
# Conversion _to_ BusinessDay Freq
395
398
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 :
397
400
cdef:
398
401
int roll_back
399
402
npy_datetimestruct dts
@@ -404,7 +407,7 @@ cdef int64_t asfreq_AtoB(int64_t ordinal, asfreq_info *af_info):
404
407
return DtoB(& dts, roll_back, unix_date)
405
408
406
409
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 :
408
411
cdef:
409
412
int roll_back
410
413
npy_datetimestruct dts
@@ -415,7 +418,7 @@ cdef int64_t asfreq_QtoB(int64_t ordinal, asfreq_info *af_info):
415
418
return DtoB(& dts, roll_back, unix_date)
416
419
417
420
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 :
419
422
cdef:
420
423
int roll_back
421
424
npy_datetimestruct dts
@@ -426,7 +429,7 @@ cdef int64_t asfreq_MtoB(int64_t ordinal, asfreq_info *af_info):
426
429
return DtoB(& dts, roll_back, unix_date)
427
430
428
431
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 :
430
433
cdef:
431
434
int roll_back
432
435
npy_datetimestruct dts
@@ -437,7 +440,7 @@ cdef int64_t asfreq_WtoB(int64_t ordinal, asfreq_info *af_info):
437
440
return DtoB(& dts, roll_back, unix_date)
438
441
439
442
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 :
441
444
cdef:
442
445
int roll_back
443
446
npy_datetimestruct dts
@@ -452,7 +455,7 @@ cdef int64_t asfreq_DTtoB(int64_t ordinal, asfreq_info *af_info):
452
455
# ----------------------------------------------------------------------
453
456
# Conversion _from_ Daily Freq
454
457
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 :
456
459
cdef:
457
460
npy_datetimestruct dts
458
461
@@ -464,7 +467,7 @@ cdef int64_t asfreq_DTtoA(int64_t ordinal, asfreq_info *af_info):
464
467
return < int64_t> (dts.year - 1970 )
465
468
466
469
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 :
468
471
cdef:
469
472
npy_datetimestruct dts
470
473
int quarter
@@ -485,7 +488,7 @@ cdef int DtoQ_yq(int64_t ordinal, asfreq_info *af_info, int *year):
485
488
return quarter
486
489
487
490
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 :
489
492
cdef:
490
493
int year, quarter
491
494
@@ -495,7 +498,7 @@ cdef int64_t asfreq_DTtoQ(int64_t ordinal, asfreq_info *af_info):
495
498
return < int64_t> ((year - 1970 ) * 4 + quarter - 1 )
496
499
497
500
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 :
499
502
cdef:
500
503
npy_datetimestruct dts
501
504
@@ -504,38 +507,38 @@ cdef int64_t asfreq_DTtoM(int64_t ordinal, asfreq_info *af_info):
504
507
return < int64_t> ((dts.year - 1970 ) * 12 + dts.month - 1 )
505
508
506
509
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 :
508
511
ordinal = downsample_daytime(ordinal, af_info)
509
512
return (ordinal + 3 - af_info.to_end) // 7 + 1
510
513
511
514
512
515
# --------------------------------------------------------------------
513
516
# Conversion _from_ BusinessDay Freq
514
517
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 :
516
519
ordinal = ((ordinal + 3 ) // 5 ) * 7 + (ordinal + 3 ) % 5 - 3
517
520
return upsample_daytime(ordinal, af_info)
518
521
519
522
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 :
521
524
return transform_via_day(ordinal, af_info,
522
525
< freq_conv_func> asfreq_BtoDT,
523
526
< freq_conv_func> asfreq_DTtoA)
524
527
525
528
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 :
527
530
return transform_via_day(ordinal, af_info,
528
531
< freq_conv_func> asfreq_BtoDT,
529
532
< freq_conv_func> asfreq_DTtoQ)
530
533
531
534
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 :
533
536
return transform_via_day(ordinal, af_info,
534
537
< freq_conv_func> asfreq_BtoDT,
535
538
< freq_conv_func> asfreq_DTtoM)
536
539
537
540
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 :
539
542
return transform_via_day(ordinal, af_info,
540
543
< freq_conv_func> asfreq_BtoDT,
541
544
< freq_conv_func> asfreq_DTtoW)
@@ -544,25 +547,25 @@ cdef int64_t asfreq_BtoW(int64_t ordinal, asfreq_info *af_info):
544
547
# ----------------------------------------------------------------------
545
548
# Conversion _from_ Annual Freq
546
549
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 :
548
551
return transform_via_day(ordinal, af_info,
549
552
< freq_conv_func> asfreq_AtoDT,
550
553
< freq_conv_func> asfreq_DTtoA)
551
554
552
555
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 :
554
557
return transform_via_day(ordinal, af_info,
555
558
< freq_conv_func> asfreq_AtoDT,
556
559
< freq_conv_func> asfreq_DTtoQ)
557
560
558
561
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 :
560
563
return transform_via_day(ordinal, af_info,
561
564
< freq_conv_func> asfreq_AtoDT,
562
565
< freq_conv_func> asfreq_DTtoM)
563
566
564
567
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 :
566
569
return transform_via_day(ordinal, af_info,
567
570
< freq_conv_func> asfreq_AtoDT,
568
571
< freq_conv_func> asfreq_DTtoW)
@@ -571,25 +574,25 @@ cdef int64_t asfreq_AtoW(int64_t ordinal, asfreq_info *af_info):
571
574
# ----------------------------------------------------------------------
572
575
# Conversion _from_ Quarterly Freq
573
576
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 :
575
578
return transform_via_day(ordinal, af_info,
576
579
< freq_conv_func> asfreq_QtoDT,
577
580
< freq_conv_func> asfreq_DTtoQ)
578
581
579
582
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 :
581
584
return transform_via_day(ordinal, af_info,
582
585
< freq_conv_func> asfreq_QtoDT,
583
586
< freq_conv_func> asfreq_DTtoA)
584
587
585
588
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 :
587
590
return transform_via_day(ordinal, af_info,
588
591
< freq_conv_func> asfreq_QtoDT,
589
592
< freq_conv_func> asfreq_DTtoM)
590
593
591
594
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 :
593
596
return transform_via_day(ordinal, af_info,
594
597
< freq_conv_func> asfreq_QtoDT,
595
598
< freq_conv_func> asfreq_DTtoW)
@@ -598,19 +601,19 @@ cdef int64_t asfreq_QtoW(int64_t ordinal, asfreq_info *af_info):
598
601
# ----------------------------------------------------------------------
599
602
# Conversion _from_ Monthly Freq
600
603
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 :
602
605
return transform_via_day(ordinal, af_info,
603
606
< freq_conv_func> asfreq_MtoDT,
604
607
< freq_conv_func> asfreq_DTtoA)
605
608
606
609
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 :
608
611
return transform_via_day(ordinal, af_info,
609
612
< freq_conv_func> asfreq_MtoDT,
610
613
< freq_conv_func> asfreq_DTtoQ)
611
614
612
615
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 :
614
617
return transform_via_day(ordinal, af_info,
615
618
< freq_conv_func> asfreq_MtoDT,
616
619
< freq_conv_func> asfreq_DTtoW)
@@ -619,25 +622,25 @@ cdef int64_t asfreq_MtoW(int64_t ordinal, asfreq_info *af_info):
619
622
# ----------------------------------------------------------------------
620
623
# Conversion _from_ Weekly Freq
621
624
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 :
623
626
return transform_via_day(ordinal, af_info,
624
627
< freq_conv_func> asfreq_WtoDT,
625
628
< freq_conv_func> asfreq_DTtoA)
626
629
627
630
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 :
629
632
return transform_via_day(ordinal, af_info,
630
633
< freq_conv_func> asfreq_WtoDT,
631
634
< freq_conv_func> asfreq_DTtoQ)
632
635
633
636
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 :
635
638
return transform_via_day(ordinal, af_info,
636
639
< freq_conv_func> asfreq_WtoDT,
637
640
< freq_conv_func> asfreq_DTtoM)
638
641
639
642
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 :
641
644
return transform_via_day(ordinal, af_info,
642
645
< freq_conv_func> asfreq_WtoDT,
643
646
< freq_conv_func> asfreq_DTtoW)
@@ -971,7 +974,7 @@ cdef int get_yq(int64_t ordinal, int freq, int *quarter, int *year):
971
974
return qtr_freq
972
975
973
976
974
- cdef inline int month_to_quarter(int month):
977
+ cdef inline int month_to_quarter(int month) nogil :
975
978
return (month - 1 ) // 3 + 1
976
979
977
980
@@ -1024,9 +1027,6 @@ def periodarr_to_dt64arr(int64_t[:] periodarr, int freq):
1024
1027
1025
1028
with nogil:
1026
1029
for i in range (l):
1027
- if periodarr[i] == NPY_NAT:
1028
- out[i] = NPY_NAT
1029
- continue
1030
1030
out[i] = period_ordinal_to_dt64(periodarr[i], freq)
1031
1031
1032
1032
return out.base # .base to access underlying np.ndarray
0 commit comments