
    WhC                       U d Z ddlmZ ddlZddlZddlmZmZm	Z	m
Z
 erddlmZmZ ddlmZ dgZed   Zd	ed<   	 ed
   Zd	ed<    ej(                  d      Zded<    eg d      Z eg d      ZdddddddZded<    G d d      Zy)z;Tools for working with the Polars duration string language.    )annotationsN)TYPE_CHECKINGLiteralcastget_args)	ContainerMapping)	TypeAliasIntervalUnit)
nsusmssmhdmoqyr
   )dayshoursminutessecondsmillisecondsmicrosecondsTimedeltaKwdz7^(?P<multiple>-?\d+)(?P<unit>ns|us|ms|mo|m|s|h|d|q|y)\Zzre.Pattern[str]PATTERN_INTERVAL)                  )r   r   r!   r   r   r   r   r   r   )r   r   r   r   r   r   z#Mapping[IntervalUnit, TimedeltaKwd]UNIT_TO_TIMEDELTAc                  j    e Zd Zd	dZ ed      d	 	 	 d
dZedd       Zedd       Ze	dd       Z
y)Intervalc                    || _         || _        y N)multipleunit)selfr)   r*   s      L/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_duration.py__init__zInterval.__init__2   s    %"&	    )r   r   r   r   )unsupportedc                   | j                   |v rd| j                    d}t        |      t        | j                      }t        j                  di || j
                  iS )NzCreating timedelta with z unit is not supported. )r*   NotImplementedErrorr$   dt	timedeltar)   )r+   r/   msgkwds       r,   to_timedeltazInterval.to_timedelta6   sW     99#,TYYK7NOC%c**		*||3sDMM233r.   c                   | j                  |      \  }}|dk(  r |t        vrdt         d| d}t        |      |dk(  r |t        vrdt         d| d}t        |      |dk(  r|dk7  rd	| d}t        |       | ||      S )
Nr   z:Only the following multiples are supported for 'mo' unit: z.
Got: .r   z9Only the following multiples are supported for 'q' unit: r   r   z:Only multiple 1 is currently supported for 'y' unit.
Got: )_parseMONTH_MULTIPLES
ValueErrorQUARTER_MULTIPLES)clseveryr)   r*   r5   s        r,   parsezInterval.parse@   s    E*$4<HO;NN__ghpgqqrsCS/!3;8+<<MN_M``hiqhrrstCS/!3;8q=MhZWXY  S/!8T""r.   c                *     | | j                  |       S r(   )r:   )r>   r?   s     r,   parse_no_constraintszInterval.parse_no_constraintsP   s    CJJu%&&r.   c                    t         j                  |       x}r!t        |d         }t        d|d         }||fS d|  dt	        t
               d}t        |      )Nr)   r   r*   zInvalid `every` string: zB. Expected string of kind <number><unit>, where 'unit' is one of: r9   )r   matchintr   r   r   r<   )r?   rD   r)   r*   r5   s        r,   r:   zInterval._parseT   sq    $**511515,-Hf6DT>!&ug .''/'=&>aA 	 or.   N)r)   rE   r*   r   returnNone)r/   zContainer[IntervalUnit]rF   zdt.timedelta)r?   strrF   r&   )r?   rH   rF   ztuple[int, IntervalUnit])__name__
__module____qualname__r-   	frozensetr7   classmethodr@   rB   staticmethodr:   r1   r.   r,   r&   r&   1   sd    '
 9BBX8Y454	4 # # ' ' 	 	r.   r&   )__doc__
__future__r   datetimer3   retypingr   r   r   r   collections.abcr   r	   typing_extensionsr
   __all__r   __annotations__r   compiler   rL   r;   r=   r$   r&   r1   r.   r,   <module>rY      s    A "  	 9 92+
!"VWi W "Ii  %/BJJ>% /  /0i( 				

: 6 - -r.   