o
    iA                     @  s   d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	m
Z
mZ dZedZedZed	Zed
dd"ddZG dd deZd#d$ddZd#d%ddZd&d d!ZdS )'zUtility.    )annotations)wraps	lru_cacheN)CallableAnyOptional   z(?:\r\n|(?!\r\n)[\n\r])|$AZi   )maxsizestringstrreturnc                 C  sN   g }| D ]}t |}|t|  krtkrn nt|d n| qd|S )zLower.     )ordappendUC_AUC_Zchrjoin)r   
new_stringco r   I/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/soupsieve/util.pylower   s
   0
r   c                      s$   e Zd ZdZdd fddZ  ZS )SelectorSyntaxErrorzSyntax error in a CSS selector.Nmsgr   patternOptional[str]indexOptional[int]r   Nonec                   sZ   d| _ d| _d| _|dur%|dur%t||\| _| _ | _d|| j | j}t | dS )zInitialize.Nz{}
  line {}:
{})linecolcontextget_pattern_contextformatsuper__init__)selfr   r   r!   	__class__r   r   r*      s   zSelectorSyntaxError.__init__)NN)r   r   r   r    r!   r"   r   r#   )__name__
__module____qualname____doc__r*   __classcell__r   r   r,   r   r      s    r      message
stacklevelintCallable[..., Any]c                   s   d fdd}|S )z
    Raise a `DeprecationWarning` when wrapped function/method is called.

    Usage:

        @deprecated("This method will be removed in version X; use Y instead.")
        def some_method()"
            pass
    funcr7   r   c                   s   t  d fdd}|S )Nargsr   kwargsr   c                    s,   t jd j d td  | i |S )N'z' is deprecated. categoryr5   )warningswarnr.   DeprecationWarning)r9   r:   )r8   r4   r5   r   r   _deprecated_func9   s   z6deprecated.<locals>._wrapper.<locals>._deprecated_func)r9   r   r:   r   r   r   )r   )r8   rA   r4   r5   )r8   r   _wrapper8   s   zdeprecated.<locals>._wrapperN)r8   r7   r   r7   r   )r4   r5   rC   r   rB   r   
deprecated-   s   
rD   r#   c                 C  s   t j| t|d dS )zWarn deprecated.r<   N)r>   r?   r@   rB   r   r   r   warn_deprecatedE   s
   
rE   r   r!   tuple[str, int, int]c                 C  s*  d}d}d}g }d}d}t | D ]{}| ||d }	t|ds2t|s2d}
d}|| d }n)||  kr?|dk rWn nd}
||dkrLdndd }|| d }nd}
d}t|rd|d	 |d
|
|	 |dur|d	 |d||  d  |}|d7 }|d}qd|||fS )zGet the pattern context.r   r   Nr   z-->    z    
z{}{} ^)	RE_PATTERN_LINE_SPLITfinditerstartlengroupendr   r(   r   )r   r!   lastcurrent_liner%   textr$   offsetmlinetextindentr   r   r   r'   O   s8   

r'   )r   r   r   r   )r3   )r4   r   r5   r6   r   r7   )r4   r   r5   r6   r   r#   )r   r   r!   r6   r   rF   )r1   
__future__r   	functoolsr   r   r>   retypingr   r   r   DEBUGcompilerL   r   r   r   r   	Exceptionr   rD   rE   r'   r   r   r   r   <module>   s     


