o
    peK                     @   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   )/tools_x86_64/lib/python3.10/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   
   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r*t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   	opengroupU   s   

zState.opengroupc                 C   s   |  | j|< d S r$   )getwidthr   )r!   r,   pr   r   r   
closegroupa      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   s:   | j d ur| |s|d|| j kr|dd S 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.checklookbehindgroupr$   )
r   r   r   r"   propertyr&   r-   r0   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|d t| dd |tu r5t  |D ]\}}t|d d t| | q"q	|tu rYt  t|d D ]\}}|rPt|d d  ||d  qBq	|t	u r|\}}	}
td| |	|d  |
rt|d d  |
|d  q	t
||rd}|D ]&}t
|tr|st  ||d  d}q|std	dd t|dd d}q|st  q	td| q	d S )
NTz   )end   ZORZELSEF )tuplelistr9   printstrINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancer7   )r!   levelZnlZseqtypesopavr   r   	condgroupitem_yesitem_nor   r   r   rF   w   sR   



zSubPattern.dumpc                 C   r#   r$   )reprr9   r    r   r   r   __repr__      
zSubPattern.__repr__c                 C   r#   r$   )r%   r9   r    r   r   r   __len__   rQ   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$   )rH   slicer7   r8   r9   rT   r   r   r   __getitem__   s   

zSubPattern.__getitem__c                 C   s   || j |< d S r$   rS   r!   rU   coder   r   r   __setitem__      zSubPattern.__setitem__c                 C   s   | j || d S r$   )r9   insertrY   r   r   r   r]      r1   zSubPattern.insertc                 C   s   | j | d S r$   )r9   r'   )r!   rZ   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||}q!|| }|| }q|tu rP| \}}|| }|| }q|tu re|d  \}}|| }|| }q|t	v r|d  \}}|||d   }|||d   }q|t
v r|d }|d }q|tu r| jj| \}}|| }|| }q|tu r|d  \}}|d d ur|d  \}}t||}t||}nd}|| }|| }q|tu r nqt|td t|tf| _ | j S )Nr   r=      )r:   r9   rD   	MAXREPEATr.   minmaxCALL
SUBPATTERN_REPEATCODES
_UNITCODESGROUPREFr8   r   rG   SUCCESS)	r!   lohirJ   rK   r   jlhr   r   r   r.      s\   








zSubPattern.getwidthr$   r   )r   r   r   r"   rF   rP   rR   rV   rX   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   )rH   rB   istextstringdecoded_stringrU   next_Tokenizer__next)r!   rr   r   r   r   r"      s   
zTokenizer.__init__c                 C   s   | j }z| j| }W n ty   d | _Y d S w |dkr>|d7 }z	|| j| 7 }W n ty=   td| jt| jd d w |d | _ || _d S )Nr
   r=   zbad escape (end of pattern))rU   rs   
IndexErrorrt   r)   rr   r%   )r!   rU   charr   r   r   Z__next   s(   

zTokenizer.__nextc                 C   s   || j kr|   dS dS )NTFrt   ru   )r!   rw   r   r   r   match   s   
zTokenizer.matchc                 C   s   | j }|   |S r$   rx   )r!   thisr   r   r   r*      s   zTokenizer.getc                 C   s:   d}t |D ]}| j}||vr |S ||7 }|   q|S Nr;   )rangert   ru   )r!   ncharsetresult_cr   r   r   getwhile  s   
zTokenizer.getwhilec                 C   sn   d}	 | j }|   |d u r!|s| d| | d| t|||kr2|s/| d| d	 |S ||7 }q)Nr;   Tzmissing zmissing %s, unterminated namer=   )rt   ru   r)   r%   )r!   Z
terminatorr+   r   r   r   r   r   getuntil  s"   
zTokenizer.getuntilc                 C      | j t| jpd S r{   rU   r%   rt   r    r   r   r   pos  s   zTokenizer.posc                 C   r   r{   r   r    r   r   r   tell  s   zTokenizer.tellc                 C   s   || _ |   d S r$   )rU   ru   rT   r   r   r   seek!  s   zTokenizer.seekr   c                 C   s   t || j|  | S r$   )r)   rr   r   )r!   msgoffsetr   r   r   r)   %  s   zTokenizer.errorNrn   )r   r   r   r"   ru   ry   r*   r   r   r6   r   r   r   r)   r   r   r   r   ro      s    		
ro   c              	   C   s  t |}|r	|S t|}|r|d tu r|S z|dd }|dkrH|| dt7 }t|dkr<| d| t|tt	|dd  dfW S |dkrs| j
rs|| dt7 }t|d	krg| 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	|dd  d}t| t|fW S |dkr| j
rdd l}| ds| d| dd}z	t||}W n ttfy   | d| t|td w 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r5|tv r,| d| t|tt|d fW S W n
 ty@   Y nw | d| t|)Nr   r=   r_   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*   
CATEGORIESrC   r   	HEXDIGITSr%   r)   LITERALintrq   chrunicodedatary   r   ordlookupKeyError	TypeError	OCTDIGITSDIGITS
ValueErrorASCIILETTERS)r4   escaperZ   r   r   charnamer   r   r   _class_escape(  sv   











r   c              	   C   sN  t |}|r	|S t|}|r|S z|dd }|dkrB|| dt7 }t|dkr6| d| t|tt|dd  dfW S |dkrm| j	rm|| dt7 }t|dkra| 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|dd  d}t
| t|fW S |dkr| j	rdd l}| ds| d| dd}z	t||}W n ttfy   | d| t|td w t|fW S |dkr|| dt7 }tt|dd  d
fW S |tv rr| 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 rf||s[| dt||||  t|fW S | d| t|d t|dkr|tv r| d| t|tt|d fW S W n
 ty   Y nw | d| t|)Nr=   r_   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   rq   r   r   ry   r   r   r   r   r   r   r   rt   r&   r2   r5   rg   r   r   )r4   r   r8   rZ   r   r   r   groupr   r   r   _escaped  s   











r   c                 C   s   t t| S r$   )r@   dictfromkeys)itemsr   r   r   _uniq  r\   r   c                 C   sN  g }|j }| j}|  }	 |t| |||d | o|  |ds"nqt|dkr-|d S t|}	 d }	|D ]}
|
s< n |	d u rE|
d }	q6|
d |	krM nq6|D ]}
|
d= qP| |	 q1	 g }|D ]/}
t|
dkrk n1|
d \}}|tu r}| ||f qa|tu r|d d tur|	| qa n| tt
|f |S | td |ff |S )NTr=   |r   )r'   ry   r   _parser%   r7   r   rC   NEGATEextendr   rD   )r4   r8   verbosenestedr   Zitemsappendsourcematchstart
subpatternprefixitemsetrJ   rK   r   r   r   
_parse_sub  sV   


r   Fc           /   
   C   s  t |}|j}| j}| j}t}	t}
	 | j}|d u rn|dv r!n|  |r>|tv r+q|dkr>	 | }|d u s;|dkr<nq0q|d dkrPt| ||}|| n|t	vr^|t
|
|f n|dkr|  d }g }|j}| jdkrdd l}|jd	|   t|d
 d |d}	 | }|d u r| d|  | |dkr|rn|d dkrt| |}n9|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r|d tu r|d d }|| |t
|
df n|d dkr*t| |}n|dkrCdd l}|jd|  d  t|d
 d t
|
|f}|d t
ksW|d t
krkd||f }| |t|d t| |d }|d }||k rd||f }| |t|d t| |t||ff n|d tu r|d d }|| qt|}|	|dkr|d d t
u r|r|t|d d f nS||d  nK|r|dtd f |t|f n8|tv r|  }|dkrd\}}n|dkrdt}}n|dkrdt}}n|dkr| jd kr"|t
|
|f qdt}}d! }}| jtv r<|| 7 }| jtv s1|d"rS| jtv rR|| 7 }| jtv sGn|}|d sh|t
|
|f | | q|rxt|}|tkrxtd#|rt|}|tkrtd#||k r| d$|  | ntd%|f |r|d&d  }nd }|r|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&< n|d)kr$|t#d f n|d*kr|  d } d}d }!d}d}|dr| }|d u rI| d+|d,kr|d-rn| $d.d/}!|!% sld0|! }| |t|!d n.|d1r| $d2d/}!|!% sd0|! }| |t|!d |j&|!}"|"d u rd3|! }| |t|!d |'|"s| d4t|!d |(|"|  |t)|"f q| }|d u r| d+| d5| t|d |d6krd }n|dkr	 | jd u r| d7|  |  | d2krnqq|d8v rxd}#|d-kr<| }|d u r| d+|d9vr.| d:| t|d d&}#|j*}$|$d u r<|j+|_*t,| |||d }|#dk rR|$d u rRd |_*|d2sa| d;|  |  |d1kro|t-|#|ff n|t.|#|ff q|d*kr@| $d2d/}%|%% r|j&|%}&|&d u rd3|% }| |t|%d nXzt|%}&|&dk rt/W n t/y   d0|% }| |t|%d d w |&s| d<t|%d |&t0krd=|& }| |t|%d |&|j1vr|  t|% d |j1|&< |(|&|  t2| |||d }'| d>r$t2| |||d }(| jd>kr#| d?nd }(| d2s6| d;|  |  |t3|&|'|(ff q|t4v sJ|dkrt5| ||})|)d u r|r[|r}dd l}|jd@| j6d dA t| j6dAkrrdBnd!| f t7|d
 d |j8t9@ r|st:q|)\}}d }n| dC| t|d |d urz|;|!}W n ty }* z| |*j<t|!d d d }*~*ww |s|t9@ o|t9@  }+t,| ||+|d }| d2s| d;|  |  |d ur|=|| |t ||||ff n|dkr
|tt>f n|dDkr|tt?f ntdE|f qt@t|d d d& D ]'},||, \}-}.|-t u rO|.\}}}}|d u rO|sO|sO|||,|,d < q)|S )FNTz|)#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 %dr_   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.(z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*   ry   r%   r   rt   
WHITESPACEr   SPECIAL_CHARSr   r   warningswarnFutureWarningr)   r   rC   RANGEr   NOT_LITERALr]   r   REPEAT_CHARSr`   r   r   r   OverflowErrorAssertionErrorATre   rd   
MIN_REPEAT
MAX_REPEATANYr   isidentifierr   r2   r5   rg   r   r&   r   ASSERT
ASSERT_NOTr   r(   r   r   rG   FLAGS_parse_flagsrr   DeprecationWarningr   SRE_FLAG_VERBOSEr   r-   r   r0   ZAT_BEGINNINGZAT_ENDr|   )/r4   r8   r   r   Zfirstr   Zsubpatternappend	sourcegetr   _lenZ_ordrz   rZ   herer   Z	setappendr   ZnegateZcode1ZthatZcode2r   ri   rj   ra   rb   rw   r   r   	add_flags	del_flagsr/   r   r+   r,   dirr   ZcondnamerL   rM   rN   r   errZsub_verboser   rJ   rK   r   r   r   r     s  




	





; 

























































	






    d
r   c                 C   s  | j }d}d}|dkre	 t| }| jr|dkrd}| |n|dkr*d}| |||O }|t@ r?|t@ |kr?d}| || }|d u rK| d	|d
v rPn|tvrd| rZdnd	}| |t|q|dkrr| j|O  _d S |t@ r|| dd|dkr| }|d u r| d|tvr| rdnd}| |t|	 t| }|t@ rd}| |||O }| }|d u r| d|dkrn|tvr| rdnd}| |t|q|dksJ |t@ r| dd||@ r| dd||fS )Nr   r   Tr   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   rq   r)   
TYPE_FLAGSisalphar%   r   GLOBAL_FLAGS)r4   r8   rw   r   r   r   flagr   r   r   r   r   d  sx   






r   c                 C   sn   t | tr!|t@ rtd|t@ s|tO }|S |t@ rtd|S |t@ r)td|t@ r5|t@ r5t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)rH   rB   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y<   t }|tB |_| |_|d t||dd}Y nw t| |j	j|j	_|j
d urW|j
dksRJ |d|j	jD ]}||j	jkrqd| }t|| |j	j| q[|t@ rz|  |S )Nr   Tr   zunbalanced parenthesisr   )ro   r   r   rB   r   r   r   r   r  r8   rt   r)   r   r&   SRE_FLAG_DEBUGrF   )rB   r   r8   r4   r/   gr   r   r   r   parse  s4   

	

r  c                    s  t | j}g  g g j} fdd}j}	 | }|d u r'n&|d dkrH|d }|dkrd}d	sBd
dd}| r`z|| }	W n> ty_   t	d| w zt
|}	|	dk rktW n ty   d| t|d d w |	tkrd|	 t|d ||	t|d  n|dkrÈjtv r|| 7 }jtv r|| 7 }|tt
|dd  dd@  n|tv rd}
jtv r|| 7 }|tv r|d tv rjtv r|| 7 }d}
t
|dd  d}|dkrd| t||t| |
s|t
|dd  t|d  n-z
tt| d }W n tyB   |tv r@d| t|Y nw || n|| qrXd t| tsedd D  fS )Nc                    sX   | j krd|  |rd d d =  t| f d  d S )Nr   r;   )r&   r)   r'   joinr%   )rU   r   r&   Zliteralliteralsr   r8   r   r   addgroup  s   

z parse_template.<locals>.addgroupTr   r
   r=   r  r;   r   z	missing <r   r   r   r   r   r   r   r   Fr_   r   r   c                 S   s"   g | ]}|d u r
d n| dqS )Nzlatin-1)encode).0r   r   r   r   
<listcomp>'  s   " z"parse_template.<locals>.<listcomp>)ro   r*   r'   
groupindexry   r)   r   r   r   rv   r   r   r%   r(   rt   r   r   r   r   r   r  rH   rB   )r4   r8   ZsgetZlappendr  r  rz   r   r+   rU   Zisoctalr   r  r   parse_template  s   









 





;r  c                 C   sp   |j }|jd d }| \}}|d d  }z|D ]\}}||p |||< qW n ty2   td| w ||S )Nr   r   )r   rr   rv   r)   r  )templatery   r  emptyr&   r  rU   r   r   r   r   expand_template*  s   
r  )F)r   N)=__doc__sre_constantsr   r   	frozensetr   r   r   r   r   r   r   re   r   r   rC   r   r   CATEGORYrf   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   ro   r   r   r   r   r   r   r  r  r  r  r   r   r   r   <module>   st   








$rH<M
:  x<
%U