o qg7@sdZddlZddlmZddlZ dddddd d Zd'd d Zd(ddZd'ddZddZ d)ddZ d)ddZ d*ddZ d*ddZ ddZdd Zd+d#d$Zd%d&ZdS),z Program Name: time_util.py Contact(s): George McCabe Abstract: History Log: Initial version Usage: Create a subclass Parameters: None Input Files: N/A Output Files: N/A N) relativedeltayearmonthdayhourminutesecond)YmdHMSrcCst|tr tt||Sd}d}t||}|rv|ddkr!d}t|d|}|d}|dkr>|dkr|sb|rWdSd|r^d SdSd|}|}||S) z!Check relativedelta object contents and create string representation of the highest unit available (year, then, month, day, hour, minute, second). This assumes that only one unit has been set in the objectr)rENrrrZ0Hz0 hours)rrti_get_lead_stringrrrrrrrr?keysrHappendjoinrD)r7rErAnegative output_list time_letterrGr)r)r*rJs0  (    rJcCsji}|}ddg}d|vr|d|d<|dd|d<|D]}||vr/||||<q!d|vr[t|dtrD|d|d<na|ddkrQ|d|d<nTt|dd|d<nJd |vrkt|d d|d<n:d |vr{t|d d |d<n*d |vrt|d }d }|dkr|d}|d}t||d|d<ntd d|d<d|vrtj|dd|d<nd|vrtj|dd|d<ntjd d|d<d|vrd|vrd|vr|ddkr|d=n |ddkr|d=d|vr)|d|d<d|vrtddS|ddkrd|d<n |d|d|d<d|d<ngd|vrO|d|d<|ddkr@d|d<n |d|d|d<d|d<nAd|vr|d|d<d|vritddS|d|d|d<|ddkrd|d<n|d|d|d<ntddS|ddkr|d|d|d<|dd|d<|dd|d<|ddkr|dd|d<|ddkrd|d <nt |d|d <t|d |d<t|dd!|d<d|vr|d|d"<|ddkr|St|d|d }|dj d kr|dj d kr||d<t|d!|d <t|d#|d <||d <|S)$Ncustominstancenowz%Y%m%dtodayr7r:rr8Z lead_minutesr lead_hoursr)rr offset_hoursroffsetinitr;Zloop_byz?FATAL ERROR: Cannot specify both valid and init to time utilityda_initzBFATAL ERROR: Cannot specify both valid and da_init to time utilityzDFATAL ERROR: Need to specify valid, init, or da_init to time utilityz %Y%m%d%H%M%SZ da_init_fmtZ valid_fmtZinit_fmtZALLZ lead_stringr2dater1) copyrKstrftimerrrdatetime timedeltaprintrJr/rr)Zinput_dict_preserveZout_dictZ input_dictZ KEYS_TO_COPYkeyrUZ lead_daysr/r)r)r* ti_calculates                            rc)r)rN)N)r:)TF)__doc__r_dateutil.relativedeltarr"r?r r-r0r.r9r+r<r=rBrHrJrcr)r)r)r*s0   0     &