a
    jCiKŸ  ã                   @   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   ú%/usr/local/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ÚgidZ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   r0   r(   )r!   r+   Úsourcer   r   r   Úchecklookbehindgroupf   s
    



zState.checklookbehindgroup)N)
r   r   r   r"   Úpropertyr%   r,   r/   r0   r3   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!   r6   r7   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 r´tƒ  t|d ƒD ]*\}}|r¢t|d d ƒ | |d ¡ q†q|t	u �r|\}}	}
td|ƒ |	 |d ¡ |
�rˆt|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|�sˆtƒ  qtd|ƒ qd S )
NTz  Ú )Úendé   ZORZELSEFú )ÚtupleÚlistr7   ÚprintÚstrÚINÚBRANCHÚ	enumerateÚdumpÚGROUPREF_EXISTSÚ
isinstancer5   )r!   ÚlevelZnlZseqtypesÚopÚavr   r   Ú	condgroupÚitem_yesÚitem_nor   r   r   rD   w   sH    


zSubPattern.dumpc                 C   s
   t | jƒS r#   )Úreprr7   r    r   r   r   Ú__repr__Ÿ   s    zSubPattern.__repr__c                 C   s
   t | jƒS r#   )r$   r7   r    r   r   r   Ú__len__¡   s    zSubPattern.__len__c                 C   s   | j |= d S r#   ©r7   ©r!   Úindexr   r   r   Ú__delitem__£   s    zSubPattern.__delitem__c                 C   s&   t |tƒrt| j| j| ƒS | j| S r#   )rF   Úslicer5   r6   r7   rQ   r   r   r   Ú__getitem__¥   s    
zSubPattern.__getitem__c                 C   s   || j |< d S r#   rP   ©r!   rR   Úcoder   r   r   Ú__setitem__©   s    zSubPattern.__setitem__c                 C   s   | j  ||¡ d S r#   )r7   ÚinsertrV   r   r   r   rY   «   s    zSubPattern.insertc                 C   s   | j  |¡ d S r#   )r7   r&   )r!   rW   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 �qÄqt|td ƒt|tƒf| _ | j S )Nr   r;   éÿÿÿÿé   )r8   r7   rB   Ú	MAXREPEATr-   ÚminÚmaxÚCALLÚ
SUBPATTERNÚ_REPEATCODESÚ
_UNITCODESÚGROUPREFr6   r   rE   ÚSUCCESS)	r!   ÚloÚhirH   rI   r   ÚjÚlÚhr   r   r   r-   ¯   sZ    












zSubPattern.getwidth)N)r   )r   r   r   r"   rD   rN   rO   rS   rU   rX   rY   r&   r-   r   r   r   r   r5   n   s   

(r5   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   )rF   r@   ÚistextÚstringÚdecoded_stringrR   ÚnextÚ_Tokenizer__next)r!   rm   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))rR   rn   Ú
IndexErrorro   r(   rm   r$   )r!   rR   Úcharr   r   r   Z__nextê   s$    ÿÿ
zTokenizer.__nextc                 C   s   || j kr|  ¡  dS dS )NTF©ro   rp   )r!   rr   r   r   r   Úmatchú   s    
zTokenizer.matchc                 C   s   | j }|  ¡  |S r#   rs   )r!   Úthisr   r   r   r)   ÿ   s    zTokenizer.getc                 C   s8   d}t |ƒD ]&}| j}||vr" q4||7 }|  ¡  q|S ©Nr9   )Úrangero   rp   )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 )Nr9   zmissing zmissing %s, unterminated namer;   )ro   rp   r(   r$   )r!   Z
terminatorr*   rz   r|   r   r   r   Úgetuntil  s    
ÿ
zTokenizer.getuntilc                 C   s   | j t| jpdƒ S rv   ©rR   r$   ro   r    r   r   r   Úpos  s    zTokenizer.posc                 C   s   | j t| jpdƒ S rv   r   r    r   r   r   Útell  s    zTokenizer.tellc                 C   s   || _ |  ¡  d S r#   )rR   rp   rQ   r   r   r   Úseek!  s    zTokenizer.seekr   c                 C   s   t || j|  ¡ | ƒS r#   )r(   rm   r�   )r!   ÚmsgÚoffsetr   r   r   r(   %  s    zTokenizer.errorN)r   )r   r   r   r"   rp   rt   r)   r}   r~   r4   r€   r�   r‚   r(   r   r   r   r   rj   à   s   		
rj   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
�rÜd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;   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)   Ú
CATEGORIESrA   r}   Ú	HEXDIGITSr$   r(   ÚLITERALÚintrl   ÚchrÚunicodedatart   r~   ÚordÚlookupÚKeyErrorÚ	TypeErrorÚ	OCTDIGITSÚDIGITSÚ
ValueErrorÚASCIILETTERS)r2   ÚescaperW   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	�rÐd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;   r[   r   r…   r†   r‡   r   rˆ   r‰   rŠ   r‹   rŒ   r   r�   rŽ   r�   r�   r‘   r’   Ú0r“   r”   r1   úinvalid group reference %dr•   )r—   r)   r–   r}   r˜   r$   r(   r™   rš   rl   r›   rœ   rt   r~   r�   rž   rŸ   r    r¡   r¢   ro   r%   r0   r3   rc   r¤   r£   )r2   r¥   r6   rW   r|   rœ   r¦   Úgroupr   r   r   Ú_escaped  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 q¸qh|D ]
}
|
d= qœ|  |	¡ q`q¸q`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&   rt   r�   Ú_parser$   r5   r™   rA   ÚNEGATEÚextendr¯   rB   )r2   r6   ÚverboseÚnestedr®   ZitemsappendÚsourcematchÚstartÚ
subpatternÚprefixÚitemÚsetrH   rI   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ršt| ||ƒ}||ƒ 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�rÒdd l}|jd|dk�r˜dn|dk�r¦dn|dk�r´d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�r˜dd l}|jd|  ¡ d  t|d	 d
� t
|
|ƒf}|d t
k�sÀ|d t
k�rèd||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 }�qŽn|}|dƒ�sÔ|t
|
|ƒfƒ |  |¡ q"|�rôt|ƒ}|tk�rôt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/¡}!|! %¡ �s´d0|! }|  |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�rÊd }�nx|dk�r| jd u �rô|  d7|  ¡ |  ¡‚|ƒ d2k�rÔq"�qÔq"�n6|d8v �rød}#|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 �r¨d |_*|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 ¡‚n´zt|%ƒ}&|&dk �	rdt/‚W n2 t/�	y˜   d0|% }|  |t|%ƒd ¡d ‚Y n0 |&�	s´|  d<t|%ƒd ¡‚|&t0k�	rÚd=|& }|  |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�
ròdBnd | f t7|d	 d
� |j8t9@ r"|s"t:‚q"|)\}}d }n|  dC| t|ƒd ¡‚|d u�ršz| ;|!¡}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 %dr[   zbad character range %s-%sú?)r   r;   r   ú+r�   r�   r9   ú,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rrZ   znothing to repeatzmultiple repeatÚ.ú(Tzunexpected end of patternÚPú<ú>ú
group nameúbad character in group name %rú=ú)úunknown group name %rr1   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)Ar5   r&   r)   rt   r$   r�   ro   Ú
WHITESPACEr«   ÚSPECIAL_CHARSr™   r�   ÚwarningsÚwarnÚFutureWarningr(   r§   rA   ÚRANGEr¯   ÚNOT_LITERALrY   r²   ÚREPEAT_CHARSr\   r¢   r‚   rš   ÚOverflowErrorÚAssertionErrorÚATra   r`   Ú
MIN_REPEATÚ
MAX_REPEATÚANYr~   Úisidentifierr   r0   r3   rc   r   r%   r¼   ÚASSERTÚ
ASSERT_NOTr£   r'   r   r±   rE   ÚFLAGSÚ_parse_flagsrm   ÚDeprecationWarningr   ÚSRE_FLAG_VERBOSEr   r,   rƒ   r/   ZAT_BEGINNINGZAT_ENDrw   )/r2   r6   r´   rµ   Zfirstr¸   ZsubpatternappendÚ	sourcegetr¶   Ú_lenZ_ordru   rW   Úherer»   Z	setappendrÚ   ZnegateZcode1ZthatZcode2rƒ   re   rf   r]   r^   rr   rº   rª   Ú	add_flagsÚ	del_flagsr.   r·   r*   r+   Údirr   ZcondnamerJ   rK   rL   r   ÚerrZsub_verboser   rH   rI   r   r   r   r±   î  s~   


þ

ÿ
ûù	


ÿ


ÿý
 












ÿÿÿ












ÿ



ÿ


ÿ






ÿ




ÿ





ÿ
ÿ
ÿ
ýÿù	

ÿ
.ÿ
ÿ



r±   c                 C   s  | j }d}d}|dkrÈt| }| jr<|dkrRd}|  |¡‚n|dkrRd}|  |¡‚||O }|t@ r||t@ |kr|d}|  |¡‚|ƒ }|d u r”|  d¡‚|d	v ržqÈ|tvr| ¡ r²d
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| ¡ �r®d
nd}|  |t|ƒ¡‚�qF|dk�sÔJ ‚|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é   rl   r(   Ú
TYPE_FLAGSÚisalphar$   r   ÚGLOBAL_FLAGS)r2   r6   rr   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)rF   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s¤J ‚| d¡‚|j	jD ],}||j	jkr¶d| }t|| |j	j| ƒ‚q¶|t@ rô| ¡  |S )Nr   TrÓ   zunbalanced parenthesisr©   )rj   r   r   r@   r¼   rì   r   r‚   rû   r6   ro   r(   r   r%   ÚSRE_FLAG_DEBUGrD   )r@   r   r6   r2   r.   Ú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¡}| ¡ rÆz|| }	W n tyÂ   t	d| ƒ‚Y n0 njzt
|ƒ}	|	dk rÜt‚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ƒ�sâdd„ ˆD ƒ‰ˆ ˆfS )Nc                    sX   | ˆj krˆ d|  |¡‚ˆr8ˆ d ˆ¡¡ ˆd d …= ˆ  tˆƒ| f¡ ˆ d ¡ d S )Nr©   r9   )r%   r(   r&   Újoinr$   )rR   r€   ©r%   ZliteralÚliteralsr   r6   r   r   ÚaddgroupÞ  s    

z parse_template.<locals>.addgroupr   r
   r;   rý   r9   rÎ   z	missing <rÏ   rÐ   rÔ   rÑ   r©   r¨   rŠ   r“   Fr[   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>)rj   r)   r&   Ú
groupindexrt   r(   r~   ræ   rŸ   rq   rš   r£   r$   r'   ro   r¡   r›   r¢   r–   r¤   rÿ   rF   r@   )r2   r6   ZsgetZlappendr  r  ru   r|   r*   rR   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ª   rm   rq   r(   rÿ   )Útemplatert   rý   Úemptyr%   r  rR   rª   r   r   r   Úexpand_template*  s    r  )F)r   N)=Ú__doc__Úsre_constantsrÙ   rß   Ú	frozensetr¢   r¡   r˜   r¤   rØ   rã   rä   ra   rå   rÝ   rA   r™   rÞ   ÚCATEGORYrb   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   r5   rj   r§   r«   r¯   r¼   r±   rê   rû   rþ   r  r  r   r   r   r   Ú<module>   sr   







øöö$rH<M:
  x<
%U