B
    5d.                 @  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ddZG dd deZdddddddZd ddddddZddddddZdS )!zUtility.    )annotations)wraps	lru_cacheN)CallableAny   z(?:\r\n|(?!\r\n)[\n\r])|$AZi   )maxsizestr)stringreturnc             C  sR   g }xB| D ]:}t |}|t|  kr.tkr>n nt|d n| q
W d|S )zLower.     )ordappendUC_AUC_Zchrjoin)r   Z
new_stringco r   2/tmp/pip-unpacked-wheel-oqxt2_cy/soupsieve/util.pylower   s
    
2r   c                  s.   e Zd ZdZd
ddddd fdd	Z  ZS )SelectorSyntaxErrorzSyntax error in a CSS selector.Nr   z
str | Nonez
int | NoneNone)msgpatternindexr   c               sZ   d| _ d| _d| _|dk	rJ|dk	rJt||\| _| _ | _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)__name__
__module____qualname____doc__r&   __classcell__r   r   )r(   r   r      s   r      intzCallable[..., Any])message
stacklevelr   c               s   dd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
    zCallable[..., Any])funcr   c               s&   t  dddd fdd}|S )Nr   )argskwargsr   c                s(   t jd j d td  | |S )N'z' is deprecated. )categoryr1   )warningswarnr)   DeprecationWarning)r3   r4   )r2   r0   r1   r   r   _deprecated_func9   s
    z6deprecated.<locals>._wrapper.<locals>._deprecated_func)r   )r2   r:   )r0   r1   )r2   r   _wrapper8   s    "zdeprecated.<locals>._wrapperr   )r0   r1   r;   r   )r0   r1   r   
deprecated-   s    
r<   r   c             C  s   t j| t|d dS )zWarn deprecated.)r6   r1   N)r7   r8   r9   )r0   r1   r   r   r   warn_deprecatedE   s    r=   ztuple[str, int, int])r   r   r   c             C  s2  d}d}d}g }d}d}xt | D ]}| ||d }	t|dsht|shd}
d}|| d }nR||  kr|dk rn n,d}
||dkrdndd }|| d }nd}
d}t|r|d	 |d
|
|	 |dk	r|d	 |d||  d  |}|d7 }|d}q&W 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mZlinetextindentr   r   r   r#   O   s8    


r#   )r.   )r.   )r,   
__future__r   	functoolsr   r   r7   retypingr   r   DEBUGcompilerC   r   r   r   r   	Exceptionr   r<   r=   r#   r   r   r   r   <module>   s   

