a
    ӗaGh                     @   s$  d Z ddlZddlZddlT ejeks.J deehZee	e
hZeehZeehZeeehB ZdZdd eD Zejfdd	Zd
d Zdd Zd-ddZejd Zde> d ZdZee f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%d& Z*d'd( Z+d)d* Z,d.d+d,Z-dS )/zInternal support module for sre    N)*zSRE module mismatch))i   i1  )s   i  )   i  )iE  i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )ia  i  )i  i  c                    s.   i | ]&}|D ]  t  fd d|D qqS )c                 3   s   | ]} |kr|V  qd S N ).0jir   ./home/manager/Python-3.9.10/Lib/sre_compile.py	<genexpr>>       z<dictcomp>.<genexpr>)tuple)r   tr   r
   r   
<dictcomp>>   s   
r   c                 C   s    ||@ r| | M } | |B | @ S r   r   )flags	add_flags	del_flags
TYPE_FLAGSr   r   r   _combine_flagsA   s    
r   c                 C   s  | j }t}t}t}t}t}d }	d }
d }|t@ r\|t@ s\|t@ rPt	j
}	t	j}
t}nt	j}	t	j}
|D ]|\}}||v rr|t@ s|| || n|t@ r|t|  || n|	|s|| || n|
|}|s|t|  || n||vr|t|  || nh|t || }|d |tu r2|t |f||  D ]}|t || q@|t || | | |< q`|tu rt||	|
|\}}|t@ r|t@ r|t n(|s|t n|s|t n|t || }|d t|||  || | | |< q`|tu r*|t@ r |t n|t q`||v r6|t@ rLt d|f t!|d r|t"u rn|t# n|t$ || }|d ||d  ||d  t%| |d | |t& || | | |< nl|t' || }|d ||d  ||d  t%| |d | || | | |< |t"u r,|t( n|t) q`|t*u r|\}}}}|rj|t+ ||d d  t%| |t,||| |r|t+ ||d d d  q`||v r|| q`||v rD|| || }|d |d dkr|d n*|d - \}}||krt d|| t%| |d | |t& || | | |< q`|t.u r|| || }|d t%| || |t& || | | |< q`|t/u r|| |t0@ rt12||}|t@ rt32||}n|t@ rt42||}|| q`|t5u r|| g }|j }|d D ]N}|| }|d t%| || |t6 |||  |d || | | |< q|t |D ]}|| | | |< qlq`|t7u r|| |t@ rt8| }n|t@ rt9| }|| q`|t:u r |t@ s|| n,|t@ r|t; n|s
|t< n|t= ||d  q`|t>u r|| ||d d  || }|d t%| |d | |d r|t6 || }|d || | d | |< t%| |d | || | | |< n|| | d | |< q`t d|f q`d S )Nr   z*internal: unsupported template operator %r      z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)?appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES_ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODE_sreunicode_iscasedZunicode_tolower_ignorecase_fixesascii_iscasedZascii_tolowerZOP_LOCALE_IGNOREZ	OP_IGNOREZOP_UNICODE_IGNOREIN_UNI_IGNORENOT_LITERALNEGATELITERALFAILUREIN_optimize_charsetIN_LOC_IGNORE	IN_IGNORE_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simple
MAX_REPEAT
REPEAT_ONEMIN_REPEAT_ONE_compileSUCCESSREPEAT	MAX_UNTIL	MIN_UNTIL
SUBPATTERNMARKr   getwidthZCALLATSRE_FLAG_MULTILINEZAT_MULTILINEgetZ	AT_LOCALEZ
AT_UNICODEBRANCHJUMPCATEGORY	CH_LOCALE
CH_UNICODEGROUPREFGROUPREF_LOC_IGNOREGROUPREF_IGNOREGROUPREF_UNI_IGNOREGROUPREF_EXISTS)codepatternr   emit_lenZLITERAL_CODESZREPEATING_CODESZSUCCESS_CODESZASSERT_CODESiscasedZtolowerfixesopavloskipkcharsethascasedgroupr   r   phitailZ
tailappendZskipyesZskipnor   r   r   r9   G   sB   
















































r9   c                 C   s   |j }| D ]\}}|| |tu r$q
|tu r6|| q
|tu sF|tu r`||d  ||d  q
|tu rt|| q
|tu r|| q
|tu r|t	@ r|t
|  q|t@ r|t|  q|| q
td|f q
|t d S )Nr   r   z%internal: unsupported set operator %r)r   r(   r)   RANGERANGE_UNI_IGNORECHARSETextend
BIGCHARSETrF   r    rG   r!   rH   r4   r*   )rY   r   rN   rP   rT   rU   r   r   r   r/      s,    

r/   c              	   C   s  g }g }t d}d}| D ]\}}	z,|tu r|rv||	}
d||
< |rd|
|v rd||
 D ]}d||< qV|s~||	r~d}nd||	< n|tu r&t|	d |	d d }|r|rt||D ]*}d||< ||v r|| D ]}d||< qqnt||D ]}d||< q|s$tt||}n|D ]}d||< qn(|tu r@|||	f n|||	f W nX ty   t	|dkr~|dd 7 }Y q"|rd}|tu rt
}|||	f Y n0 qq"qg }d}|d|}|dk rҐq&t	|dkrd }q&|d|}|dk r||t	|f q&|||f q|d ur|D ]>\}}|| dkrZ|t|f n|t||d ff q4||7 }|st	|t	| k r||fS | |fS t	|dkrt|}|t|f ||7 }||fS t|}i }t d}d}t  }tdd	dD ]V}|||d  }||v r2|| ||d < n$| ||d < ||< |d7 }||7 }qt|}|gt| |dd< |t|f ||7 }||fS )
N   Fr   Tr       i   r   i   )	bytearrayr)   r_   rangemapanyr(   r   
IndexErrorr   r`   find
_mk_bitmapra   bytes_bytes_to_codesrc   )rY   rR   ZfixuprS   Zoutr^   ZcharmaprZ   rT   rU   rV   rX   rr   Zrunsqr\   dataZcompsmappingZblockZchunkr   r   r   r,     s    









r,      r   s   0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111c                    s8   |  td d d  fddttd  D S )Nc                    s"   g | ]}|  | d qS )r   r   )r   r   	_CODEBITS_intsr   r   
<listcomp>  s   z_mk_bitmap.<locals>.<listcomp>r   )	translate_BITS_TRANSrg   r   )bitsrv   rw   r   ru   r   rl     s    rl   c                 C   s@   t | d}|jtjksJ t||j t| ks8J | S )NI)
memoryviewcastitemsizer"   CODESIZEr   tolist)bar   r   r   rn     s    rn   c                 C   sD   t | dkrdS | d \}}|tu r<|d d u o:t|d S |tv S )Nr   Fr   rt   )r   r>   r5   _UNIT_CODES)r\   rT   rU   r   r   r   r5     s    r5   c                 C   sn   dgt |  }tdt | D ]L}||d  }| | | | kr\|dkrNd||< q||d  }q,|d ||< q|S )aj  
    Generate an overlap table for the following prefix.
    An overlap table is a table of the same size as the prefix which
    informs about the potential self-overlap for each index in the prefix:
    - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
    - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with
      prefix[0:k]
    r   r   )r   rg   )prefixZtabler   Zidxr   r   r   _generate_overlap_table  s    	r   c                 C   s$   | t @ sd S | t@ rtjS tjS d S r   )r   r!   r"   r#   r%   )r   r   r   r   _get_iscased  s
    r   c                 C   s   g }|j }d }t|}| jD ]\}}|tu rF|r<||r< q|| q|tu r|\}}	}
}t||	|
}|t@ rz|t@ rz qt||\}}}|d u r|d urt	|}n|d urt	|| }|
| |s qq qq||dfS ||dfS )NTF)r   r   rq   r)   r>   r   r   r    _get_literal_prefixr   rb   )rO   r   r   Zprefixappendprefix_skiprR   rT   rU   r[   r   r   r\   Zflags1Zprefix1Zprefix_skip1got_allr   r   r   r     s4    



r   c                 C   sd  | j s
d S | j d \}}|tur"qP|\}}}} t|||}|t@ r |t@ r d S q t|}|tu rz|rp||rpd S ||fgS |tu rg }|j}	|d D ]B}
|
s d S |
d \}}|tu r|r||s|	||f q d S q|S |t	u r`|}|r\|D ]f\}}|tu r||rZ d S q|t
u r|d dkr4 d S tt|t|d |d d r d S q|S d S )Nr   r   i  )rq   r>   r   r   r    r   r)   rD   r   r+   r_   ri   rh   rg   )rO   r   rT   rU   r[   r   r   rR   rY   Zcharsetappendr\   r   r   r   _get_charset_prefix  sN    



 r   c                 C   s|  |  \}}|tkrt}|dkr8| tdd||g d S g }d}g }|t@ rT|t@ srt||\}}}|srt||}| j}	|	t t	| }
|	d d}|rt
}|d u r|r|tB }n|r|tB }|	| |tk r|	| n|	t |d t }|	t|t |r@|	t	| |d u rt	|}|	| | | | t| n(|rht|\}}|r\J t|||  t	| |
 | |
< d S )Nr      )r@   MAXCODErb   INFOr   r    r   r   r   r   SRE_INFO_PREFIXZSRE_INFO_LITERALSRE_INFO_CHARSETminr   r,   r/   )rN   rO   r   rV   r]   r   r   rY   r   rP   rW   ZmaskrZ   r   r   r   _compile_info  sR    





r   c                 C   s   t | ttfS r   )
isinstancestrrm   )objr   r   r   isstringS  s    r   c                 C   s8   | j j|B }g }t|| | t|| j| |t |S r   )stater   r   r9   rq   r   r:   )r\   r   rN   r   r   r   _codeV  s    
r   c                 C   s   dd dd | D  S )N[%s], c                 s   s$   | ]}d t jd d |f V  qdS )z%#0*xr   N)r"   r   r   xr   r   r   r   f  r   z_hex_code.<locals>.<genexpr>)joinrN   r   r   r   	_hex_codee  s    r   c                    sN   dd l t dttt d  fdddt  d S )Nr   r   c              	      s  d d fdd
}fdd}d7  }||k r| | }|d7 }t | }|tttttttfv rx|| q2|tt	t
tttttfv r| }|d7 }||d|t|f  q2|tu r| }|d7 }tt| }|d d d	ksJ |||dd   q2|tu rV| }|d7 }tt| }|d d
 dksBJ |||d
d   q2|ttttfv r| }||||| d |d ||  ||7 }q2|ttfv r||d  \}}	|d7 }||d||	t|t|	f  q2|tu r||t||dt    |dt 7 }q2|tu rʈ| }|d7 }t d!fdd||dt"j#   D }
||||
 |dt"j# 7 }d7 t$|D ].}|t||dt    |dt 7 }qd8 q2|t%t&t't(t)fv r| }|d7 }||| q2|t*u r(| }||||| d |d7 }q2|t+u r| }||||| d |r|d ||  ||7 }| | }|r|d||| d n|t qL|d7 }q2|t,t-t.fv r||d  \}}}|t/krd}||||||| d |d ||  ||7 }q2|t0u rJ||d  \}}|||||| d |d7 }q2|t1t2fv r||d  \}}|||||| d |d ||  ||7 }q2|t3u rĈ||d  \}}}}|t/krd}|||t4||||| d |d  |t5@ r|d |d  \}}|d| |d    |  }|ddd!dd |D  dd!t6t|   |7  |d  |    |7  |t7@ rd7 |d  ||  d8 ||7 }q2t8|q2d8 d S )N)toc                    sX   | d ur"  |  |d| f f7 }td v r6dndf dd  d t|  d S )Nz(to %d)z%*d%s :.z  r   end)addprint)r   args)labelsleveloffset_widthstartr   r   print_p  s    

z!dis.<locals>.dis_.<locals>.print_c                     s"   t dd    d t |   d S )N r   r   )r   )r   )r   r   r   r   print_2x  s    z"dis.<locals>.dis_.<locals>.print_2r   z
%#02x (%r)   ZAT_	   Z	CATEGORY_r   z%#02x %#02x (%r-%r)rd   r   c                 3   s   | ]}| tj jV  qd S r   )to_bytesr"   r   	byteorderr   )sysr   r   r     s   z$dis.<locals>.dis_.<locals>.<genexpr>Zbranch	MAXREPEATr      z  prefix_skipz  prefixr   r   c                 s   s   | ]}d | V  qdS )z%#02xNr   r   r   r   r   r     r   z(%r) z	  overlapin)9ZOPCODESr:   r*   r0   r2   r<   r=   r(   r)   r'   ZLITERAL_IGNOREZNOT_LITERAL_IGNOREZLITERAL_UNI_IGNOREZNOT_LITERAL_UNI_IGNOREZLITERAL_LOC_IGNOREZNOT_LITERAL_LOC_IGNOREchrrA   r   ZATCODESrF   ZCHCODESr+   r.   r&   r-   r_   r`   ra   r   rv   rc   listr   r"   r   rg   r?   rI   rK   rL   rJ   rE   rD   r;   r7   r8   r   rM   ASSERT
ASSERT_NOTr   binr   rh   r   
ValueError)r   r   r   r   r   rT   argrW   rV   r]   rr   r	   r   maxr   Z
prefix_lenr   r   rN   dis_r   r   r   r   )r   r   r   o  s    





 




















zdis.<locals>.dis_)r   setr   r   r   r   r   r   dish  s     r   c              	   C   s   t | r| }t| |} nd }t| |}|t@ r>t  t| | jj}d g| jj	 }|
 D ]\}}|||< q\t||| jjB || jj	d |t|S )Nr   )r   	sre_parseparser   SRE_FLAG_DEBUGr   r   r   Z	groupdictZgroupsitemsr"   compiler   r   )r\   r   rO   rN   Z
groupindexZ
indexgrouprX   r   r   r   r   r     s"    


r   )NNN)r   ).__doc__r"   r   sre_constantsZMAGICr)   r'   r   r;   Z
MIN_REPEATr6   r   r:   r*   r   r   r   r   r0   r+   r   Z_equivalencesr$   r   r   r9   r/   r,   r   rv   r   r{   intrl   rn   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sJ   
$
 3
 
	,; 