@@ -2519,20 +2519,41 @@ def _validate_inferred_freq(
2519
2519
-------
2520
2520
freq : DateOffset or None
2521
2521
"""
2522
- offset1 = to_offset (freq )
2523
- offset2 = to_offset (inferred_freq )
2524
2522
2525
- freq_equal = type (offset1 ) == type (offset2 )
2526
2523
2524
+ def _validate_inferred_freq (freq , inferred_freq ):
2525
+ """
2526
+ Ensure that freq matches inferred_freq unless they are logically equivalent.
2527
+ """
2527
2528
if inferred_freq is not None :
2528
- if freq is not None and not freq_equal :
2529
+ if freq is not None :
2530
+ offset1 , offset2 = to_offset (freq ), to_offset (inferred_freq )
2531
+ if type (offset1 ) == type (offset2 ):
2532
+ if hasattr (offset1 , "startingMonth" ) and hasattr (
2533
+ offset2 , "startingMonth"
2534
+ ):
2535
+ if (offset1 .startingMonth - offset2 .startingMonth ) % 3 != 0 :
2536
+ raise ValueError (
2537
+ f"Inferred frequency { inferred_freq } from passed "
2538
+ "values does not conform to passed frequency "
2539
+ f"{ freq .freqstr } "
2540
+ )
2541
+ if (
2542
+ hasattr (offset1 , "n" )
2543
+ and hasattr (offset2 , "n" )
2544
+ and offset1 .n != offset2 .n
2545
+ ):
2546
+ raise ValueError (
2547
+ f"Inferred frequency { inferred_freq } from passed "
2548
+ "values does not conform to passed frequency "
2549
+ f"{ freq .freqstr } "
2550
+ )
2529
2551
raise ValueError (
2530
2552
f"Inferred frequency { inferred_freq } from passed "
2531
2553
"values does not conform to passed frequency "
2532
2554
f"{ freq .freqstr } "
2533
2555
)
2534
- if freq is None :
2535
- freq = inferred_freq
2556
+ freq = inferred_freq
2536
2557
2537
2558
return freq
2538
2559
0 commit comments