a DOgK @sdZddlTdZdZedZedZedZedZed Z ee e hZ ee eeeeehZeed feed feed feed feedfeedfeedfeedfdZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeeefgfee fd Z!e"e#e$e%e&e'e(e)dZ*e'e#Be)BZ+e,e(BZ-Gddde.Z/GdddZ0GdddZ1GdddZ2ddZ3dd Z4d!d"Z5d#d$Z6d3d&d'Z7d(d)Z8d*d+Z9d4d-d.Z:d/d0Z;d1d2Ztt|dkr||tvrj|d|t|tt|dfWSWntyYn0|d|t|dS)Nrr=rarincomplete escape %srU N{ missing {}character nameundefined character name %r\N{}.octal escape value %s outside of range 0-0o377 bad escape %s)ESCAPESr* CATEGORIESrEr HEXDIGITSr%r)LITERALintrrchr unicodedatar{rordlookupKeyError TypeError OCTDIGITSDIGITS ValueError ASCIILETTERS)r4escaper]rrcharnamerrr _class_escape(sp                 rc Csft|}|r|St|}|r$|Sz|dd}|dkr||dt7}t|dkrl|d|t|tt|dddfWS|dkr|j r||dt7}t|dkr|d|t|tt|dddfWS|d krB|j rB||d t7}t|d kr|d|t|t|ddd}t |t|fWS|d kr|j rd dl }| dsr|d| dd}zt||}Wn4ttfy|d|t|tdYn0t|fWS|dkr||dt7}tt|ddd fWS|tvr|jtvr||7}|dtvr|dtvr|jtvr||7}t|ddd }|dkr|d|t|t|fWSt|dd}||jkr||s|dt||||t|fWS|d|t|dt|dkr6|tvr$|d|t|tt|dfWSWntyLYn0|d|t|dS)Nr=rarrrrrrrrrrrrrrrrr0rrr3invalid group reference %dr)rr*rrrr%r)rrrrrrr{rrrrrrrrur&r2r5rirr)r4rr8r]rrrgrouprrr_escapeds                        rcCstt|Sr$)rBdictfromkeys)itemsrrr_uniqsrcCsVg}|j}|j}|}|t||||d| o2| |dsqDqt|dkrX|dSt|}d} |D].} | stq| dur| d} qh| d| krhqqh|D] } | d=q|| q`qq`g} |D]h} t| dkrq@| d\} } | tur| | | fq| tur"| ddtur"| | qq@q|tt | f|S|t d|ff|S)Nr=|r) r'r{r_parser%r7rrENEGATEextendrrF)r4r8verbosenestedr itemsappend sourcematchstart subpatternprefixitemsetrNrOrrr _parse_subsN        rFc/ Cs t|}|j}|j}|j}t} t} |j} | dur4 qR| dvr@ qR||rx| tvrTq"| dkrx|} | dusv| dkr\q"q\q"| ddkrt|| |} || q"| t vr|t | | fq"| dkr| d} g}|j}|jdkrddl }|j d| t|d d |d }|} | dur0|d | | | d krF|rFqbn| ddkr`t|| }n~|r| dvr|j| krddl }|j d| dkrdn| dkrdn| dkrdnd| dft|d d t | | f}|dr<|}|dur |d | | |d krL|dtur0|dd}|||t | dfqb|ddkrft||}n>|dkrddl }|j d| dt|d d t | |f}|dt ks|dt krd| |f}||t| dt||d}|d}||kr*d| |f}||t| dt||t||ffn"|dturV|dd}||q t|}| |dkr|ddt ur|r|t|ddfn ||dn"|r|dtdf|t|fq"| tvr.| } | dkrd\}}nB| dkrdt}}n*| dkr0dt}}n| dkr4|jdkrX|t | | fq"dt}}d }}|jtvr||7}qj|d!r|jtvr||7}qn|}|ds|t | | f|| q"|rt|}|tkrtd"|rBt|}|tkrtd"||krB|d#| | ntd$|f|rV|d%d}nd}|rr|ddtur|d&| | t| |ddtvr|d'| | t| |ddt ur|dd\}}}}|dur|s|s|}|drt!|||ff|d%<nt"|||ff|d%<q"| d(krF|t#dfq"| d)k r| d} d*}d}!d}d}|d rB|}|dur|d+|d,kr|d-r|$d.d/}!|!%sd0|!}||t|!dn|d1r|$d2d/}!|!%sd0|!}||t|!d|j&|!}"|"durFd3|!}||t|!d|'|"sf|d4t|!d|(|"||t)|"fq"n2|}|dur|d+|d5|t|dn|d6krd}nx|dkr |jdur|d7| | |d2krq"qq"n6|d8vrd}#|d-kr||}|dur>|d+|d9vr`|d:|t|dd%}#|j*}$|$dur||j+|_*t,||||d}|#dkr|$durd|_*|d2s|d;| | |d1kr|t-|#|ffq"|t.|#|ffq"nJ|d)k r|$d2d/}%|%% rL|j&|%}&|&du rd3|%}||t|%dnzt|%}&|&dk rdt/Wn2t/ yd0|%}||t|%ddYn0|& s|d rTt2||||d}(|jd>k rX|d?nd}(|d2 sx|d;| | |t3|&|'|(ffq"n|t4v s|dk r*t5|||})|)du r| r| rddl }|j d@|j6ddAt|j6dAk rdBnd | ft7|d d |j8t9@r"|s"t:q"|)\}}d}n|dC|t|d|du rz|;|!}Wn>t y}*z$||*jfq"| dDk rB|tt?fq"tdE|fq"t@t|ddd%D]N},||,\}-}.|-t u rh|.\}}}}|du rh| sh| sh|||,|,d< qh|S)FNz|)#rrr [r=z"Possible nested set at position %dr) stacklevel^zunterminated character set]z-&~|zPossible set %s at position %d- difference& intersection~zsymmetric differenceunionz&Possible set difference at position %drazbad character range %s-%s?)rr=r+rrr;,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rr`znothing to repeatzmultiple repeat.(Tzunexpected end of patternP<> group namebad character in group name %r=)unknown group name %rr3zunknown extension ?P:zmissing ), unterminated commentz=!|t@rtd|t@s,|tO}qf|t@rftdn(|t@rNtd|t@rf|t@rftd|S)Nz)cannot use LOCALE flag with a str patternz(ASCII and UNICODE flags are incompatiblez,cannot use UNICODE flag with a bytes patternz'ASCII and LOCALE flags are incompatible)rJrDSRE_FLAG_LOCALErSRE_FLAG_ASCIISRE_FLAG_UNICODE)srcrrrr fix_flagss   rNcCst|}|durt}||_||_zt|||t@d}Wn@tyxt}|tB|_||_|dt||dd}Yn0t||j j|j _|j dur|j dksJ| d|j j D],}||j j krd|}t |||j j |q|t@r||S)NrTrzunbalanced parenthesisr)rprrrDrrrrrr8rur)r r&SRE_FLAG_DEBUGrH)rDrr8r4r0grrrrparses0       rc st|j}gggj}fdd}j}|}|durLq|ddkr|d}|dkrFd}dsd d d }|rz ||} Wntyt d |Yn0njzt |} | dkrt Wn.t y d |t |ddYn0| t kr0d| t |d|| t |dq|dkrjtvr|||7}jtvr|||7}|tt |dddd@q|tvrVd} jtvr0||7}|tvr0|dtvr0jtvr0||7}d} t |ddd}|dkr$d|t ||t|| s|t |ddt |dnPztt|d}Wn2ty|tvrd|t |Yn0||q:||q:rȈdt|tsddDfS)NcsX|jkrd||r8ddd=t|fddS)Nrr;)r&r)r'joinr%)rXrr&literalliteralsrr8rraddgroups  z parse_template..addgrouprr r=rr;rz missing 'z"parse_template..)rpr*r' groupindexr{r)rrrrwrrr%r(rurrrrrrrJrD) r4r8sgetlappendrrr|rr+rXisoctalrrrparse_templates                "           r"cCst|j}|jdd}|\}}|dd}z"|D]\}}||p@|||<q.Wntyhtd|Yn0||S)Nrr)rrsrwr)r)templater{remptyr&rrXrrrrexpand_template*s   r%)F)rN)=__doc__ sre_constantsrr frozensetrrrrrrrrgrrrErrCATEGORYrhrrrZAT_BEGINNING_STRINGZ AT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZ CATEGORY_WORDZCATEGORY_NOT_WORDZ AT_END_STRINGrSRE_FLAG_IGNORECASEr SRE_FLAG_MULTILINESRE_FLAG_DOTALLrrSRE_FLAG_TEMPLATErrr rr  Exceptionrrr7rprrrrrrrrr"r%rrrr sr                 $rH<M: x< %U