a ze@sddlmZmZmZmZmZddlZddlZddlZddl Z ddl Z ddl Z ddlm Z ddl mZGdddeZGdddeZGd d d e jZGd d d e jZGd dde jZGddde jZedkre dS)) gc_collect bigmemtest_2G cpython_onlycaptured_stdoutN)Scanner)proxycseZdZfddZZS)Scstt|SN)r super __getitem__selfindex __class__@/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_re.pyr sz S.__getitem____name__ __module__ __qualname__r __classcell__rrrrr sr cseZdZfddZZS)Bcstt|Sr )rr r r rrrr sz B.__getitem__rrrrrrsrc@seZdZdddZdddZdddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*dRdSZ+dTdUZ,dVdWZ-dXdYZ.dZd[Z/d\d]Z0e1d^d_Z2d`daZ3dbdcZ4dddeZ5dde6j7fdfdgZ8e9j:e9j;dhZdmdnZ?dodpZ@dqdrZAdsdtZBdudvZCdwdxZDdydzZEd{d|ZFd}d~ZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcddZdddZeddZfddZgeheidddd„ZjeheiddddńZkddDŽZlddɄZme1dd˄Zndd̈́ZoddτZpddфZqddӄZrddՄZsddׄZte1ddلZuddۄZvdd݄Zwdd߄ZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZdS)ReTestsNcs,||fdd||dS)NcsHt|ttfr.t||D]\}}||qnt|t|dSr ) isinstancetuplelistzipassertIstype)actualexpectxymsgrecurserrrr'sz)ReTests.assertTypedEqual..recurse) assertEqual)rr!r"r&rr%rassertTypedEqualszReTests.assertTypedEqualcCs|tj}t|Wdn1s,0Y|j|d:|j}||j||durn||j|Wdn1s0YdS)N)pattern) assertRaisesreerrorcompilesubTest exceptionr(r&pos)rr*errmsgr1cmerrrrrcheckPatternError&s(zReTests.checkPatternErrorcCs|tj}t|||Wdn1s00Y|j||d:|j}||j||durt||j|Wdn1s0YdS)N)r*repl) r+r,r-subr/r0r(r&r1)rr*r6stringr2r1r3r4rrrcheckTemplateError/s,zReTests.checkTemplateErrorcCsftd}td|}|t|dWdn1s>0Yt|~t|ddS)Nxasxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) bytearrayr,finditerr+ BufferErrorextendrr)rbitrrrtest_keep_buffer8s  (zReTests.test_keep_buffercCs2d}td}t|}||d|ddS)NZQabbbcRzab+c)r,r.rr(findall)rsr#r$rrr test_weakrefCs zReTests.test_weakrefcCs|tdddd|tddd|tdddd|tddd|tdd|td d dd|td d d|tdd dd |tdd d |td d dS)Nzx*Zaxxrrrzx+r#Zaaaza*xxxZxxxarrIa+)r(r,searchspan assertIsNonematchrrrrtest_search_star_plusIszReTests.test_search_star_pluscCst|d}t|dS)NrrH)intgroupstr)rZmatchobjZ int_valuerrrbump_numUszReTests.bump_numc s|tdddd|tdtdtdd|tdddd|tdtdtdd|tdtdtdd|tdtdtddd D]}|t|dd |dq|td d d d|td|jdd|td|jddd|tjd|jdddd|tdddd d|tddd dd|tdd d|td ddd |tdfddd |td d!dd"|td d#dd"|td$d%dd"|td$d&dd"|tdd'dd(|tdd(dd(|tdd(dt d)t d*t d+t d,t d-t d.t d/d0D]~}| |\| tj .|tdd|dd|Wdn1s0YWdn1s0Yq|td1d2d3d4dS)5Nr$axyzZxazyr;xyzsxazàuаu𝒜zx%sz(?i)b+r# bbbb BBBBx x\d+z08.2 -2 23x99yz9.3 -3 24x100yrIz 9.3 -3 23x99ycount.cSsdS)N\nrmrrrkz+ReTests.test_basic_re_sub..rd z\1\1z(.)xx\\\csSr rrerDrrrgqrh(?Px)z \g\gZxxxxz \g\g<1> (?Px)z\g\gz \g<1>\g<1>z\t\n\v\r\f\a\bz  Z,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz^\s*XtestZXtest)r)r,r7r rr< memoryviewr(rVreplacechrr/r+r-)rr$crrmrtest_basic_re_subYsL6 bzReTests.test_basic_re_subcCs|tdddddS)Nroz \g<1>\g<1>\brjzxxxxr(r,r7rQrrrtest_bug_449964szReTests.test_bug_449964cCs\|tdddd|tdddd|tdddd|tdddddS)Nz\r\nrdz abc def zabc def z rir~rQrrrtest_bug_449000szReTests.test_bug_449000cCsdtd}|ttj|dtj|ttj|dtj|ttj|dtj|ttj|tjdS)NrcA)r,r.r+ ValueErrorrPIrMrCrr*rrr test_bug_1661s  zReTests.test_bug_1661cCstddS)Nz(?P)(?(quote)))r,r.rQrrr test_bug_3629szReTests.test_bug_3629cCs|tdddd|tdddd|tdddd|tdddd|tdd dd |tdd dd |tdd dd|tdddd|tdddd|tdddd|tdddd|tdddd|tdddd|tdddd |tdddd|ddddd|ddddd|dddd d!|dd"dd#d!|dd$dd%d!|dd&dd'd!|dd(dd)d!|dd*dd d!|dd+dd,d!|dd-dd.d!|dd/dd'd!|dd0dd'd!|dd1dd)d!|dd2dd3d!|dd"d4d#d!|td5d&dd|td6d/d7d8|td6d0d7d9dS):Nr#\0z\000z\001z\0088z\009z9z\111rz\117Oz\377ÿz\1111ZI1z\00z\07\08z\09z\0azaz\400z0octal escape value \400 outside of range 0-0o377rz\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group reference 1rHz\8zinvalid group reference 8z\9zinvalid group reference 9z\11zinvalid group reference 11z\18zinvalid group reference 18z\1az\90zinvalid group reference 90z\99zinvalid group reference 99z\118z\11az\181z\800zinvalid group reference 80z(((((((((((x)))))))))))z((((((((((y))))))))))(.)rXZxz8Zxza)r(r,r7r9rQrrr test_sub_template_numeric_escapesV  z(ReTests.test_sub_template_numeric_escapecCsL|tdddd|tddddd|tjdddddddS)NrWr@ZaaaaaZbbbbbrHZbaaaarar~rQrrrtest_qualified_re_subszReTests.test_qualified_re_subcCs|tdddddS)Nz (\S)\s+(\S)z\1 \2z hello therez hello therer~rQrrrtest_bug_114660szReTests.test_bug_114660cCstdtdtd|dd|ddd|d d |d d d |ddd|ddd|ddd|dd|dd|ddd|ddd|ddd|ddd|ddd|ddd|d dd|d!dd"|d#dd"|d$dd"|d%d&d"|d'd(d"|d)dd"td*td+|d,d-dd.d/d0td1d2D}d3|}|t|d4d5dS)6Nz(?Px)(?P=a)(?(a)y)z(?Px)(?P=a1)(?(a1)y)z(?Px)\1(?(1)y)z(?P)(?P)z6redefinition of group name 'a' as group 2; was group 1z (?P(?P=a))cannot refer to an open grouprqz(?Pxy)zunknown extension ?Pxz (?P)(?P=azmissing ), unterminated namerrz(?P=missing group namez(?P=)z(?P=1)zbad character in group name '1'z(?P=a)zunknown group name 'a'z(?P=a1)zunknown group name 'a1'z(?P=a.)z bad character in group name 'a.'z(?P<)missing >, unterminated namez(?P)z(?P<1>)z(?P)z(?(rIz(?())z(?(a))z(?(-1)) bad character in group name '-1'z(?(1a))z bad character in group name '1a'z(?(a.))u(?P<µ>x)(?P=µ)(?(µ)y)uf(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)(?P=𝔘𝔫𝔦𝔠𝔬𝔡𝔢)(?(𝔘𝔫𝔦𝔠𝔬𝔡𝔢)y)u (?P<©>x) bad character in group name '©'|css|]}d||fVqdSz x(?P%x)yNr.0irrr rhz/ReTests.test_symbolic_groups..rHz(?:%s)(?(200)z|t)xc8yzr)r,r.r5joinranger(rPrNrpatrrrtest_symbolic_groupssF        zReTests.test_symbolic_groupscCsz|ddddd|ddddd|dddd d |dd dd d|dd ddd|ddddd|ddddd|ddddd|tdtdddWdn1s0Y|tdddd|tdddd|ddddd|tdddd|tdddd|dddd dd!d"d#tdd$D}|t|d%d&d'dS)(Nrnz\gz!bad character in group name 'a a'z\g<>z\g<1a1>z!bad character in group name '1a1'z\g<2>zinvalid group reference 2z\2rHzunknown group name 'ab'z\gz(?Px)|(?Py)z\grz\g<-1>ru (?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>u\g<©>rrcss|]}d||fVqdSrrrrrrrrhz-ReTests.test_symbolic_refs..rz\g<200>Z xc8yzxc8yZc8zc8)r9assertRaisesRegex IndexErrorr,r7r(rrrrrrtest_symbolic_refssH       ,  zReTests.test_symbolic_refscCs|tdddd|tdddd|tdddd|td ddd |td ddd d |tjd ddd d d dS)Nr]r#r^)r_rzb+)zx BBBBrHrX)rXrzb*)Zxxxyxzxrr)Zxxxyzrra)r(r,subnrQrrr test_re_subns zReTests.test_re_subnc CsdtdfD]L}|td|gd|td|gd|td|gdq dtdtdtdfD]L}|td |gd |td |gd |td |gdqrdD]t\}}}d|||f}|td|d||d|g|td|d|||g|td|dd|d|d|gq|tddgd|tddgd|tddgd|tddgd|tddgddgdfdgdfdgd fd!gd"ffD]L\}}|j|d#$|t|d|Wdn1s0Yqdgd$fd%gd&fd'gd(fd)gd*ffD]L\}}|j|d#$|t|d|Wdn1s0YqXdS)+N:a:b::c:)rrWr@rr|:+)rrWr@r|(:+))rrrWrr@::r|s:a:b::c:)rhr;brhc:+)rhr;rr(:+))rhrr;rr::r)uàßçuабвu 𝒜𝒞𝒵z :%s:%s::%srrz(?::+)z(:)+)rrrWrr@rr|z([b:]+))rrrWz:b::r|z(b)|(:+)) rNrrWNrrr@NrNrr|z (?:b)|(?::+))rrWrrr|z:*)rrrWrr@rr|rz(?::*)(:*))rrrrrWrrrr@rrrr|rrz(:)*)rrrNrWrrNr@rrNr|Nr)sep) rrrWrr@rrr|r\b)rrWrr@rr|rz(?=:))rz:az:brz:cz(?<=:))ra:zb:rr|) r r)r,splitrr<ryr(r/)rr8rWr@r|rexpectedrrr test_re_split%sp    8    zReTests.test_re_splitcCs|tdddgd|tjddddgd|tjddddgd|tjddddgd |tjd dddgd |tjd dddgd dS) Nrrr)rrWb::c)maxsplitza:b:c:d)rWr@zc:dz(:))rrrWrrrr)rrrrza:b::c)r(r,rrQrrrtest_qualified_re_splitZszReTests.test_qualified_re_splitcCsj|tddgdtdfD]L}|td|gd|td|gd|td|gdq dtdtdtdfD]L}|td |gd |td |gd |td |gd qdD]}|d}|d}d|||f}|td|||||g|td|||||g|td||f||df||f||fgqdS)Nrabc a:b::c:::drrz:::rz(:)(:*)))rr)rr)rrs a:b::c:::dr)rrs:::rs(:)(:*)))rrh)rr)rrr[rrIz a%sb%sc%sdz%s+z(%s+)z (%s)(%s*)r)r(r,rCr r)rr<ry)rr8r#rjrJrrrtest_re_findalles@zReTests.test_re_findallcCs|tddgddS)Nz(a|(b))aba)rWr)r@r@r)r(r,rCrQrrrtest_bug_117612szReTests.test_bug_117612cCsdtdfD]}|td|d|td|d|td|dd|td|dd|td|dddq dtdtdtdfD]}|td|d|td |d |td |dd|td |dd|td |ddd qd D]}|t||d|td |||f|td ||d||td ||d||td ||dd||fq4t d}||dd||dd||dd||dd||dddt d}||ddddd||ddddd||ddddd dS)!NrWr(a))rWrrHrWrWr;s(a))r;)r;r;r[z(%s)z ((a)|(b))(c)?)rWrWNNr@)r@Nr@Nac)rWrWNr|bc)r@Nr@r|r)r@rr@r|!(?:(?Pa)|(?Pb))(?Pc)?rrIrWNNa1b2c3)Nr@N)rWNr|) r r(r,rPgroupsrTrr<ryr.)rr8rWrrrr test_re_matchs<(  zReTests.test_re_matchcCsGddd}tdd}||d||dd||dd|||dd|t|jd|t|jd |t|jdd >|t|j|dd >|t|jd ||d dd |||d |dd dS)Nc@seZdZddZddZdS)z!ReTests.test_group..IndexcSs ||_dSr value)rrrrr__init__sz*ReTests.test_group..Index.__init__cSs|jSr rrQrrr __index__sz+ReTests.test_group..Index.__index__N)rrrrrrrrrIndexsrz(a)(b)abrrHrWrIr#rr@rW)r,rPr(rTr+r)rrrfrrr test_groups zReTests.test_groupcCstd}|d}||dd||dd||dd|d|d||dd||d d||d d||d d|td |d Wdn1s0Y|td |dWdn1s0Y|td |dWdn1s*0Y|td |dWdn1s`0Y|td |dWdn1s0Y|td |dWdn1s0Y|td d|Wdn1s0Y|d}||dd||dd||dd|d|d||dd||d d||d d||d d|td |d<Wdn1s0Y|tt |dS)NrrWrrrza1={a1} b2={b2} c3={c3}za1=a b2=None c3=NonerrHrrIz no such grouprwrrrrHrza1={a2}rr|za1=a b2=None c3=c) r,r.rPr( format_maprrr+ TypeErrorlen)rrrfrrrtest_match_getitemsH  &&((((*  (zReTests.test_match_getitemcCs$|tddddtdfD]}|td|dq$dtdtdtdfD]}|td|dqZdD]4\}}d |||f}|t|||dq||td d d |td d d |tddd|tddd |tddd|tdd|tdd|tdd|tdd|tddd|tddd|tddd|t djddddd|t d jddddd|t d jddddddS) NrWrrza|abrrsabsa|ab)uàßuабu𝒜𝒞z%s|%sz.*?$rrKz.*?za.*?babbZaxxbrrrLzabc$zabc zabc\Zz(?m)abc$z ab(?=c)cdabcdz ab(?<=b)cdz (?=a|ab)abrrHrIr1endposrG) r(r, fullmatchrNr rr<ryrOr.)rr8rWr@rrrrtest_re_fullmatchs: zReTests.test_re_fullmatchcCsr|tddd|tddd|tdd|tdd|tdd d |tdd d |td d d |td ddtd}||dd||dd||d||ddddtddD}d|}|t|dd| ddd | d!d"d#| d$d%d dS)&Nz^(\()?([^()]+)(?(1)\))$r)(rWrWNrWza)z(az^(?:(a)|c)((?(1)b|d))$rrWr@cd)Ndz^(?:(a)|c)((?(1)|d))$rz(?Pa)(?Pb)?((?(g2)c|d))rrWr@r|Zad)rWNrZabdrrcss|]}d||fVqdSrrrrrrrrhz2ReTests.test_re_groupref_exists..rHrz(?:%s)(?(200)z)rrz (?P)(?(0))zbad group numberrqz ()(?(1)a|b"missing ), unterminated subpatternrz ()(?(1)a|b|c)z/conditional backref with more than two branches) r(r,rPrrOr.rrrNr5)rprrrrtest_re_groupref_existssP zReTests.test_re_groupref_existscCs@ddlm}|dd|dd|d|d|d|d dS) Nr) MAXGROUPSz()z\g<%s>rjzinvalid group reference %drIz(?P)(?(%d))rq) sre_constantsrr9r5)rrrrrtest_re_groupref_overflow(s  z!ReTests.test_re_groupref_overflowcCs|tddd|tddd|tdd|tdd|td d d |td d d|ddddS)Nz^(\|)?([^()]+)\1$z|a|)rrWz^(\|)?([^()]+)\1?$rWrza|z|az^(?:(a)|c)(\1)$Zaarz^(?:(a)|c)(\1)?$r|NNz(abc\1)rr)r(r,rPrrOr5rQrrrtest_re_groupref/szReTests.test_re_grouprefcCs"|tddddddS)N#(?Pfirst) (?Psecond) first secondfirstsecond)rr)r(r,rP groupdictrQrrrtest_groupdict=s  zReTests.test_groupdictcCs8|tdddd|tdddddS) Nrrz\2 \1 \g \gzsecond first second firstz#(?Pfirst)|(?Psecond)rz \2 \g )r(r,rPexpandrQrrr test_expandBs  zReTests.test_expandcCs8|tdd|tdd|tdd|tdd|tdddd|td ddd|td ddd|td ddd|td ddd|td ddd|tdddd|td ddd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|ddd dS)!Nz ^(\w){1}$rz ^(\w){1}?$z ^(\w){1,2}$z ^(\w){1,2}?$z ^(\w){3}$rHr|z ^(\w){1,3}$z ^(\w){1,4}$z ^(\w){3,4}?$z ^(\w){3}?$z ^(\w){1,3}?$z ^(\w){1,4}?$z^x{1}$rJz^x{1}?$z^x{1,2}$z ^x{1,2}?$z^x{3}$z^x{1,3}$z^x{3,3}$z^x{1,4}$z ^x{3,4}?$z^x{3}?$z ^x{1,3}?$z ^x{1,4}?$z^x{}$zx{}zx{2,1}z"min repeat greater than max repeatr)rOr,rPr(rT assertTruer5rQrrrtest_repeat_minmaxLs<zReTests.test_repeat_minmaxcCs\|tdjd|tdjtjtjB|tdjd|tdji|tdjddd|t ddj d|t ddj d|t ddj d|t ddj d |t ddjtd}|t|jd d g||jd d|td|jd <Wdn1s<0Y||jd ddS) Nz (?i)(a)(b)rz(?i)(?Pa)(?Pb)rH)rotherrrWr)rrrr)r(r,r.r*flagsrUr groupindexrPr1rr8regsrsortedr+r)rrrrr test_getattrps$  *zReTests.test_getattrcCs|tdddd|tdddd|tddtjdd|tddtjdd|tddtjd d |td d tjd d |td dtj|td d dd|tdddd|td d tjdd|tddtjdd|tddtjd d|tddtjd d|tddtj|tddd d|tddd d|tddtjd d|tddtjd ddS)Nz\b(b.)\bzabcd abc bcd bxrHbxz\B(b.)\Bzabc bcd bc abxdz^abc$z abc rrz ^\Aabc\Z$s\b(b.)\bsabcd abc bcd bxsbxs\B(b.)\Bsabc bcd bc abxds^abc$s abc abcs ^\Aabc\Z$z \d\D\w\W\s\Sz1aa! as \d\D\w\W\s\Ss1aa! a)r(r,rMrTASCIIMrOLOCALErQrrrtest_special_escapess            zReTests.test_special_escapesc Cst|ddd|tddd|tdd|tddd|tdd d |tdd |td d d |td d |tddd|tdd tdD]F}||&|tj tj d|Wdq1s0YqdD]H}||&|tj tj d|Wdn1sb0Yq&dS)Nrkzbad escape (end of pattern)rz\(r)rlz[\]]][z[a\-c]-r@z[\^a]+za^Z!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%cZ$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c]) r5r(r,rPrTrOpurger/r+r-r.)rr|rrrtest_other_escapess" 8 zReTests.test_other_escapescCsT|tdd|tdd|tdd|tdd|tdd|td d |td d |d d d|dd d|ddd|ddd|ddd|ddd|dd d|dd d|ddd|ddd|ddd|dd d!|d"d d|d#d$d!|d%d$ddS)&Nz\N{LESS-THAN SIGN}z \N{SNAKE}u🐍zW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM}uﯹz*[\N{LESS-THAN SIGN}-\N{GREATER-THAN SIGN}]=;z\Nz missing {rz[\N]rIz\N{zmissing character namez[\N{rz\N{}z[\N{}]z\NSNAKE}z [\NSNAKE}]z\N{SNAKEzmissing }, unterminated namez [\N{SNAKE]z [\N{SNAKE]}z!undefined character name 'SNAKE]'rHz\N{SPAM}zundefined character name 'SPAM'rz [\N{SPAM}]s\N{LESS-THAN SIGN}z bad escape \Ns[\N{LESS-THAN SIGN}])rr,rPrOr5rQrrrtest_named_unicode_escapessL   z"ReTests.test_named_unicode_escapescCs|tdddd|tdd|tdd|tdd|tdd|tdd|tt ddd|tt ddd |tt dd d |tt dd d |tt dd ddS) Nz \b(abc)\brrHr\BrrWrrrz ) r(r,rMrTrrP assertFalserOrrCrQrrrtest_string_boundariesszReTests.test_string_boundariesc CsR|tddddddtttddd}|t|d d dS) Nu ([∢∣])u∢rHz[%s]ru!)r(r,rPrTrmapr{rrrrrrtest_bigcharsets zReTests.test_bigcharsetcCsBtdddtdD}||d||ddS)Nrcss|]}d|VqdS)z%dNr)rr#rrrrrhz,ReTests.test_big_codesize..'Z1000Z9999)r,r.rrrrPr&rrrtest_big_codesizeszReTests.test_big_codesizecCs@|tddtjdd|tddtjdddS)Nza.bza brza.*bza b)r(r,rPDOTALLrTrQrrr test_anyalls zReTests.test_anyallcCs|tdddd|tdddd|tdddd|tdddd|td d dd|td d dd|td d dd|tdd dd|tdddd|tdddd|tdddd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdddS)Nz (a(?=\s[^a]))a brHrWz(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz (a)(?=\s\1)a az (a)(?=\s\1*)a aaz(a)(?=\s(abc|a))z (a(?!\s[^a]))z(a(?!\s[abc]))za dz (a)(?!\s\1)z(a)(?!\s(abc|a))z (a)b(?=\1)arz (a)b(?=\1)cZabacz(?:(a)|(x))b(?=(?(2)x|c))crz(?:(a)|(x))b(?=(?(2)c|x))cz(?:(a)|(x))b(?=(?(1)b|x))cz(?:(a)|(x))b(?=(?(1)c|x))cz(a)b(?=(?(2)x|c))(c)z(a)b(?=(?(2)b|x))(c)z(a)b(?=(?(1)c|x))(c))r(r,rPrTrrOrQrrrtest_lookahead s*zReTests.test_lookaheadcCsl|tdd|tdd|tdd|tdd|tdd|tdd |td d|td d |td d|td d|tdd|tdd|tdd|tjtjd|tdd|tdd|tjtjd|tjtjd|tjtjd|tjtjddS)Nz ab(?<=b)crz ab(?<=c)cz ab(?.)(?P=a))(c)z(a)b(?<=(a)(?(2)b|x))(c)z(a)b(?<=(.)(?<=\2))(c))rr,rPrOr+r-r.rQrrrtest_lookbehind%s(zReTests.test_lookbehindcCsV|tddtjdd|tddtjdd|tddtjdd|td d tjdd |td dtjdd|td d tjdd |td dtjdd|tddtjdd|tddtjdd|tddtjddddks>J|tddtj|tddtj|tddtj|tddtjddksJ|tddtj|tddtj|tddtj|tddtjddkr dks&nJ|tddtj|tddtjdS) NrABCrrsABCz (a\s[^a])r,rHz (a\s[^a]*)za bbz (a\s[abc])z (a\s[abc]*)z ((a)\s\2)r-z ((a)\s\2*)r.z((a)\s(abc|a))z((a)\s(abc|a)*)KkKz\u212aſr rDz\u017fſtstSTz\ufb05z\ufb06)r(r,rPrrTlowerrupperrQrrrtest_ignore_case?s.&zReTests.test_ignore_casecCs|tddtj|tddtj|tddtj|tddtj|tddtj|tddtj|tddtj|tddtjd d ksJ|td d tj|td d tj|td dtj|td d tjddks*J|tddtj|tddtj|tddtj|tddtjddkrdksnJ|tddtj|tddtjdS)Nz[19A]rz[19a]rWs[19A]As[19a]r;r2r3z[19K]z[19k]z [19\u212a]r4r5r z[19S]z[19s]z [19\u017f]rDr6r7r8z [19\ufb05]z [19\ufb06])rr,rPrr9r:rQrrrtest_ignore_case_setYs*&zReTests.test_ignore_case_setcCs|tddtj|tddtj|tddtj|tddtj|tddtj|tdd tj|td d tj|td dtj|td d tj|td d tj|tdd tj|tdd tj|tddtj|tddtj|tddtj|tddtjddksrJ|tddtj|tddtj|tddtj|tddtjddksJ|tddtj|tddtj|tddtj|tddtjdd krTd!ksZnJ|td"d tj|td#dtjdS)$Nz[9-a]_z[9-A]s[9-a]_s[9-A]z [\xc0-\xde]×÷z [\xe0-\xfe]z[\u0430-\u045f]uѐuЀz[\u0400-\u042f]z[\U00010428-\U0001044f]u𐐨u𐐀z[\U00010400-\U00010427]r2r3z[J-M]z[j-m]z[\u2129-\u212b]r4r5r z[R-T]z[r-t]z[\u017e-\u0180]rDr6r7r8z[\ufb04-\ufb05]z[\ufb06-\ufb07])rr,rPrrOr9r:rQrrrtest_ignore_case_rangeps:&zReTests.test_ignore_case_rangecCs|tdddddS)Nz(\s)rrHr(r,rPrTrQrrr test_categoryszReTests.test_categorycCspddl}tdD]j}t|}t|}|||||||||tj v}|| |||| ||qt tddddgD]}t|}|||||dkr|||t|||kp|| k}|| ||| |||kp|| kq||dd||dtd|| d|| ddS)Nriii(i0r)_srerr{ordr9r( ascii_tolowerunicode_tolowerr8 ascii_letters ascii_iscasedunicode_iscasedrr:r r)rrFrr|loiscasedrrrtest_case_helperss.    zReTests.test_case_helperscCs8|tdddd|tdddddS)Nz\s([^a]) brHr@z \s([^a]*)z bbZbbr(r,rMrTrQrrrtest_not_literalszReTests.test_not_literalcCsttd}|ttd}Wdn1s:0Y|||t d|td|t d|ttd}Wdn1s0Y|||t d|ttd}Wdn1s0Y|||t d |ttd }Wdn1s20Y|||t d |ttd }Wdn1s~0Y|||t d |td |t d|ttd}Wdn1s0Y|||t d|ttd}Wdn1s.0Y|||t d|td|t d|ttd}Wdn1s0Y|||t d|ttd}Wdn1s0Y|||t d|td|t d|ttd}Wdn1sB0Y|||t d|ttd}Wdn1s0Y|||t ddS)NrEz[0-9--1]z -./0123456789z[--1]z-./01z[%--1]z %&'()*+,-1z[%--]z %&'()*+,-z[0-9&&1]z &0123456789z[\d&&1]z[&&1]z&1z[0-9||a]z 0123456789a|z[\d||a]z[||1]z1|z[0-9~~1]z 0123456789~z[\d~~1]z[~~1]z1~z[[0-9]|]z 0123456789[]z [[:digit:]|]z:[]dgit) bytesrdecode assertWarns FutureWarningr,r.r(rCrrrDrrrrtest_possible_set_operationssL ( ( ( * * * * * * * *z$ReTests.test_possible_set_operationscCs8|tdddd|tdddddS)Nz\s(b)rPrHr@za\sza rrQrQrrrtest_search_coverageszReTests.test_search_coveragecCsr|dur"|dur"|}dt|f}n|dus2|dur:td|||}||||||||dS)Nrz@If match is not None, span should be specified (and vice versa).)rrrr(rTrN)rr*textrPrNZmatcherrfrrr assertMatchs  zReTests.assertMatchz!"%',/:;<=>@_`cCsdddtdD}|D]F}|t|||dt|d||dt||q|t||dD]}|t|dd d qz|j}|t||dS) Nrcss|]}t|VqdSr )r{rrrrrrhz)ReTests.test_re_escape..r"rrz(?x)z-.]{}rHrk)rrr[r,escaper( LITERAL_CHARS)rrr| literal_charsrrrtest_re_escapeszReTests.test_re_escapecCsttd}|D]P}t|g}|t|||dt|d||dt||q|t||dD](}t|g}|t|dddqx|jd}|t||dS) Nr"[]s(?x)s-.]{}rH\ascii)rSrr[r,r\r(r]encode)rrrr@r^rrrtest_re_escape_bytess    zReTests.test_re_escape_bytescCsHd}t|}|||||||dtd|ddtjdS)Nuxxx☠☠☠xxxz.%s+.☠u x☠☠☠x)rru)r,r\r(r[rM)rrDZ s_escapedrrrtest_re_escape_non_asciis   z ReTests.test_re_escape_non_asciicCsXdd}t|}||||||ttdd|}|t|ddS)Nu y☠y☠yzutf-8rfr)rdr,r\r(r[rCr)rr@Z b_escapedresrrrtest_re_escape_non_ascii_bytess     z&ReTests.test_re_escape_non_ascii_bytescCs\ddl}tdtj}t|jdD]&}|||}||}|||q$ddlm }dS)Nrza(?:b|(c|e){1,2}?|d)+?(.)rH)_compile) pickler,r.UNICODErHIGHEST_PROTOCOLdumpsloadsr(rj)rrkZoldpatprotoZpickledZnewpatrjrrr test_picklings  zReTests.test_picklingcCshddl}td}|||||||||d}||||||||dS)Nrz (?P\d+)(?:\.(?P\d*))?z12.34)copyr,r.rdeepcopyrP)rrrrrfrrr test_copying(s  zReTests.test_copyingcCsT|tjtj|tjtj|tjtj|tjtj |tj tj dSr ) r(r,r IGNORECASELrr MULTILINEr r*rwVERBOSErQrrrtest_constants1s zReTests.test_constantscCsltjtjtjtjtjtjfD]}|td|qtjtjtjtjtjtj fD]}|td|qPdS)Nz ^pattern$s ^pattern$) r,rrrwr rr rr.rv)rflagrrr test_flags8s  zReTests.test_flagscCs@dD]n}|dkr|td|t||td|t|d|td|t|d|td|t||td |t|d|td |t|d |d kr|td |t||td|t|d|td|t|d |td|t||td|t|d|td|t|d q|tdd|tdd|tdd|tdd|ddd|ddd |d!d"d|d#d"d|d$d%d|d&d%d|d'd(d|d)d(d|d*d+ddS),N rrv @rEr$r"r#ir"\%03o\%03o00\%03o88\x%02x\x%02x0\x%02xzzr#z\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzrrrrz\01rz\018z8z\5670octal escape value \567 outside of range 0-0o377rz\911invalid group reference 91rHz\x1incomplete escape \x1z\x1zz\u123incomplete escape \u123z\u123zz \U0001234incomplete escape \U0001234z \U0001234zz \U00110000bad escape \U00110000rr,rPr{r5rrrrrtest_sre_character_literals>s>   z#ReTests.test_sre_character_literalscCsdD]}|dkr|td|t||td|t||td|t||td|t||td|t||td|t||td |t||td |t||d kr:|td |t||td |t||td|t||td|t||td|t|d|td|t|dq|ddd|ddd|ddd|ddd|ddd|dd d|td!d"dS)#Nr|r"[\%o][\%o8][\%03o][\%03o0][\%03o8][\x%02x] [\x%02x0] [\x%02xz]r#z[\u%04x]z [\u%04x0]z [\u%04xz]z[\U%08x]z [\U%08x0]rz [\U%08xz]rz[\567]rrHz[\911] bad escape \9z[\x1z]rz[\u123z]rz [\U0001234z]rz [\U00110000]rz[\U0001d49c-\U0001d4b5]u𝒞rrrrr!test_sre_character_class_literals^s6   z)ReTests.test_sre_character_class_literalscCsdD]}|td|t|g|td|t|gd|td|t|gd|td|t|g|td|t|gd|td |t|gd q|tjtjd |tjtjd |td d|tdd|tdd|tdd|ddd|ddd|ddd|ddddS)Nrrvr}r~rrrEr$rr0r8rrrzs\u1234s \U00012345s\0s\08s8s\01s\018s8s\567rrs\911rrHs\x1rs\x1z rr,rPrdrSr+r-r.r5rrrrtest_sre_byte_literalszs( $$ $&zReTests.test_sre_byte_literalscCs^dD]}|td|t|g|td|t|g|td|t|g|td|t|g|td|t|g|td|t|g|td|t|g|td |t|gq|tjtjd |tjtjd |d d d|ddd|ddddS)Nrrrrrrrrrs[\u1234]s [\U00012345]s[\567]rrHs[\911]rs[\x1z]rrrrrrtest_sre_byte_class_literalss"        "z$ReTests.test_sre_byte_class_literalscCsf|ddd|ddd|ddd|ddd|ddd |d d d |d d d dS)Nrzunterminated character setrz[^z[az[a-z[\w-b]zbad character range \w-brHz[a-\w]zbad character range a-\wz[b-a]zbad character range b-ar5rQrrrtest_character_set_errorssz!ReTests.test_character_set_errorscCsR|tdddd|tdddd|tdddddS)Nz(a)|(b)r@rHr)rr)r(r,rPstartendrNrQrrrtest_bug_113254szReTests.test_bug_113254cCsp|tddj|tddjd|tddjd|tddjd|tddjddS) Nz(a)?arWz(a)(b)?brrHz(?Pa)(?Pb)?bz (?Pa(b))z((a)))rOr,rP lastindexr( lastgrouprQrrrtest_bug_527371s zReTests.test_bug_527371cCs|tdddddd|tdddd ddd dd |tdd d ddd|tdddddddS)Nz.*?cr(rrri!Nz.*?cdir|Zcdei#Ni Nrdeiaz(a|b)*?c)r(r,rPrrMrQrrrtest_bug_418626s "("zReTests.test_bug_418626cCs,dtdd}|t|o"dddS)Nru‹rrH)r,r\r(r.rrrrtest_bug_612074szReTests.test_bug_612074cCsf|tddddd|tdddddd|tdddddddS)Nz(x)*iPr#rHz(x)*yr$z(x)*?yrCrQrrrtest_stack_overflows"zReTests.test_stack_overflowcCsDdD]:}dD]0}|d||fdd|d||fddq qdS)N*+?{1,2}rrz%s%sznothing to repeatrz(?:%s%s)rIr)rrepsmodrrrtest_nothing_to_repeatszReTests.test_nothing_to_repeatc CsZdD]P}dD]F}||}dD]4}dD]*}||}|d||fddt|q$qq qdS)N)rrrrrzx%s%szmultiple repeatrH)r5r)rZ outer_repsZ outer_modouter_opZ inner_repsZ inner_modinner_oprrrtest_multiple_repeats zReTests.test_multiple_repeatcCsp|tdd|tdd|tdd|tdd|tdd|tdddS)Nz(?:a?)*yrz(?:a?)+yz (?:a?){2,}yz (?:a?)*?yz (?:a?)+?yz (?:a?){2,}?y)rOr,rPrQrrr test_unlimited_zero_width_repeats z(ReTests.test_unlimited_zero_width_repeatcCstdd}dd}dd}dd}td |fd |fd |fd |fd g}||jdj||dgddfdS)NcSs|Sr rscannertokenrrrs_identrhz%ReTests.test_scanner..s_identcSsd|S)Nzop%srrrrr s_operatorrhz(ReTests.test_scanner..s_operatorcSst|Sr )floatrrrrs_floatrhz%ReTests.test_scanner..s_floatcSst|Sr )rSrrrrs_intrhz#ReTests.test_scanner..s_intz [a-zA-Z_]\w*z\d+\.\d*r`z =|\+|-|\*|/)z\s+Nrzsum = 3*foo + 312.50 + bar) sumzop=rIzop*fooop+gs@rZbar)rrrr*r(scan)rrrrrrrrr test_scanners" zReTests.test_scannercCsFdD]<}|td|dd|td|ddqdS)N)rrrz ((.%s):)?zrrza:z)rrWr(r,rPr)roprrrtest_bug_448951szReTests.test_bug_448951cCs|tddd|tddd|tddd|tddd|td dd|td d d|td dd|td dddS)Nz ^((a)|b)*rrz ^(([ab])|c)*)r|r@z ^((d)|[ab])*r@Nz ^((a)c|[ab])*z ^((a)|b)*?cz^(([ab])|c)*?drz^((d)|[ab])*?cz^((a)c|[ab])*?crrQrrrtest_bug_725106s0zReTests.test_bug_725106cCs4|tddd|tddddS)Nz(a)(?:(?=(b)*)c)*r)rWNz(a)((?!(b)*))*rrrQrrrtest_bug_725149s zReTests.test_bug_725149cCs2Gdddt}t|d}||ddS)Nc@s eZdZdS)z+ReTests.test_bug_764548..my_unicodeN)rrrrrrr my_unicode$rhrrrX)rUr,r.rOrP)rrrrrrtest_bug_764548"szReTests.test_bug_764548cCstdd}|dd|Dgdtd}|ddd}|dd|Dgdtd}|jdddd }|d d|Dgdtd}|jdddd }|d d|Dgdtd}|jdd dd }|dd|DddgdS)NrrcSsg|]}|dqSrrTritemrrr *rhz)ReTests.test_finditer..rrHrqcSsg|]}|dqSrrrrrrr/rhrcSsg|]}|dqSrrrrrrr4rh)rr1cSsg|]}|dqSrrrrrrr9rhrIrvcSsg|]}|dqSrrrrrrr>rhr)r,r=r(r.)riterrrrr test_finditer(s0     zReTests.test_finditercCs|tdtddS)NZ bug_926075s bug_926075)Z assertIsNotr,r.rQrrrtest_bug_926075As zReTests.test_bug_926075cCs$d}|t|dgddS)Nu [.。.。]za.b.cr)r(r,r.rrrrrtest_bug_931848EszReTests.test_bug_931848cCsdtdd}|t|d|tt|tdd}|| d| | dS)Nz\sr,)rHr) r,r=r(nextrNr+ StopIterationr.rrMrO)rrrrrrtest_bug_581080Js  zReTests.test_bug_581080cCsFtdd}|t|d|t|d|tt|dS)Nz.*Zasdfr)rr)r,r=r(rrNr+r)rrrrrtest_bug_817234Ss zReTests.test_bug_817234cCsTgd}|D]}|td|d|q gd}|D]}|td|q8dS)N)7u๘u0z^\d$r)uⅥu〹u₂u㊴)r(r,rPrTrO)rZdecimal_digitsr#Znot_decimal_digitsrrr test_bug_6561Ys zReTests.test_bug_6561cCsRddl}dD]@}||}|td||td|dq dS)NrZ bBuhHiIlLfdsblarhr)arrayrOr,r.rPr(r)rrtypecoderWrrrtest_empty_arrayns  zReTests.test_empty_arrayc Csd}d}td|tjtjB}|d|}||td|tjtjB}|d|}||td|tj}|d|}||td|tj}|d|}||td|}|d|}||td|}|d|}||td|}|d|}||td|}|d|}|||td|||td|||td ||tj|td |||td ||tj|d }|t"}|t||Wdn1s0Y| t |j d j d|| |j d j t|dd}|t"}|t||Wdn1s0Y| t |j d j d|dd| |j d j tt t dtd}|t"}|t|dWdn1s0Y| t |j d j d|| |j d j tWdn1s`0Y|t*|td|d|Wdn1s0Y|t*|td|d|Wdn1s0Y|t&|td ||Wdn1s.0Y|t&|td||Wdn1sp0Y|t&|td||Wdn1s0Y|t*}|td|d|Wdn1s0Y|t |j d j d| |j d j t|t*}|td|d|Wdn1sj0Y|t |j d j d| |j d j t|t*}|td|d|Wdn1s0Y|t |j d j d| |j d j tdS) NuẠuạrcriz(?i).z(?is).z (?s)(?i).z(?ix) z (?i) z (?x) (?i) z (?x) (?i) z(?i)rz+Flags not at the start of the expression %rz(?i)%sz.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?z7Flags not at the start of the expression %r (truncated)r-sA(?i)r;z (?s).(?i)z(?i) z (?x)z^(?i)z$|(?i)z(?:(?i)rzFlags not at the startz (^)?(?(1)(?i)z($)?(?(1)|(?i))r,r.rr rPrrwrUDeprecationWarningr(rUwarningsmessagefilename__file__catch_warnings simplefilter BytesWarning assertRegexr)rZ upper_charZ lower_charrqZwarnsrrrtest_inline_flagsvs         2  2   24 : : 6 6 6 : & &zReTests.test_inline_flagscCstd}||ddd||ddd||dddtdtj}||ddd ||ddd ||dddd S) z>$ matches the end of string, and just before the terminating $#za b za b# #za b cza b c#riz# #za# b# #za# b# c#N)r,r.r(r7rwrrrrtest_dollar_matches_twices z!ReTests.test_dollar_matches_twicecCstd}td}|t|jd|t|jd|t|jdd|t|jdd|t|jdd|t|jdd|t|jdd|t|jdddS)Nrc.rr@r|r)r,r.r+rrPr7)rrbpatrrrtest_bytes_str_mixings  zReTests.test_bytes_str_mixingcCsdtjfD]B}td|tjB}||dtd|}||dq tdtjtjB}||dtdtj}||dtdtj}||dtd}||ddtjfD]B}td|tjB}||dtd |}||dq|t tjd tj|tj tjd |t tjdtjtjB|t tjd tj|t tjdtj|tj tjd dS) NrÀr\z\wu(?a)Àz(?a)\w\ws(?u)\wz(?u)\wz(?au)\w) r,rlr.rurrPrrOr+rr-)rrrrrrtest_ascii_and_unicode_flags0   z#ReTests.test_ascii_and_unicode_flagc Cst}tddD]}zjt|g|}|}||kr.Za5rUsa(\w)sb\1sacsbcsa(.)sasbs..cSsdS)Nbytesrrerrrrgurhsa5r)r,r.r(r7rrrr test_bug_6509es      zReTests.test_bug_6509c Csddl}dd}|ttjdi|t&|dd|gdidWdn1sX0Y|t$|idgdggWdn1s0YdS)NrrrErWrr)rFr+rr,r= OverflowErrorr.)rrFZ long_overflowrrr test_deallocws 4 zReTests.test_dealloccCs^|tdd|tdd|tdd|tdd|tdddS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u 123é€􏿿-)rr,rMrQrrrtest_search_dot_unicodes zReTests.test_search_dot_unicodecCsPtd}||tjt|}||tj||||ttjddS)Nrandom patternr)r,r.assertIsInstancePatternrr+r)rr*Z same_patternrrr test_compiles    zReTests.test_compilerH)sizeZmemusecCsBd|}td|}||||||||dS)NrWr)r,rMZassertIsNotNoner(rr)rrrDrfrrrtest_large_searchs   zReTests.test_large_searchcCs:d|}tdd|\}}||||||ddS)NrWrrH)r,rr()rrrDrnrrrtest_large_subns zReTests.test_large_subncCs2|tdddg|tddddS)Nz (?i)(a)\1uaa ĀrWz (?s).{1,3}uĀĀr)r(r,rCrPrNrQrrrtest_bug_16688szReTests.test_bug_16688cCsdd}|td|d|td|d|td|d|td|d|td |d|td |d|ttjd d d |ttjdd d |ttjdd d |ttjdd dd d fdS)Nr#順z.{65535})rrz .{,65535}z .{65535,}?z.{65536})rr#z .{,65536}z .{65536,}?.{%d}rrE.{,%d}.{%d,}?z.{%d,%d})r(r,rPrNr+rr.)rr8rrrtest_repeat_minmax_overflowsz#ReTests.test_repeat_minmax_overflowcCszddlm}Wnty,|dYn0dd}|td|d||td|d|d |td |d|| t tj d|| t tj d|| t tj d |dS) Nr) MAXREPEATz requires _sre.MAXREPEAT constantr#rrrHr)rrr) rFr ImportErrorskipTestrOr,rPr(rNr+rr.)rrr8rrr%test_repeat_minmax_overflow_maxrepeats z-ReTests.test_repeat_minmax_overflow_maxrepeatcCs|ddddS)Nz (?P=)z#bad character in group name ''rrrQrrr$test_backref_group_name_in_exceptionsz,ReTests.test_backref_group_name_in_exceptioncCs|ddddS)Nz (?P)z"bad character in group name '?foo'rrrQrrrtest_group_name_in_exceptionsz$ReTests.test_group_name_in_exceptioncCstdD]j}dD]`}d||d}|jt|tjddg|d|}|jt|tjddg|dq qdS)N)rrrz{1}rrcZyzrX)r&rZ)r(r,r.r rCrd)rrrr*rrrtest_issue17998szReTests.test_issue17998cCsdtdfD]8}td|}dt|jt|jf}|t||q dtdt dt dfD]8}td|}dt|jt|jf}|t||q^t t dd\}}d t|jt|jf}|t||d t|jt|jf}|t||dS) Nz [abracadabra]z (.+)(.*?)\1z7<(%s\.)?%s object; span=\(1, 12\), match='abracadabra'>s [abracadabra]s (.+)(.*?)\1z8<(%s\.)?%s object; span=\(1, 12\), match=b'abracadabra'>z (aa)|(bb)zaa bbz-<(%s\.)?%s object; span=\(0, 2\), match='aa'>z-<(%s\.)?%s object; span=\(3, 5\), match='bb'>) r r,rMr rrrreprrr<ryrr=)rr8rfr*rrrrrtest_match_reprs0  zReTests.test_match_reprcCs|tddgd|tddgd|tddgd|tddgd |tdd dd |tdd dd |td ddd|tddgd|tddgd|ddtddDgd|ddtddDgddS)Nrza::bc)rrWrrrz\b|:+)rrWrrrrz(?.)rFrHrHrGrIrIrrcSsg|] }|qSrr$r%rrrr rh)rFrr&r')rIrr()r(r,rr7rCr=rQrrrtest_zerowidths"zReTests.test_zerowidthcCsjdD]`}dD]V}td||f}|d}||dd||dd||d d q qdS) N){0,}rrz{1,187})r*rrz ^((x|y)%s)%sZxyyzyrZxyyrHrrr$)r,r.rPr(rT)rrrrrfrrr test_bug_2537s zReTests.test_bug_2537cCsd}t}t|tjWdn1s.0Yd|_d}|||t}t|tjWdn1s|0Y|||dS)Nz(\.)(?:[ch]|py)(?(1)$|: )aSUBPATTERN 1 0 0 LITERAL 46 BRANCH IN LITERAL 99 LITERAL 104 OR LITERAL 112 LITERAL 121 GROUPREF_EXISTS 1 AT AT_END ELSE LITERAL 58 LITERAL 32 0. INFO 8 0b1 2 5 (to 9) prefix_skip 0 prefix [0x2e] ('.') overlap [0] 9: MARK 0 11. LITERAL 0x2e ('.') 13. MARK 1 15. BRANCH 10 (to 26) 17. IN 6 (to 24) 19. LITERAL 0x63 ('c') 21. LITERAL 0x68 ('h') 23. FAILURE 24: JUMP 9 (to 34) 26: branch 7 (to 33) 27. LITERAL 0x70 ('p') 29. LITERAL 0x79 ('y') 31. JUMP 2 (to 34) 33: FAILURE 34: GROUPREF_EXISTS 0 6 (to 41) 37. AT END 39. JUMP 5 (to 45) 41: LITERAL 0x3a (':') 43. LITERAL 0x20 (' ') 45: SUCCESS )rr,r.DEBUGZmaxDiffr(getvalue)rroutdumprrrtest_debug_flags,),zReTests.test_debug_flagcCstd}||jddddd||jddddd||jddddd||jddddd g||jdd d gd ||j ddddddS) Nz(ab)Z abracadabrarurq)r8r1r)rurprprIrrH)r8r)rrZ racadabra) r,r.r(rPrNrrMrCrrrrrrtest_keyword_parametersOs*  zReTests.test_keyword_parameterscCs |tddtjddS)Nz[a-c]+r1rK)r(r,rrrNrQrrrtest_bug_20998aszReTests.test_bug_20998c Csttj}|tjtj|dD]:}zttj|Wq"tjyZ|d|Yq"0q"t|| t| |dS)Nen_US.iso88591 en_US.utf8test needs %s locale) r setlocaleLC_CTYPE addCleanupErrorrr,rcheck_en_US_iso88591check_en_US_utf8)r oldlocalelocrrrtest_locale_cachingfs zReTests.test_locale_cachingcCsttjd|tddtjtjB|tddtjtjB|tddtjtjB|tdd|tdd|tdddS)Nr4(?Li)(?Li)(?Li))rr7r8rr,rPrvrrQrrrr;xszReTests.check_en_US_iso88591cCsttjd|tddtjtjB|tddtjtjB|tddtjtjB|tdd|tdd|tdddS)Nr5r@rArBrCrDrE) rr7r8rr,rPrvrrOrQrrrr<szReTests.check_en_US_utf8c Csttj}|tjtj|dD]:}zttj|Wq"tjyZ|d|Yq"0q"ttjdtdtjtj B}tdtjtj B}tdtjtj B}tdtjtj B}|||fD]4}| | d| | d| | d q| | d | | d| | d ttjd |||fD]6}| | d| | d| | d qD| | d | | d| | d dS) Nr3r6r4r@s[a][a]s [az][az]s[^][^]sssr5) rr7r8r9r:rr,r.rvrrrPrO)rr=r>Zp1Zp2Zp3Zp4rrrrtest_locale_compileds6 zReTests.test_locale_compiledcCs|tj}tdWdn1s,0Y|j}||jt||jd||j d||j d||j d| |j t|| dt||d|j |tj}tdWdn1s0Y|j}||jt||jd||j d|tj}tdtjWdn1sJ0Y|j}||j d||j d ||j d | |j t|| d t|| d t|dS) Nu(€))rIrHrz at position 3s())zq ( abc ) ) ( Mrz at position 77z(line 5, column 17))r+r,r-r.r0r r*rUr(r1linenocolnoassertInr&Z assertNotInrSrx)rr3r4rrr test_errors8(($zReTests.test_errorcCs|ddd|ddd|ddd|dd d |d d d |ddd |ddd |ddd|dd d |ddd |dd ddS)Nrrrz((a|b)z(a|b))zunbalanced parenthesisrz(?Pzunexpected end of patternrIz(?z)zunknown extension ?zrHz(?iz)rrrz(?#abczmissing ), unterminated commentz(?)zunknown extension ?<>z(?rrrQrrrtest_misc_errorsszReTests.test_misc_errorscCs(|dttj|dttjdS)Nrr*)rKrUr,rr rQrrr test_enumszReTests.test_enumcCstdtj}||||||kttdtj}|t|t||||ttdtj}|||ttd}||||t ||kWdn1s0YdS)NrZXYZ) r,r.rur(r rhashassertNotEqualr+r)rpattern1pattern2pattern3Zpattern4rrrtest_pattern_compares      zReTests.test_pattern_comparecCstd}ttd}|t|t||||ttd}t(tdt| ||Wdn1s0YdS)Nrrr-) r,r.rr(rOrrrrrP)rrQrRrSrrrtest_pattern_compare_bytess      z"ReTests.test_pattern_compare_bytescCsptd}td|}td|}||d||dd|dd<||d||ddS)Nsabcdefghs[a-h]+s[e-h]+sefghrZrh)r<r,rMr(rT)rrDrfZm2rrrtest_bug_29444s   zReTests.test_bug_29444cCs d}d}|t||dd}d}|t||ddg|dd t||Ddd gd }d }|t||d dg|dd t||Dddddddgd}|dd t||Dddddddgd}|dd t||DdddddddddgdS)Nza xz\b(?=(\t)|(x))x)Nr#rz (?=(.)(.)?)r)r@rcSsg|] }|qSr)rr%rrrr&rhz*ReTests.test_bug_34294..rz1(?=<(?P\w+)/?>(?:(?P.+?))?)z)rx)foo2rcSsg|] }|qSrrr%rrrr.rhrxrW)tagrZrXzHellocSsg|] }|qSrrYr%rrrr2rhZHellorzHellocSsg|] }|qSrrYr%rrrr6rh)r(r,rMrrCr=rWrrrtest_bug_34294sDzReTests.test_bug_34294)N)N)N)rrrr)r5r9rBrErRrVr}rrrrrrrrrrrrrrrrrrrrrrrrr rrrr!r'r)r+r/r0r;r=rBrDrrOrRrXrYr,rr[r8rJdigitsr]r_rergrirqrtryr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrrrrrr r!r#r)r+r0r1r2r?r;r<rFrLrMrNrTrUrVr[rrrrrs   * 0&5 !,% $ $! -           f  -&       5   $  rc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)PatternReprTestscCs|tt||dSr r(r"r,r.)rr*rrrrcheck=szPatternReprTests.checkcCs|tt|||dSr r^)rr*rrrrr check_flags@szPatternReprTests.check_flagscCs|dddS)Nr re.compile('random pattern')r_rQrrrtest_without_flagsCsz#PatternReprTests.test_without_flagscCs|dtjddS)Nr z+re.compile('random pattern', re.IGNORECASE))r`r,rurQrrrtest_single_flagGs z!PatternReprTests.test_single_flagcCs |dtjtjBtjBddS)Nr z@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r`r,rr rwrQrrrtest_multiple_flagsKsz$PatternReprTests.test_multiple_flagscCs0|dtjd|dtjtjBtjBddS)Nr raz5re.compile('random pattern', re.IGNORECASE|re.DOTALL))r`r,r rr rQrrrtest_unicode_flagPs  z"PatternReprTests.test_unicode_flagcCs|dddS)Nz (?i)patternz(re.compile('(?i)pattern', re.IGNORECASE)rbrQrrrrWsz"PatternReprTests.test_inline_flagscCs&|ddd|ddtjBddS)Nr i0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))r`r,rrQrrrtest_unknown_flags[s z#PatternReprTests.test_unknown_flagscCs |dd|dtjddS)N bytes patternzre.compile(b'bytes pattern')z&re.compile(b'bytes pattern', re.ASCII))r_r`r,rrQrrr test_bytesas  zPatternReprTests.test_bytescCs|dtjddS)Nrhz're.compile(b'bytes pattern', re.LOCALE))r`r,rvrQrrr test_localegs zPatternReprTests.test_localecCs(|dd|dd|dddS)Nzrandom "double quoted" patternz,re.compile('random "double quoted" pattern')zrandom 'single quoted' patternz,re.compile("random 'single quoted' pattern")z!both 'single' and "double" quotesz1re.compile('both \'single\' and "double" quotes')rbrQrrr test_quoteskszPatternReprTests.test_quotescCsddd}tt|}|t|d||dddtt|tj}|t|d||ddd||ddddS) NzVery %spatternzlong ri,zre.compile('Very long long loniz, re.IGNORECASE))r"r,r.Z assertLessrr(r)rr*rrrrtest_long_patternss z"PatternReprTests.test_long_patterncCs|ttjd|ttjtjBtjBd|ttjtjBtjBdBd|ttjd|ttjtjBtjBd|ttjtjBtjBdBddS)Nz re.IGNORECASEz"re.IGNORECASE|re.DOTALL|re.VERBOSEiz+re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000z~re.IGNORECASEz%~(re.IGNORECASE|re.DOTALL|re.VERBOSE)z.~(re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000))r(r"r,rr rwrQrrrtest_flags_repr}sz PatternReprTests.test_flags_reprN)rrrr_r`rcrdrerfrrgrirjrkrmrnrrrrr]<s r]c@seZdZdZddZdS)ImplementationTestz7 Test implementation details of the re module. cCs|tj}||dg||ddg||dgd||dgd||dgd ||d gd dS) NrrWrr)rrrrZaaaa)rrHrrIZababba)rrrHrrrHZabcabdac)rrrrHrrrHr) sre_compile_generate_overlap_tabler()rfrrrtest_overlap_tablesz%ImplementationTest.test_overlap_tableN)rrr__doc__rsrrrrrosroc@seZdZddZddZdS) ExternalTestsc Csddlm}|D]\}}|j||dt|}|||||||||dd|dd}||||||d|||ddt ||||ddt |Wdq1s0YqdS)zre_tests benchmarksr) benchmarksr*r8rr(N) test.re_testsrvr/r,r.rrMrPrr)rrvr*rDrs2rrrtest_re_benchmarkss   z ExternalTests.test_re_benchmarksc Cs ddlm}m}m}|D]}d}}}}} t|dkrN|\}}}}} n"t|dkrf|\}}}n td||j||d||kr|tj t |Wdn1s0YWdqt |} | |} ||kr| | dWdq|| | d | d\} } | d| | jjd }td d D]H}z| |}|durld }Wntyd}Yn0||d|<qN| jjD]D}z| |}|durd }Wntyd}Yn0|||<q|t||| dWdn1s0Yzt|d}t|d}WntyJYn0|d*t |} | | |Wdn1s0Y|d<t |tj} | |} | durtd|Wdn1s0Y|dddkrf|dddkrf| durf|d2t |} | | || | d Wdn1s\0Y|d.t |tj} | | |Wdn1s0Y|d.t |tj} | | |Wdn1s0YWdq1s0YqdS)zre_tests test suiter)testsFAIL SYNTAX_ERRORNrrIz%Test tuples should have 3 or 5 fieldsrwzSucceeded incorrectlyzFailed incorrectly)foundrrrHdNoner:zg%dzgrouping errorrczbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchrrzrange-limited matchzcase-insensitive matchzunicode-sensitive match)rxr{r|r}rrr/r+r,r-r.rMrOrrNrTrrrr keysr(evalrSUnicodeEncodeErrorrprintrurl)rr{r|r}tr*rDoutcomer6robjresultrrZvardictrZgirbsrrr test_re_testss     (             $   0   *$  8 0 zExternalTests.test_re_testsN)rrrrzrrrrrrusru__main__)Z test.supportrrrrrrr,rpr8ZunittestrrweakrefrrUr rSrZTestCaserr]rorurmainrrrrs@  2Nq