a
    IfK                     @   s  d Z ddlT dZdZedZedZedZedZed	Z	ee
ehZeeeeeeehZeed
feedfeedfeedfeedfeedfeedfeedfdZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeeefgfee fd
Z!e"e#e$e%e&e'e(e)dZ*e'e#B e)B Z+e,e(B Z-G dd de.Z/G dd dZ0G dd dZ1G dd dZ2dd Z3dd  Z4d!d" Z5d#d$ Z6d3d&d'Z7d(d) Z8d*d+ Z9d4d-d.Z:d/d0 Z;d1d2 Z<d,S )5zInternal support module for sre    )*z.\[{()*+?^$|z*+?{
0123456789Z01234567Z0123456789abcdefABCDEFZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz 	

	\)z\a\bz\fz\nz\rz\tz\vz\\)
z\Ar   z\Bz\dz\Dz\sz\Sz\wz\Wz\Z)iLmsxatuc                   @   s   e Zd ZdS )VerboseN)__name__
__module____qualname__ r   r   lib/python3.9/sre_parse.pyr   G   s   r   c                   @   sB   e Zd Zdd Zedd ZdddZdd	 Zd
d Zdd Z	dS )Statec                 C   s$   d| _ i | _d g| _d | _i | _d S )Nr   )flags	groupdictgroupwidthslookbehindgroupsgrouprefposselfr   r   r   __init__L   s
    zState.__init__c                 C   s
   t | jS N)lenr   r!   r   r   r   groupsR   s    zState.groupsNc                 C   sb   | j }| jd  | j tkr$td|d ur^| j|d }|d urTtd|||f || j|< |S )Nztoo many groupsz7redefinition of group name %r as group %d; was group %d)r&   r   append	MAXGROUPSerrorr   get)r"   namegidogidr   r   r   	opengroupU   s    

zState.opengroupc                 C   s   |  | j|< d S r$   )getwidthr   )r"   r,   pr   r   r   
closegroupa   s    zState.closegroupc                 C   s   || j k o| j| d uS r$   )r&   r   )r"   r,   r   r   r   
checkgroupc   s    zState.checkgroupc                 C   s6   | j d ur2| |s|d|| j kr2|dd S )Ncannot refer to an open groupz?cannot refer to group defined in the same lookbehind subpattern)r   r2   r)   )r"   r,   sourcer   r   r   checklookbehindgroupf   s
    



zState.checklookbehindgroup)N)
r   r   r   r#   propertyr&   r.   r1   r2   r5   r   r   r   r   r   J   s   

r   c                   @   s`   e Zd ZdddZdddZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd ZdS )
SubPatternNc                 C   s"   || _ |d u rg }|| _d | _d S r$   )statedatawidth)r"   r8   r9   r   r   r   r#   p   s
    zSubPattern.__init__r   c                 C   s  d}t tf}| jD ]t\}}t|d t| dd |tu rlt  |D ]"\}}t|d d t| | qFq|tu rt  t|d D ]*\}}|rt|d d  ||d  qq|t	u r|\}}	}
td| |	|d  |
rt|d d  |
|d  qt
||r~d}|D ]T}t
|trJ|s6t  ||d  d}n"|s\td	dd t|dd d}q|st  qtd| qd S )
NTz   )end   ORELSEF )tuplelistr9   printstrINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancer7   )r"   levelnlseqtypesopavr   r   	condgroupitem_yesitem_nor   r   r   rH   w   sH    


zSubPattern.dumpc                 C   s
   t | jS r$   )reprr9   r!   r   r   r   __repr__   s    zSubPattern.__repr__c                 C   s
   t | jS r$   )r%   r9   r!   r   r   r   __len__   s    zSubPattern.__len__c                 C   s   | j |= d S r$   r9   r"   indexr   r   r   __delitem__   s    zSubPattern.__delitem__c                 C   s&   t |trt| j| j| S | j| S r$   )rJ   slicer7   r8   r9   rW   r   r   r   __getitem__   s    
zSubPattern.__getitem__c                 C   s   || j |< d S r$   rV   r"   rX   coder   r   r   __setitem__   s    zSubPattern.__setitem__c                 C   s   | j || d S r$   )r9   insertr\   r   r   r   r_      s    zSubPattern.insertc                 C   s   | j | d S r$   )r9   r'   )r"   r]   r   r   r   r'      s    zSubPattern.appendc           	      C   s  | j d ur| j S d }}| jD ]\}}|tu r|td }d}|d D ]$}| \}}t||}t||}qD|| }|| }q|tu r| \}}|| }|| }q|tu r|d  \}}|| }|| }q|t	v r|d  \}}|||d   }|||d   }q|t
v r$|d }|d }q|tu rP| jj| \}}|| }|| }q|tu r|d  \}}|d d ur|d  \}}t||}t||}nd}|| }|| }q|tu r qqt|td t|tf| _ | j S )Nr   r=      )r:   r9   rF   	MAXREPEATr/   minmaxCALL
SUBPATTERN_REPEATCODES
_UNITCODESGROUPREFr8   r   rI   SUCCESS)	r"   lohirN   rO   r   jlhr   r   r   r/      sZ    












zSubPattern.getwidth)N)r   )r   r   r   r#   rH   rT   rU   rY   r[   r^   r_   r'   r/   r   r   r   r   r7   n   s   

(r7   c                   @   sb   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	dd Z
dd Zdd ZdddZdS )	Tokenizerc                 C   s@   t |t| _|| _| js"t|d}|| _d| _d | _|   d S )Nlatin1r   )rJ   rD   istextstringdecoded_stringrX   next_Tokenizer__next)r"   rs   r   r   r   r#      s    
zTokenizer.__init__c                 C   s   | j }z| j| }W n ty.   d | _Y d S 0 |dkr|d7 }z|| j| 7 }W n, ty~   td| jt| jd d Y n0 |d | _ || _d S )Nr   r=   zbad escape (end of pattern))rX   rt   
IndexErrorru   r)   rs   r%   )r"   rX   charr   r   r   __next   s$    
zTokenizer.__nextc                 C   s   || j kr|   dS dS )NTFru   rv   )r"   rx   r   r   r   match   s    
zTokenizer.matchc                 C   s   | j }|   |S r$   rz   )r"   thisr   r   r   r*      s    zTokenizer.getc                 C   s8   d}t |D ]&}| j}||vr" q4||7 }|   q|S Nr;   )rangeru   rv   )r"   ncharsetresult_cr   r   r   getwhile  s    
zTokenizer.getwhilec                 C   sl   d}| j }|   |d u r@|s,| d| | d| t|||kr^|sh| d| dqh||7 }q|S )Nr;   zmissing zmissing %s, unterminated namer=   )ru   rv   r)   r%   )r"   
terminatorr+   r   r   r   r   r   getuntil  s    

zTokenizer.getuntilc                 C   s   | j t| jpd S r}   rX   r%   ru   r!   r   r   r   pos  s    zTokenizer.posc                 C   s   | j t| jpd S r}   r   r!   r   r   r   tell  s    zTokenizer.tellc                 C   s   || _ |   d S r$   )rX   rv   rW   r   r   r   seek!  s    zTokenizer.seekr   c                 C   s   t || j|  | S r$   )r)   rs   r   )r"   msgoffsetr   r   r   r)   %  s    zTokenizer.errorN)r   )r   r   r   r#   rv   r{   r*   r   r   r6   r   r   r   r)   r   r   r   r   rp      s   		
rp   c              	   C   s  t |}|r|S t|}|r0|d tu r0|S zL|dd }|dkr|| dt7 }t|dkrx| d| t|tt	|dd  dfW S |dkr| j
r|| dt7 }t|d	kr| d| t|tt	|dd  dfW S |d
krN| j
rN|| dt7 }t|dkr*| d| t|t	|dd  d}t| t|fW S |dkr| j
rdd l}| ds~| d| dd}zt||}W n4 ttfy   | d| t|td Y n0 t|fW S |tv r0|| dt7 }t	|dd  d}|dkr&| d| t|t|fW S |tv r>tt|dkr||tv rj| d| t|tt|d fW S W n ty   Y n0 | d| t|d S )Nr   r=   ra   r      incomplete escape %s   r      U   
   N{	missing {}character nameundefined character name %r\N{}   .octal escape value %s outside of range 0-0o377bad escape %s)ESCAPESr*   
CATEGORIESrE   r   	HEXDIGITSr%   r)   LITERALintrr   chrunicodedatar{   r   ordlookupKeyError	TypeError	OCTDIGITSDIGITS
ValueErrorASCIILETTERS)r4   escaper]   r   r   charnamer   r   r   _class_escape(  sp    











r   c              	   C   sf  t |}|r|S t|}|r$|S z|dd }|dkr|| dt7 }t|dkrl| d| t|tt|dd  dfW S |dkr| j	r|| dt7 }t|dkr| d| t|tt|dd  dfW S |d	krB| j	rB|| d
t7 }t|dkr| d| t|t|dd  d}t
| t|fW S |dkr| j	rdd l}| dsr| d| dd}zt||}W n4 ttfy   | d| t|td Y n0 t|fW S |dkr|| dt7 }tt|dd  d
fW S |tv r| jtv r||  7 }|d tv r|d tv r| jtv r||  7 }t|dd  d
}|dkr| d| t|t|fW S t|dd  }||jk r||s| dt||||  t|fW S | d| t|d t|dkr6|tv r$| d| t|tt|d fW S W n tyL   Y n0 | d| t|d S )Nr=   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   0r   r   r3   invalid group reference %dr   )r   r*   r   r   r   r%   r)   r   r   rr   r   r   r{   r   r   r   r   r   r   r   ru   r&   r2   r5   ri   r   r   )r4   r   r8   r]   r   r   r   groupr   r   r   _escaped  s    












r   c                 C   s   t t| S r$   )rB   dictfromkeys)itemsr   r   r   _uniq  s    r   c                 C   sV  g }|j }| j}|  }|t| |||d | o2|  |dsqDqt|dkrX|d S t|}d }	|D ].}
|
st q|	d u r|
d }	qh|
d |	krh qqh|D ]
}
|
d= q| |	 q`qq`g }|D ]h}
t|
dkr q@|
d \}}|tu r| ||f q|tu r"|d d tur"|	| q q@q| tt
|f |S | td |ff |S )Nr=   |r   )r'   r{   r   _parser%   r7   r   rE   NEGATEextendr   rF   )r4   r8   verbosenestedr   itemsappendsourcematchstart
subpatternprefixitemsetrN   rO   r   r   r   
_parse_sub  sN    


r   Fc           /   
   C   s  t |}|j}| j}| j}t}	t}
| j}|d u r4qR|dv r@qR|  |rx|tv rTq"|dkrx| }|d u sv|dkr\q"q\q"|d dkrt| ||}|| q"|t	vr|t
|
|f q"|dkr|  d }g }|j}| jdkrdd l}|jd|   t|d	 d
 |d}| }|d u r0| d|  | |dkrF|rFqbn|d dkr`t| |}n~|r|dv r| j|krdd l}|jd|dkrdn|dkrdn|dkrdnd|  d f t|d	 d
 t
|
|f}|dr<| }|d u r| d|  | |dkrL|d tu r0|d d }|| |t
|
df qb|d dkrft| |}n>|dkrdd l}|jd|  d  t|d	 d
 t
|
|f}|d t
ks|d t
krd||f }| |t|d t| |d }|d }||k r*d||f }| |t|d t| |t||ff n"|d tu rV|d d }|| qt|}|	|dkr|d d t
u r|r|t|d d f n||d  n"|r|dtd f |t|f q"|tv r.|  }|dkr d\}}nB|dkrdt }}n*|dkr0dt }}n|dkr4| jdkrX|t
|
|f q"dt }}d  }}| jtv r|| 7 }qj|d!r| jtv r|| 7 }qn|}|ds|t
|
|f | | q"|rt|}|tkrtd"|rBt|}|tkrtd"||k rB| d#|  | ntd$|f |rV|d%d  }nd }|rr|d d tu r| d&|  | t| |d d tv r| d'|  | t| |d d t u r|d d \}}}}|d u r|s|s|}|drt!|||ff|d%< nt"|||ff|d%< q"|d(krF|t#d f q"|d)kr|  d } d*}d }!d}d}|drB| }|d u r| d+|d,kr|d-r| $d.d/}!|!% sd0|! }| |t|!d n|d1r| $d2d/}!|!% sd0|! }| |t|!d |j&|!}"|"d u rFd3|! }| |t|!d |'|"sf| d4t|!d |(|"|  |t)|"f q"n2| }|d u r| d+| d5| t|d n|d6krd }nx|dkr| jd u r| d7|  |  | d2krq"qq"n6|d8v rd}#|d-kr|| }|d u r>| d+|d9vr`| d:| t|d d%}#|j*}$|$d u r||j+|_*t,| |||d }|#dk r|$d u rd |_*|d2s| d;|  |  |d1kr|t-|#|ff q"|t.|#|ff q"nJ|d)k
r| $d2d/}%|%% 	rL|j&|%}&|&d u 
r d3|% }| |t|%d nzt|%}&|&dk 	rdt/W n2 t/	y   d0|% }| |t|%d d Y n0 |&	s| d<t|%d |&t0k	rd=|& }| |t|%d |&|j1v
r |  t|% d |j1|&< |(|&|  t2| |||d }'| d>
rTt2| |||d }(| jd>k
rX| d?nd }(| d2
sx| d;|  |  |t3|&|'|(ff q"n|t4v 
s|dkr*t5| ||})|)d u r|
r|rdd l}|jd@| j6d dA t| j6dAk
rdBnd | f t7|d	 d
 |j8t9@ r"|s"t:q"|)\}}d }n| dC| t|d |d urz|;|!}W n> ty }* z$| |*j<t|!d d W Y d }*~*n
d }*~*0 0 |s|t9@ o|t9@  }+t,| ||+|d }| d2s| d;|  |  |d ur|=|| |t ||||ff q"|dkr*|tt>f q"|dDkrB|tt?f q"tdE|f q"t@t|d d d% D ]N},||, \}-}.|-t u rh|.\}}}}|d u rh|sh|sh|||,|,d < qh|S )FNz|)#r   r   r   [r=   z"Possible nested set at position %dr   )
stacklevel^zunterminated character set]z-&~|zPossible set %s at position %d-
difference&intersection~zsymmetric differenceunionz&Possible set difference at position %dra   zbad character range %s-%s?)r   r=   r   +r   r   r;   ,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rr`   znothing to repeatzmultiple repeat.(Tzunexpected end of patternP<>
group namebad character in group name %r=)unknown group name %rr3   zunknown extension ?P:zmissing ), unterminated commentz=!<z=!zunknown extension ?<z"missing ), unterminated subpatternzbad group numberr   r   z/conditional backref with more than two branchesz@Flags not at the start of the expression %r%s but at position %d   z (truncated)zunknown extension ?$z unsupported special character %r)Ar7   r'   r*   r{   r%   r   ru   
WHITESPACEr   SPECIAL_CHARSr   r   warningswarnFutureWarningr)   r   rE   RANGEr   NOT_LITERALr_   r   REPEAT_CHARSrb   r   r   r   OverflowErrorAssertionErrorATrg   rf   
MIN_REPEAT
MAX_REPEATANYr   isidentifierr   r2   r5   ri   r   r&   r   ASSERT
ASSERT_NOTr   r(   r    r   rI   FLAGS_parse_flagsrs   DeprecationWarningr   SRE_FLAG_VERBOSEr   r.   r   r1   AT_BEGINNINGAT_ENDr~   )/r4   r8   r   r   firstr   subpatternappend	sourcegetr   _len_ordr|   r]   herer   	setappendr   negatecode1thatcode2r   rk   rl   rc   rd   rx   r   r   	add_flags	del_flagsr0   r   r+   r,   dirr   condnamerP   rQ   rR   r   errsub_verboser   rN   rO   r   r   r   r     s~   





	






 





















































	


.




r   c                 C   s  | j }d}d}|dkrt| }| jr<|dkrRd}| |n|dkrRd}| |||O }|t@ r||t@ |kr|d}| || }|d u r| d|d	v rq|tvr| rd
nd}| |t|q|dkr| j|O  _d S |t@ r| dd|dkr| }|d u r| d|tvrF| r2d
nd}| |t|t| }|t@ rfd}| |||O }| }|d u r| d|dkrq|tvrF| rd
nd}| |t|qF|dksJ |t@ r| dd||@ r | dd||fS )Nr   r   r   z8bad inline flags: cannot use 'L' flag with a str patternr   z:bad inline flags: cannot use 'u' flag with a bytes patternz9bad inline flags: flags 'a', 'u' and 'L' are incompatiblezmissing -, : or )z)-:zunknown flagr   z,bad inline flags: cannot turn on global flagr=   zmissing flagz8bad inline flags: cannot turn off flags 'a', 'u' and 'L'z	missing :r   z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and off)	r*   r   rr   r)   
TYPE_FLAGSisalphar%   r   GLOBAL_FLAGS)r4   r8   rx   r   r  r  flagr   r   r   r   r   d  sn    














r   c                 C   sj   t | tr>|t@ rtd|t@ s,|tO }qf|t@ rftdn(|t@ rNtd|t@ rf|t@ rftd|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)rJ   rD   SRE_FLAG_LOCALEr   SRE_FLAG_ASCIISRE_FLAG_UNICODE)srcr   r   r   r   	fix_flags  s    


r  Nc                 C   s   t | }|d u rt }||_| |_zt|||t@ d}W n@ tyx   t }|tB |_| |_|d t||dd}Y n0 t| |j	j|j	_|j
d ur|j
dksJ |d|j	jD ],}||j	jkrd| }t|| |j	j| q|t@ r|  |S )Nr   Tr   zunbalanced parenthesisr   )rp   r   r   rD   r   r   r   r   r  r8   ru   r)   r    r&   SRE_FLAG_DEBUGrH   )rD   r   r8   r4   r0   gr   r   r   r   parse  s0    



r  c                    s  t | j}g  g g j} fdd}j}| }|d u rLq|d dkr|d }|dkrFd}dsd	d
d}| rz|| }	W n ty   t	d| Y n0 njzt
|}	|	dk rtW n. ty   d| t|d d Y n0 |	tkr0d|	 t|d ||	t|d  q|dkrjtv r||| 7 }jtv r||| 7 }|tt
|dd  dd@  q|tv rVd}
jtv r0|| 7 }|tv r0|d tv r0jtv r0|| 7 }d}
t
|dd  d}|dkr$d| t||t| |
s|t
|dd  t|d  nPztt| d }W n2 ty   |tv rd| t|Y n0 || q:|| q:rȈd t| tsdd D  fS )Nc                    sX   | j krd|  |r8d d d =  t| f d  d S )Nr   r;   )r&   r)   r'   joinr%   )rX   r   r&   literalliteralsr   r8   r   r   addgroup  s    

z parse_template.<locals>.addgroupr   r   r=   r  r;   r   z	missing <r   r   r   r   r   r   r   r   Fra   Tr   r   c                 S   s"   g | ]}|d u rd n| dqS )Nzlatin-1)encode).0r   r   r   r   
<listcomp>'      z"parse_template.<locals>.<listcomp>)rp   r*   r'   
groupindexr{   r)   r   r   r   rw   r   r   r%   r(   ru   r   r   r   r   r   r  rJ   rD   )r4   r8   sgetlappendr  r  r|   r   r+   rX   isoctalr   r  r   parse_template  s    










"



 


r"  c                 C   st   |j }|jd d }| \}}|d d  }z"|D ]\}}||p@|||< q.W n tyh   td| Y n0 ||S )Nr   r   )r   rs   rw   r)   r  )templater{   r  emptyr&   r  rX   r   r   r   r   expand_template*  s    r%  )F)r   N)=__doc__sre_constantsr   r   	frozensetr   r   r   r   r   r   r   rg   r   r   rE   r   r   CATEGORYrh   r   r   r   ZAT_BEGINNING_STRINGZAT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZCATEGORY_WORDZCATEGORY_NOT_WORDZAT_END_STRINGr   SRE_FLAG_IGNORECASEr  SRE_FLAG_MULTILINESRE_FLAG_DOTALLr   r  SRE_FLAG_TEMPLATEr  r   r	  r  r  	Exceptionr   r   r7   rp   r   r   r   r   r   r   r  r  r"  r%  r   r   r   r   <module>   sr   







$rH<M:
  x<
%U