@@ -441,23 +441,24 @@ def set_run_nday(self, nday):
441441 def set_freq (self , name , freq ):
442442 """Set binary output frequency using Pandas offset or string that evaluates as offset"""
443443 dt = int (self ["dt" ])
444- if type (freq ) in (str , pd .Timedelta ):
445- freq = pd .tseries .frequencies .to_offset (freq )
446- dt = pd .tseries .frequencies .to_offset (f"{ dt } s" )
447- nspool = pd .Timedelta (freq ) / pd .Timedelta (dt )
448- elif isinstance (freq , pd .offsets .DateOffset ):
449- dt = pd .tseries .frequencies .to_offset (f"{ dt } s" )
450- nspool = pd .Timedelta (freq ) / pd .Timedelta (dt )
451- if abs (nspool - round (nspool )) > 0.01 :
452- raise ValueError ("Output freq not divisible by dt" )
453- else :
454- nspool = round (nspool )
455- else :
456- print (type (freq ))
444+
445+ # Normalize to Timedelta
446+ if isinstance (freq , str ):
447+ freq = pd .to_timedelta (freq )
448+ elif isinstance (freq , pd .tseries .offsets .BaseOffset ):
449+ freq = pd .to_timedelta (str (freq ))
450+ elif not isinstance (freq , pd .Timedelta ):
457451 raise ValueError (
458- "Entry must be string or offset or something that is convertible to offset"
452+ "Entry must be string or offset or Timedelta that is convertible to offset"
459453 )
460- self [name ] = int (nspool )
454+
455+ dt_td = pd .Timedelta (seconds = dt )
456+ nspool = freq / dt_td
457+
458+ if abs (nspool - round (nspool )) > 0.01 :
459+ raise ValueError ("Output freq not divisible by dt" )
460+
461+ self [name ] = int (round (nspool ))
461462
462463 def get_station_out_freq (self ):
463464 return self .get_freq ("nspool_sta" )
0 commit comments