o
    LhC                     @  s   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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 dZdS )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                   @  sT   e Zd ZdddZed	d
dddZedddZedddZe	dddZ
dS )Intervalmultipleintunitr
   returnNonec                C  s   || _ || _d S N)r%   r'   )selfr%   r'    r,   S/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_duration.py__init__2   s   
zInterval.__init__)r   r   r   r   )unsupportedr/   Container[IntervalUnit]dt.timedeltac                C  s@   | 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,   )r'   NotImplementedErrorr#   dt	timedeltar%   )r+   r/   msgkwdr,   r,   r-   to_timedelta6   s
   

zInterval.to_timedeltaeverystrc                 C  s   |  |\}}|dkr|tvrdt d| d}t||dkr1|tvr1dt d| d}t||dkrC|dkrCd	| 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)clsr8   r%   r'   r5   r,   r,   r-   parse@   s   

zInterval.parsec                 C  s   | |  | S r*   )r;   )r?   r8   r,   r,   r-   parse_no_constraintsP   s   zInterval.parse_no_constraintstuple[int, IntervalUnit]c                 C  sN   t |  }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: r:   )r   matchr&   r   r   r
   r=   )r8   rC   r%   r'   r5   r,   r,   r-   r;   T   s   zInterval._parseN)r%   r&   r'   r
   r(   r)   )r/   r0   r(   r1   )r8   r9   r(   r$   )r8   r9   r(   rB   )__name__
__module____qualname__r.   	frozensetr7   classmethodr@   rA   staticmethodr;   r,   r,   r,   r-   r$   1   s    

r$   )__doc__
__future__r   datetimer3   retypingr   r   r   r   collections.abcr   r   typing_extensionsr	   __all__r
   __annotations__r   compiler   rG   r<   r>   r#   r$   r,   r,   r,   r-   <module>   s6    
