B ` @sdZddlmZmZddlZddlZdZedZe dZ e dZ edd d d Z Gd d d e ZdddZdddZddZdS)zUtility.)wraps lru_cacheNz(?:\r\n|(?!\r\n)[\n\r])|$AZi)maxsizecCsRg}xB|D]:}t|}|t|kr.tkr>nn t|dn|q Wd|S)zLower. )ordappendUC_AUC_Zchrjoin)stringZ new_stringcori/private/var/folders/fw/jsxvvqfs4sz4tdnfdvg5typ5vk77qg/T/pip-install-p7nfy4dm/soupsieve/soupsieve/util.pylowers  2rcs"eZdZdZdfdd ZZS)SelectorSyntaxErrorzSyntax error in a CSS selector.Ncs^d|_d|_d|_|dk rJ|dk rJt||\|_|_|_d||j|j}tt||dS)z Initialize.Nz{} line {}: {})linecolcontextget_pattern_contextformatsuperr__init__)selfmsgpatternindex) __class__rrrszSelectorSyntaxError.__init__)NN)__name__ __module__ __qualname____doc__r __classcell__rr)r"rrsrcsfdd}|S)z Raise a `DeprecationWarning` when wrapped function/method is called. Borrowed from https://stackoverflow.com/a/48632082/866026 cstfdd}|S)Ncs$tjdjtd||S)Nz'{}' is deprecated. {})category stacklevel)warningswarnrr#DeprecationWarning)argskwargs)funcmessager*rr_func3s  z-deprecated.._decorator.._func)r)r0r2)r1r*)r0r _decorator2szdeprecated.._decoratorr)r1r*r3r)r1r*r deprecated+s r4cCstj|t|ddS)zWarn deprecated.)r)r*N)r+r,r-)r1r*rrrwarn_deprecated?sr5c Cs.d}d}d}g}d}xt|D]}|||d}t|dsdt|sdd} d} ||d}nR||kr~|dkrnn,d} ||dkrdndd} ||d}nd} d} t|r|d |d | || dk r|d |d || d |}|d7}|d}q"Wd|||fS) zGet the pattern context.rrr z--> z N z{}{} ^) RE_PATTERN_LINE_SPLITfinditerstartlengroupendr rr) r r!last current_linertextrmZlinetextindentoffsetrrrrIs6   r)r()r()r& functoolsrrr+reDEBUGcompiler;r r r r Exceptionrr4r5rrrrrs