o
    X|ÄjKŸ  ã                   @   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.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
||ƒr¶d}|D ]&}t
|tƒrŸ|s•tƒ  | |d ¡ d}q‰|s§td	dd� t|dd� d}q‰|sµtƒ  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
råd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	rßd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r…dd l}|jd	|  ¡  t|d
 d� |dƒ}	 |ƒ }|d u r›|  d|  ¡ | ¡‚|dkr£|r£�n|d dkr¯t| |ƒ}n9|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�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 �rŒd||f }|  |t|ƒd t|ƒ ¡‚|t||ffƒ n|d tu �r¢|d d }||ƒ qŠt|ƒ}|	|ƒ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�rød\}}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#ƒ‚|�r—t|ƒ}|tk�rˆt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/¡}!|! %¡ �sŒd0|! }|  |t|!ƒd ¡‚|j& |!¡}"|"d u �r¥d3|! }|  |t|!ƒd ¡‚| '|"¡�sµ|  d4t|!ƒd ¡‚| (|"| ¡ |t)|"fƒ q|ƒ }|d u �rÏ|  d+¡‚|  d5| t|ƒd ¡‚|d6k�räd }�n¸|dk�r	 | jd u �rú|  d7|  ¡ |  ¡‚|ƒ d2k�rn�qêq|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 �r¡d3|% }|  |t|%ƒd ¡‚nXzt|%ƒ}&|&dk �r®t/‚W n t/�yÆ   d0|% }|  |t|%ƒd ¡d ‚w |&�sÔ|  d<t|%ƒd ¡‚|&t0k�rçd=|& }|  |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�r�t5| ||ƒ})|)d u �r‰|�r[|�r}dd l}|jd@| j6d dA… t| j6ƒdAk�rrdBn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 ‚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 | ¡ r–dnd}|  |t|ƒ¡‚	 t| }|t@ r°d}|  |¡‚||O }|ƒ }|d u rÀ|  d¡‚|dkrÅn|tvrÙ| ¡ rÏdnd}|  |t|ƒ¡‚q¡|dksàJ ‚|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r›d}ˆ 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