@@ -438,8 +438,25 @@ def integer_label_to_datetime_op(
438438 # Determine if the frequency is fixed by checking if 'op.freq.nanos' is defined.
439439 try :
440440 return _integer_label_to_datetime_op_fixed_frequency (x , y , op )
441+
441442 except ValueError :
442- return _integer_label_to_datetime_op_non_fixed_frequency (x , y , op )
443+ # Non-fixed frequency conversions for units ranging from weeks to years.
444+ rule_code = op .freq .rule_code
445+
446+ if rule_code == "W-SUN" :
447+ return _integer_label_to_datetime_op_weekly_freq (x , y , op )
448+
449+ if rule_code in ("ME" , "M" ):
450+ return _integer_label_to_datetime_op_monthly_freq (x , y , op )
451+
452+ if rule_code in ("QE-DEC" , "Q-DEC" ):
453+ return _integer_label_to_datetime_op_quarterly_freq (x , y , op )
454+
455+ if rule_code in ("YE-DEC" , "A-DEC" , "Y-DEC" ):
456+ return _integer_label_to_datetime_op_yearly_freq (x , y , op )
457+
458+ # If the rule_code is not recognized, raise an error here.
459+ raise ValueError (f"Unsupported frequency rule code: { rule_code } " )
443460
444461
445462def _integer_label_to_datetime_op_fixed_frequency (
@@ -470,30 +487,6 @@ def _integer_label_to_datetime_op_fixed_frequency(
470487 return x_label
471488
472489
473- def _integer_label_to_datetime_op_non_fixed_frequency (
474- x : TypedExpr , y : TypedExpr , op : ops .IntegerLabelToDatetimeOp
475- ) -> sge .Expression :
476- """
477- This function handles non-fixed frequency conversions for units ranging
478- from weeks to years.
479- """
480- rule_code = op .freq .rule_code
481-
482- if rule_code == "W-SUN" :
483- return _integer_label_to_datetime_op_weekly_freq (x , y , op )
484-
485- if rule_code in ("ME" , "M" ):
486- return _integer_label_to_datetime_op_monthly_freq (x , y , op )
487-
488- if rule_code in ("QE-DEC" , "Q-DEC" ):
489- return _integer_label_to_datetime_op_quarterly_freq (x , y , op )
490-
491- if rule_code in ("YE-DEC" , "A-DEC" , "Y-DEC" ):
492- return _integer_label_to_datetime_op_yearly_freq (x , y , op )
493-
494- raise ValueError (rule_code )
495-
496-
497490def _integer_label_to_datetime_op_weekly_freq (
498491 x : TypedExpr , y : TypedExpr , op : ops .IntegerLabelToDatetimeOp
499492) -> sge .Expression :
0 commit comments