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;d1d2Z)r;r:rG MAXREPEATr0minmaxCALL SUBPATTERN _REPEATCODES _UNITCODESGROUPREFr9rrJSUCCESS) r#lohirOrPrjlhrrrr0sZ                  zSubPattern.getwidth)N)r) rrrr$rIrUrVrZr\r_r`r(r0rrrrr8ns  (r8c@sbeZdZddZddZddZddZd d Zd d Ze d dZ ddZ ddZ dddZ dS) TokenizercCs@t|t|_||_|js"t|d}||_d|_d|_|dS)Nlatin1r)rKrEistextstringdecoded_stringrYnext_Tokenizer__next)r#rtrrrr$s  zTokenizer.__init__cCs|j}z|j|}Wnty.d|_YdS0|dkr|d7}z||j|7}Wn,ty~td|jt|jddYn0|d|_||_dS)Nr r>zbad escape (end of pattern))rYru IndexErrorrvr*rtr&)r#rYcharrrr__nexts$   zTokenizer.__nextcCs||jkr|dSdS)NTFrvrw)r#ryrrrmatchs zTokenizer.matchcCs|j}||Sr%r{)r#thisrrrr+sz Tokenizer.getcCs8d}t|D]&}|j}||vr"q4||7}|q |SNr<)rangervrw)r#ncharsetresult_crrrgetwhiles  zTokenizer.getwhilecCsld}|j}||dur@|s,|d||d|t|||kr^|sh|d|dqh||7}q|S)Nr<zmissing zmissing %s, unterminated namer>)rvrwr*r&)r# terminatorr,rrrrrgetuntil s  zTokenizer.getuntilcCs|jt|jpdSr~rYr&rvr"rrrpossz Tokenizer.poscCs|jt|jpdSr~rr"rrrtellszTokenizer.tellcCs||_|dSr%)rYrwrXrrrseek!szTokenizer.seekrcCst||j||Sr%)r*rtr)r#msgoffsetrrrr*%szTokenizer.errorN)r)rrrr$rwr|r+rrr7rrrr*rrrrrqs   rqc Cst|}|r|St|}|r0|dtur0|SzL|dd}|dkr||dt7}t|dkrx|d|t|tt |dddfWS|dkr|j r||dt7}t|d kr|d|t|tt |dddfWS|d krN|j rN||d t7}t|d kr*|d|t|t |ddd}t |t|fWS|d kr|j rddl }| ds~|d|dd}zt||}Wn4ttfy|d|t|tdYn0t|fWS|tvr0||dt7}t |ddd }|dkr&|d|t|t|fWS|tvr>tt|dkr||tvrj|d|t|tt|dfWSWntyYn0|d|t|dS)Nrr>rbrincomplete escape %srU N{ missing {}character nameundefined character name %r\N{}.octal escape value %s outside of range 0-0o377 bad escape %s)ESCAPESr+ CATEGORIESrFr HEXDIGITSr&r*LITERALintrschr unicodedatar|rordlookupKeyError TypeError OCTDIGITSDIGITS ValueError ASCIILETTERS)r5escaper^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>rbrrrrrrrrrrrrrrrrr0rrr4invalid group reference %dr)rr+rrrr&r*rrrsrrr|rrrrrrrrvr'r3r6rjrr)r5rr9r^rrrgrouprrr_escapeds                        rcCstt|Sr%)rCdictfromkeys)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&r8rrFNEGATEextendrrG)r5r9verbosenestedr itemsappend sourcematchstart subpatternprefixitemsetrOrPrrr _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 %drbzbad character range %s-%s?)rr>r+rrr<,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rraznothing to repeatzmultiple repeat.(Tzunexpected end of patternP<> group namebad character in group name %r=)unknown group name %rr4zunknown extension ?P:zmissing ), unterminated commentz=!z missing flagz8bad inline flags: cannot turn off flags 'a', 'u' and 'L'z missing :rz-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and off) r+rrsr* TYPE_FLAGSisalphar&r GLOBAL_FLAGS)r5r9ryrrrflagrrrrrdsl                   rcCsjt|tr>|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)rKrESRE_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| d|j j D],}||j j krd|}t |||j j |q|t@r||S)NrTzunbalanced parenthesisr)rqrrrErrrrrr9rvr*r!r'SRE_FLAG_DEBUGrI)rErr9r5r1grrrrparses.       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&)rYrr'literalliteralsrr9rraddgroups  z parse_template..addgrouprr r>rr<rz missing 'z"parse_template..)rqr+r( groupindexr|r*rrrrxrrr&r)rvrrrrrrrKrE) r5r9sgetlappendrrr}rr,rYisoctalrrrparse_templates                "           r#cCst|j}|jdd}|\}}|dd}z"|D]\}}||p@|||<q.Wntyhtd|Yn0||S)Nrr)rrtrxr*r)templater|remptyr'rrYrrrrexpand_template*s   r&)F)rN)=__doc__ sre_constantsrr frozensetrrrrrrrrhrrrFrrCATEGORYrirrrZAT_BEGINNING_STRINGZ AT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZ CATEGORY_WORDZCATEGORY_NOT_WORDZ AT_END_STRINGrSRE_FLAG_IGNORECASErSRE_FLAG_MULTILINESRE_FLAG_DOTALLrrSRE_FLAG_TEMPLATErrr rr  Exceptionrrr8rqrrrrrrrrr#r&rrrr sr                 $rH<M: x< %U