o
    ê6Wj  ã                   @  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
 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é   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   ú]/home/esfera/Documents/content_generation/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ú
str | NoneÚindexú
int | Noner   ÚNonec                   s`   d| _ d| _d| _|dur(|dur(t||ƒ\| _| _ | _|› d| j › d| j› �}tƒ  |¡ dS )zInitialize.Nz
  line z:
)ÚlineÚcolÚcontextÚget_pattern_contextÚ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
    Úfuncr5   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. ©Úcategoryr3   )ÚwarningsÚwarnr,   ÚDeprecationWarning)r7   r8   )r6   r2   r3   r   r   Ú_deprecated_func9   s   ýz6deprecated.<locals>._wrapper.<locals>._deprecated_func)r7   r   r8   r   r   r   )r   )r6   r?   ©r2   r3   )r6   r   Ú_wrapper8   s   zdeprecated.<locals>._wrapperN)r6   r5   r   r5   r   )r2   r3   rA   r   r@   r   Ú
deprecated-   s   
rB   r"   c                 C  s   t j| t|d� dS )zWarn deprecated.r:   N)r<   r=   r>   r@   r   r   r   Úwarn_deprecatedE   s
   
ýrC   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urƒ| d	¡ | d
||  d ¡ |}|d7 }| d¡}qd |¡||fS )zGet the pattern context.r   r   Nr   éÿÿÿÿz--> é   z    Ú
ú ú^)ÚRE_PATTERN_LINE_SPLITÚfinditerÚstartÚlenÚgroupÚendr   r   )r   r    ÚlastÚcurrent_liner$   Útextr#   ÚoffsetÚmÚlinetextÚindentr   r   r   r&   O   s8   

r&   )r   r   r   r   )r1   )r2   r   r3   r4   r   r5   )r2   r   r3   r4   r   r"   )r   r   r    r4   r   rD   )r/   Ú
__future__r   Ú	functoolsr   r   r<   ÚreÚtypingr   r   ÚDEBUGÚcompilerJ   r   r   r   r   Ú	Exceptionr   rB   rC   r&   r   r   r   r   Ú<module>   s     


