o
    Rh                     @   s   d dl Z d dlZdZde Zde Zde Zde Zde Zde Zde Z	de Z
de Zeeeeeeeeee	e
ed	Ze d
ZG dd deZdd ZdddZdd Zdd ZdS )    N   i  <            im  )nsusu   µsu   μsmssmhdwmmyu   ([\d\.]+)([a-zµμ]+)c                   @   s   e Zd ZdZdS )DurationErrorzduration errorN)__name__
__module____qualname____doc__ r   r   U/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/durationpy/duration.pyr   #   s    r   c           	   	   C   s  | }| dv r
t  S d}| r"| d dv r"| d dkrd}| dd } tt| }|s2td||d  dksD|d  t	| krKtd	|d}|D ]/}|
 \}}|tvrctd
||z|t|t|  7 }W qO ty~   td||w |t }t j|| dS )z/Parse a duration string to a datetime.timedelta)0z+0z-0r   r   z+--NzInvalid duration {}z*Extra chars at start or end of duration {}zUnknown unit {} in duration {}zInvalid value {} in duration {})microseconds)datetime	timedeltalist_duration_refinditerr   formatstartendlengroupsunitsfloat	Exception_microsecond_size)	durationoriginalsignmatchestotalmatchvalueunitr   r   r   r   from_str'   s>   $

r2   Fc                 C   sX   |   }|dk r
dnd}tt|t d}t|dk r!t||}nt||}d||S )z0Format a datetime.timedelta to a duration stringr   r    r   z{}{})total_secondsroundabs_second_size_to_str_small_to_str_larger!   )deltaextendedr4   r,   nanoseconds
result_strr   r   r   to_strK   s   
r>   c                 C   sv   d}| sdS t | t }|r| t| 8 } |d|7 }t | t }|r0| t| 8 } |d|7 }| r9|d| 7 }|S )Nr3   r   z{:g}msz{:g}usz{:g}ns)int_millisecond_sizer!   r)   )r<   r;   r=   millisecondsr   r   r   r   r8   Z   s   r8   c           	      C   s  d}|rCt | t }|r| t| 8 } |d|7 }t | t }|r.| t| 8 } |d|7 }t | t }|rC| t| 8 } |d|7 }t | t }|rX| t| 8 } |d|7 }t | t }|rm| t| 8 } |d|7 }t| tt }|r| t| 8 } |d|7 }|S )Nr3   z{:g}yz{:g}mmz{:g}dz{:g}hz{:g}mz{:g}s)	r?   
_year_sizer!   _month_size	_day_size
_hour_size_minute_sizer'   r7   )	r<   r;   r=   yearsmonthsdayshoursminutessecondsr   r   r   r9   q   s6   r9   )F)rer   _nanosecond_sizer)   r@   r7   rF   rE   rD   
_week_sizerC   rB   r&   compiler   
ValueErrorr   r2   r>   r8   r9   r   r   r   r   <module>   s>   

$