a
    ӗa&                     @   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*+?{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   ,/home/manager/Python-3.9.10/Lib/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 | _d S )Nr   )flags	groupdictgroupwidthslookbehindgroupsselfr   r   r   __init__L   s    zState.__init__c                 C   s
   t | jS N)lenr   r   r   r   r   groupsQ   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gidZogidr   r   r   	opengroupT   s    

zState.opengroupc                 C   s   |  | j|< d S r"   )getwidthr   )r    r*   pr   r   r   
closegroup`   s    zState.closegroupc                 C   s   || j k o| j| d uS r"   )r$   r   )r    r*   r   r   r   
checkgroupb   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   r/   r'   )r    r*   sourcer   r   r   checklookbehindgroupe   s
    



zState.checklookbehindgroup)N)
r   r   r   r!   propertyr$   r+   r.   r/   r2   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    r5   r6   r   r   r   r!   o   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   ZORZELSEF )tuplelistr6   printstrINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancer4   )r    levelZnlZseqtypesopavr   r   	condgroupitem_yesitem_nor   r   r   rC   v   sH    


zSubPattern.dumpc                 C   s
   t | jS r"   )reprr6   r   r   r   r   __repr__   s    zSubPattern.__repr__c                 C   s
   t | jS r"   )r#   r6   r   r   r   r   __len__   s    zSubPattern.__len__c                 C   s   | j |= d S r"   r6   r    indexr   r   r   __delitem__   s    zSubPattern.__delitem__c                 C   s&   t |trt| j| j| S | j| S r"   )rE   slicer4   r5   r6   rP   r   r   r   __getitem__   s    
zSubPattern.__getitem__c                 C   s   || j |< d S r"   rO   r    rQ   coder   r   r   __setitem__   s    zSubPattern.__setitem__c                 C   s   | j || d S r"   )r6   insertrU   r   r   r   rX      s    zSubPattern.insertc                 C   s   | j | d S r"   )r6   r%   )r    rV   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:      )r7   r6   rA   	MAXREPEATr,   minmaxCALL
SUBPATTERN_REPEATCODES
_UNITCODESGROUPREFr5   r   rD   SUCCESS)	r    lohirG   rH   r   jlhr   r   r   r,      sZ    












zSubPattern.getwidth)N)r   )r   r   r   r!   rC   rM   rN   rR   rT   rW   rX   r%   r,   r   r   r   r   r4   m   s   

(r4   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   )rE   r?   istextstringdecoded_stringrQ   next_Tokenizer__next)r    rl   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))rQ   rm   
IndexErrorrn   r'   rl   r#   )r    rQ   charr   r   r   Z__next   s$    
zTokenizer.__nextc                 C   s   || j kr|   dS dS )NTFrn   ro   )r    rq   r   r   r   match   s    
zTokenizer.matchc                 C   s   | j }|   |S r"   rr   )r    thisr   r   r   r(      s    zTokenizer.getc                 C   s8   d}t |D ]&}| j}||vr" q4||7 }|   q|S Nr8   )rangern   ro   )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 )Nr8   zmissing zmissing %s, unterminated namer:   )rn   ro   r'   r#   )r    Z
terminatorr)   ry   r{   r   r   r   getuntil  s    

zTokenizer.getuntilc                 C   s   | j t| jpd S ru   rQ   r#   rn   r   r   r   r   pos  s    zTokenizer.posc                 C   s   | j t| jpd S ru   r~   r   r   r   r   tell  s    zTokenizer.tellc                 C   s   || _ |   d S r"   )rQ   ro   rP   r   r   r   seek   s    zTokenizer.seekr   c                 C   s   t || j|  | S r"   )r'   rl   r   )r    msgoffsetr   r   r   r'   $  s    zTokenizer.errorN)r   )r   r   r   r!   ro   rs   r(   r|   r}   r3   r   r   r   r'   r   r   r   r   ri      s   		
ri   c              	   C   s  t |}|r|S t|}|r0|d tu r0|S zH|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 n0 ty   | d| t|td Y n0 t|fW S |tv r,|| dt7 }t	|dd  d}|dkr"| d| t|t|fW S |tv r:tt|dkrx|tv rf| d| t|tt|d fW S W n ty   Y n0 | d| t|d S )Nr   r:   rZ   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(   
CATEGORIESr@   r|   	HEXDIGITSr#   r'   LITERALintrk   chrunicodedatars   r}   ordlookupKeyError	OCTDIGITSDIGITS
ValueErrorASCIILETTERS)r1   escaperV   r{   r   charnamer   r   r   _class_escape'  sp    











r   c              	   C   sb  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 n0 t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r2|tv r | d| t|tt|d fW S W n tyH   Y n0 | d| t|d S )Nr:   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   0r   r   r0   invalid group reference %dr   )r   r(   r   r|   r   r#   r'   r   r   rk   r   r   rs   r}   r   r   r   r   r   rn   r$   r/   r2   rb   r   r   )r1   r   r5   rV   r{   r   r   groupr   r   r   _escapec  s    












r   c                 C   s   t t| S r"   )r=   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%   rs   r   _parser#   r4   r   r@   NEGATEextendr   rA   )r1   r5   verbosenestedr   Zitemsappendsourcematchstart
subpatternprefixitemsetrG   rH   r   r   r   
_parse_sub  sN    


r   Fc           /   
   C   s  t |}|j}| j}| j}t}	t}
| j}|d u r4q*|dv r@q*|  |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r| }|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 nb|d6krd }nP|dkr| jd u r| d7|  |  | d2krq"qq"n|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"n"|d)k
rh| $d2d/}%|%% 	rL|j&|%}&|&d u 	rd3|% }| |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 |(|&|  t1| |||d }'| d>
r.t1| |||d }(| jd>k
r2| d?nd }(| d2
sR| d;|  |  |t2|&|'|(ff q"n|t3v 
s||dkrt4| ||})|)d u 
r|
r|
rdd l}|jd@| j5d dA t| j5dAk
rdBnd f t6|d	 d
 |j7t8@ r"|s"t9q"|)\}}d }n| dC| t|d |d urrz|:|!}W n> typ }* z$| |*j;t|!d d W Y d }*~*n
d }*~*0 0 |s|t8@ o|t8@  }+t,| ||+|d }| d2s| d;|  |  |d ur|<|| |t ||||ff q"|dkr|tt=f q"|dDkr|tt>f q"tdE|f q"t?t|d d d% D ]N},||, \}-}.|-t u r@|.\}}}}|d u r@|s@|s@|||,|,d < q@|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 %drZ   zbad character range %s-%s?)r   r:   r   +r   r   r8   ,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rrY   znothing to repeatzmultiple repeat.(Tzunexpected end of patternP<>
group namebad character in group name %r=)unknown group name %rr0   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   z (truncated)zunknown extension ?$z unsupported special character %r)@r4   r%   r(   rs   r#   r   rn   
WHITESPACEr   SPECIAL_CHARSr   r   warningswarnFutureWarningr'   r   r@   RANGEr   NOT_LITERALrX   r   REPEAT_CHARSr[   r   r   r   OverflowErrorAssertionErrorATr`   r_   
MIN_REPEAT
MAX_REPEATANYr}   isidentifierr   r/   r2   rb   r   r$   r   ASSERT
ASSERT_NOTr   r&   r   rD   FLAGS_parse_flagsrl   DeprecationWarningr   SRE_FLAG_VERBOSEr   r+   r   r.   ZAT_BEGINNINGZAT_ENDrv   )/r1   r5   r   r   Zfirstr   Zsubpatternappend	sourcegetr   _lenZ_ordrt   rV   Zherer   Z	setappendr   ZnegateZcode1ZthatZcode2r   rd   re   r\   r]   rq   r   r   	add_flags	del_flagsr-   r   r)   r*   dirr   ZcondnamerI   rJ   rK   r   ZerrZsub_verboser   rG   rH   r   r   r   r     st   





	






 
























































.




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   rk   r'   
TYPE_FLAGSisalphar#   r   GLOBAL_FLAGS)r1   r5   rq   r   r   r   flagr   r   r   r   r   ]  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)rE   r?   SRE_FLAG_LOCALEr   SRE_FLAG_ASCIISRE_FLAG_UNICODE)Z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|t@ r|  |S )Nr   Tr   zunbalanced parenthesis)ri   r   r   r?   r   r   r   r   r   r5   rn   r'   SRE_FLAG_DEBUGrC   )r?   r   r5   r1   r-   r   r   r   parse  s(    



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   r8   )r$   r'   r%   joinr#   )rQ   r   r$   Zliteralliteralsr   r5   r   r   addgroup  s    

z parse_template.<locals>.addgroupr   r
   r:   gr8   r   z	missing <r   r   r   r   r   r   r   r   FrZ   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>)ri   r(   r%   
groupindexrs   r'   r}   r   r   rp   r   r   r#   r&   rn   r   r   r   r   r   r   rE   r?   )r1   r5   ZsgetZlappendr   r  rt   r{   r)   rQ   Z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   rl   rp   r'   r   )templaters   r   Zemptyr$   r   rQ   r   r   r   r   expand_template  s    r  )F)r   N)=__doc__sre_constantsr   r   	frozensetr   r   r   r   r   r   r   r`   r   r   r@   r   r   CATEGORYra   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   r4   ri   r   r   r   r   r   r   r   r   r  r  r   r   r   r   <module>   sr   







#rH<M:
  r<
 U