
-Xv                 @   s  d  Z  d d l Td d l m Z d Z d Z e d  Z e d  Z e d  Z	 e d	  Z
 i e e d
  f d 6e e d  f d 6e e d  f d 6e e d  f d 6e e d  f d 6e e d  f d 6e e d  f d 6e e d  f d 6Z i
 e e f d 6e e f d 6e e f d 6e e e f g f d 6e e e f g f d 6e e e f g f d 6e e e f g f d 6e e e f g f d  6e e e f g f d! 6e e f d" 6Z i e d# 6e d$ 6e d% 6e d& 6e  d' 6e! d( 6e" d) 6e# d* 6Z$ Gd+ d,   d,  Z% Gd- d.   d.  Z& Gd/ d0   d0  Z' d1 d2   Z( d3 d4   Z) d5 d6   Z* d7 d8   Z+ d9 d:   Z, d; d< d=  Z- d> d?   Z. e d@  Z/ e dA  Z0 e dB  Z1 e e2 e3 g  Z4 dC dD   Z5 dE dF   Z6 d dG dH dI  Z7 dJ dK   Z8 dL dM   Z9 dG S)NzInternal support module for sre    )*)	MAXREPEATz.\[{()*+?^$|z*+?{Z
0123456789Z01234567Z0123456789abcdefABCDEFz 	
z\az\bz\f
z\nz\r	z\tz\v\z\\z\Az\Bz\dz\Dz\sz\Sz\wz\Wz\ZiLmsxatuc               @   sC   e  Z d  Z d d   Z d d d  Z d d   Z d d	   Z d S)
Patternc             C   s(   d |  _  g  |  _ d |  _ i  |  _ d  S)Nr      )flagsopengroups	groupdict)self r   9/home/kubikplay/www/django_dtb/lib/python3.4/sre_parse.py__init__C   s    			zPattern.__init__Nc             C   s   |  j  } | d |  _  | d  k	 ru |  j j | d   } | d  k	 re t d t |  | | f   n  | |  j | <n  |  j j |  | S)Nr   z7redefinition of group name %s as group %d; was group %d)r   r   geterrorreprr   append)r   namegidZogidr   r   r   	opengroupH   s    	zPattern.opengroupc             C   s   |  j  j |  d  S)N)r   remove)r   r#   r   r   r   
closegroupS   s    zPattern.closegroupc             C   s   | |  j  k  o | |  j k S)N)r   r   )r   r#   r   r   r   
checkgroupU   s    zPattern.checkgroup)__name__
__module____qualname__r   r$   r&   r'   r   r   r   r   r   A   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   s4   | |  _  | d  k r g  } n  | |  _ d  |  _ d  S)N)patterndatawidth)r   r,   r-   r   r   r   r   Z   s
    			zSubPattern.__init__r   c             C   s  d } t  t f } x|  j D]\ } } t | d | d d | t k r t   x| D]% \ } } t | d d | |  qZ Wq | t k r t   xct | d  D]8 \ } } | r t | d d  n  | j | d  q Wq | t k rQ| \ } }	 }
 t d |  |	 j | d  |
 rt | d d  |
 j | d  qq t	 | |  rd } xv | D]n } t	 | t
  r| st   n  | j | d  d } qm| st d	 d d n  t | d d d } qmW| st   qq t d |  q Wd  S)
NTz  end r   ZorZelseF )tuplelistr-   printINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancer+   )r   levelZnlZseqtypesopavr   r   	condgroupitem_yesitem_nor   r   r   r8   `   sH     
	
zSubPattern.dumpc             C   s   t  |  j  S)N)r    r-   )r   r   r   r   __repr__   s    zSubPattern.__repr__c             C   s   t  |  j  S)N)lenr-   )r   r   r   r   __len__   s    zSubPattern.__len__c             C   s   |  j  | =d  S)N)r-   )r   indexr   r   r   __delitem__   s    zSubPattern.__delitem__c             C   s1   t  | t  r& t |  j |  j |  S|  j | S)N)r:   slicer+   r,   r-   )r   rD   r   r   r   __getitem__   s    zSubPattern.__getitem__c             C   s   | |  j  | <d  S)N)r-   )r   rD   coder   r   r   __setitem__   s    zSubPattern.__setitem__c             C   s   |  j  j | |  d  S)N)r-   insert)r   rD   rH   r   r   r   rJ      s    zSubPattern.insertc             C   s   |  j  j |  d  S)N)r-   r!   )r   rH   r   r   r   r!      s    zSubPattern.appendc             C   s  |  j  r |  j  Sd } } t t t t t t f } t t f } xy|  j	 D]n\ } } | t
 k r t d } d } xB | d D]6 } | j   \ }	 }
 t | |	  } t | |
  } q{ W| | } | | } qH | t k r| j   \ } } | | } | | } qH | t k r:| d j   \ } } | | } | | } qH | | k r| d j   \ } } | | | d } | | | d } qH | | k r| d } | d } qH | t k rH PqH qH Wt | t d  t | t  f |  _  |  j  S)Nr   r      )r.   ANYRANGEr5   LITERALNOT_LITERALCATEGORY
MIN_REPEAT
MAX_REPEATr-   r6   r   getwidthminmaxCALL
SUBPATTERNSUCCESS)r   lohiZ	UNITCODESREPEATCODESr<   r=   r   jlhr   r   r   rS      sD    	





%zSubPattern.getwidth)r(   r)   r*   r   r8   rA   rC   rE   rG   rI   rJ   r!   rS   r   r   r   r   r+   X   s   (r+   c               @   sg   e  Z d  Z d d   Z d d   Z d d d  Z d d	   Z d
 d   Z d d   Z d d   Z	 d S)	Tokenizerc             C   s2   t  | t  |  _ | |  _ d |  _ |  j   d  S)Nr   )r:   stristextstringrD   _Tokenizer__next)r   rb   r   r   r   r      s    		zTokenizer.__init__c             C   s   |  j  t |  j  k r% d  |  _ d  S|  j |  j  |  j  d  } | re |  j re t | d  } n  | d k r y |  j |  j  d } Wn t k
 r t d   Yn X|  j s t |  } n  | | } n  |  j  t |  |  _  | |  _ d  S)Nr   r   r   zbogus escape (end of line))rD   rB   rb   nextra   chr
IndexErrorr   )r   charcr   r   r   Z__next   s     		zTokenizer.__nextr   c             C   s*   | |  j  k r& | r" |  j   n  d Sd S)Nr   r   )rd   rc   )r   rg   skipr   r   r   match   s
    zTokenizer.matchc             C   s   |  j  } |  j   | S)N)rd   rc   )r   thisr   r   r   r      s    	
zTokenizer.getc             C   sN   d } xA t  |  D]3 } |  j } | | k r2 Pn  | | 7} |  j   q W| S)Nr0   )rangerd   rc   )r   ncharsetresult_rh   r   r   r   getwhile   s    	
zTokenizer.getwhilec             C   s   |  j  |  j f S)N)rD   rd   )r   r   r   r   tell   s    zTokenizer.tellc             C   s   | \ |  _  |  _ d  S)N)rD   rd   )r   rD   r   r   r   seek   s    zTokenizer.seekN)
r(   r)   r*   r   rc   rj   r   rq   rr   rs   r   r   r   r   r_      s   	r_   c             C   sd   d d  l  } | j d t d d d |  k o9 d k n pc d |  k oU d k n pc |  d	 k S)
Nr   z*sre_parse.isident() will be removed in 3.5
stacklevelrK   r   zAZrp   )warningswarnDeprecationWarning)rg   rx   r   r   r   isident   s    	r{   c             C   s:   d d  l  } | j d t d d d |  k o7 d k SS)Nr   z*sre_parse.isdigit() will be removed in 3.5rt   rK   09)rx   ry   rz   )rg   rx   r   r   r   isdigit   s    	r~   c             C   ss   d d  l  } | j d t d d t |  d  s6 d Sx6 |  d d   D]$ } t |  rG t |  rG d SqG Wd S)Nr   z)sre_parse.isname() will be removed in 3.5rt   rK   Fr   T)rx   ry   rz   r{   r~   )r"   rx   rg   r   r   r   isname   s    	r   c             C   s7  t  j |  } | r | St j |  } | rB | d t k rB | Sy| d d  } | d k r | |  j d t  7} t |  d k r t  n  t t	 | d d   d  d @f S| d k r|  j
 r| |  j d t  7} t |  d	 k r t  n  t t	 | d d   d  f S| d
 k r|  j
 r| |  j d t  7} t |  d k r\t  n  t	 | d d   d  } t |  t | f S| t k r| |  j d t  7} t t	 | d d   d  d @f S| t k rt  n  t |  d k rt t | d  f SWn t k
 rYn Xt d t |    d  S)Nr   r   rK   r            r      U   
   zbogus escape: %s)ESCAPESr   
CATEGORIESr5   rq   	HEXDIGITSrB   
ValueErrorrN   intra   re   	OCTDIGITSDIGITSordr   r    )sourceescaperH   rh   r   r   r   _class_escape	  sF    	!		

!	r   c             C   s  t  j |  } | r | St j |  } | r2 | Sy| d d  } | d k r | |  j d t  7} t |  d k r t  n  t t | d d   d  d @f S| d k r|  j	 r| |  j d t  7} t |  d k r t  n  t t | d d   d  f S| d	 k ry|  j	 ry| |  j d
 t  7} t |  d k rLt  n  t | d d   d  } t
 |  t | f S| d k r| |  j d t  7} t t | d d   d
  d @f S| t k r|  j t k rJ| |  j   } | d t k rJ| d t k rJ|  j t k rJ| |  j   } t t | d d   d
  d @f Sn  t | d d    } | | j k  r| j |  st d   n  t | f St  n  t |  d k rt t | d  f SWn t k
 rYn Xt d t |    d  S)Nr   rK   r   r   r   r   r   r   r   r   r   r|   zcannot refer to open groupzbogus escape: %s)r   r   r   rq   r   rB   r   rN   r   ra   re   r   r   rd   r   r'   r   GROUPREFr   r    )r   r   staterH   rh   groupr   r   r   _escape3  s\    	!		

! $
	r   r   c             C   s  g  } | j  } |  j } x\ | t |  |   | d  r@ q n  | sJ Pn  |  j sc | d d  rg Pq t d   q Wt |  d k r | d St |  } | j  } xx d  } xj | D]= }	 |	 s Pn  | d  k r |	 d } q |	 d | k r Pq q Wx | D] }	 |	 d =q W| |  q Pq Wxz | D]0 }	 t |	  d k sT|	 d d t k r(Pq(q(Wg  }
 |
 j  } x | D] }	 | |	 d  qrW| t |
 f  | S| j  t	 d  | f f  | S)N|)r   zpattern not properly closedr   )
r!   rj   _parserd   r   rB   r+   rN   r5   r6   )r   r   ZnesteditemsZitemsappendsourcematch
subpatternsubpatternappendprefixitemset	setappendr   r   r   
_parse_subk  sR    			
&	r   c             C   s   t  |  |  } |  j d  rN t  |  |  } |  j d  rT t d   qT n d  } |  j r |  j d d  r t d   n  t |  } | j t | | | f f  | S)Nr   z/conditional backref with more than two branchesr   r   zpattern not properly closed)r   rj   r   rd   r+   r!   r9   )r   r   r>   r?   r@   r   r   r   r   _parse_sub_cond  s    r   z|)z=!<z=!c       !      C   s?  t  |  } | j } |  j } |  j } t } t } t } t }	 t }
 x|  j	 | k r[ Pn  |   } | d  k rt Pn  | j
 t @r | t k r qH n  | d k r x |   } | d. k r Pq q WqH q n  | r | d t k r | t t |  f  qH | d k rg  } | j } | d  r1| t d  f  n  | d  d   } x|   } | d k ri| | k riPnO | r| d d k rt |  |  } n' | rt t |  f } n t d   | d	  r|   } | d k r| d t k r| d
 d } n  | |  | t t d	  f  Pq	| r| d d k rFt |  |  } n t t |  f } | d t k sx| d t k rt d   n  | d
 } | d
 } | | k  rt d   n  | t | | f f  q	t d   qD| d t k r| d
 d } n  | |  qDW| |  d
 k rD| d d t k rD| | d  q7| |  d k r| d d t k r| d
 d t k r| t | d
 d
 f  q7| t | f  qH | rN| d t k rN| d k rd/ \ } } n| d k rd t } } n| d k rd
 t } } nw| d k r|  j	 d k rL| t t |  f  qH n  |  j   } d t } } d } } x# |  j	 t k r| |  j   } qrW| d  rx) |  j	 t k r| |   } qWn | } | d  s| t t |  f  |  j |  qH n  | r2t |  } | t k r2t d   q2n  | rt |  } | t k r_t d   n  | | k  r}t d   q}qn t d   | r| d0 d   } n d  } | s| |  d
 k r| d d t k rt d   n  | d d |
 k r
t d   n  | d  r2t | | | f f | d1 <q7t | | | f f | d2 <qH | d k rm| t  d  f  qH | d k rd
 } d  } d  } | d  r
d } | d  rQ| d  r=d } xB |   } | d  k rt d   n  | d k rPn  | | } qWd
 } | st d   n  | j!   sNt d  |   qNq
| d!  rd } xB |   } | d  k rvt d   n  | d" k rPn  | | } qRW| st d   n  | j!   st d# |   n  | j" j |  } | d  k rd$ j# |  } t |   n  | t$ | f  qH q
|   } | d  k r>t d%   n  t d& |   q
| d'  rfd } q
| d  rx- |  j	 d  k s|  j	 d" k rPn  |   quW| d"  sH t d(   qH qH q
|  j	 | k r	|   } d
 } | d k r	|  j	 |	 k r	t d)   n  d3 } |   } n  t% |  |  } | d"  sG	t d(   n  | d! k rl	| t& | | f f  qH | t' | | f f  qH q
| d  ry
d } xB |   } | d  k r	t d   n  | d" k r	Pn  | | } q	Wd } | s	t d   n  | j!   rE
| j" j |  } | d  k rv
d$ j# |  } t |   qv
q
y t |  } Wq
t( k
 ru
t d*   Yq
Xq
|  j	 t) k r
t d%   n  x- |  j	 t) k r
| j
 t) |   B| _
 q
Wn  | rk| d k r
d  } n | j* |  } | rt+ |  | |  } n t% |  |  } | d"  s6t d(   n  | d  k	 rR| j, |  n  | t- | | f f  q7x |   } | d  k rt d%   n  | d" k rPn  t d+   qnWqH | d k r| t t. f  qH | d, k r| j t t/ f  qH | r+| d d k r+t0 |  | |  }  | |   qH t d-   qH W| S)4N#r   r   [^]r   z$unexpected end of regular expression-r   zbad character rangerK   ?r   +{}r0   ,z"the repetition number is too largezbad repeat intervalznot supportedznothing to repeatzmultiple repeat.(P<zunterminated name>zmissing group namezbad character in group name %r=r   z&bad character in backref group name %rzunknown group name: {0!r}zunexpected end of patternzunknown specifier: ?P%s:zunbalanced parenthesiszsyntax errorzbad character in group namezunknown extension$zparser error)Nr   )r   r   r   r   r   )1r+   r!   r   rj   rB   _PATTERNENDERS_ASSERTCHARS_LOOKBEHINDASSERTCHARS_REPEATCODESrd   r   SRE_FLAG_VERBOSE
WHITESPACESPECIAL_CHARSrN   r   NEGATEr   r   r5   rM   rO   REPEAT_CHARSr   rr   r   rs   r   OverflowErrorATrQ   rR   rL   isidentifierr   formatr   r   ASSERT
ASSERT_NOTr   FLAGSr$   r   r&   rW   ZAT_BEGINNINGZAT_ENDr   )!r   r   r   r   Z	sourcegetr   _lenZPATTERNENDERSZASSERTCHARSZLOOKBEHINDASSERTCHARSr[   rk   r   r   startZcode1Zcode2rY   rZ   rT   rU   herer   r   r"   r>   rg   r#   msgdirpZcondnamerH   r   r   r   r     s   									
 

&:
-								r   c             C   s_   t  |  t  rB | t @s& | t O} q[ | t @r[ t d   q[ n | t @r[ t d   n  | S)Nz(ASCII and UNICODE flags are incompatiblez+can't use UNICODE flag with a bytes pattern)r:   r`   SRE_FLAG_ASCIISRE_FLAG_UNICODEr   )Zsrcr   r   r   r   	fix_flags  s    


r   Nc             C   s   t  |   } | d  k r$ t   } n  | | _ |  | _ t | | d  } t |  | j j  | j _ | j   } | d k r t d   n | r t d   n  | t	 @r | j
   n  | t @r | j j t @r t |  | j j  S| S)Nr   r   zunbalanced parenthesisz-bogus characters at end of regular expression)r_   r   r   r`   r   r   r,   r   r   SRE_FLAG_DEBUGr8   r   parse)r`   r   r,   r   r   tailr   r   r   r     s"    		
r   c                sn  t  |   } | j } g    g   g    j }     f d d   } x|   } | d  k rd Pn  | d d k r| d } | d k rd } | j d  r xE |   }	 |	 d  k r t d	   n  |	 d
 k r Pn  | |	 7} q Wn  | s t d   n  y+ t |  }
 |
 d k  r&t d   n  Wnn t k
 r| j   sRt d   n  y | j | }
 Wn- t	 k
 rd j
 |  } t |   Yn XYn X| |
  q| d k r| j t k r| |   7} | j t k r| |   7} qn  | t t | d d   d  d @  q| t k rd } | j t k r| |   7} | t k r| d t k r| j t k r| |   7} d } | t t | d d   d  d @  qn  | s| t | d d     qqy t t | d  } Wn t	 k
 rYn X| |  qK | |  qK W r? j d j    n  t |  t  sdd d    D  n     f S)Nc                sV    r,  j  d j     d  d   =n    j  t   |  f   j  d   d  S)Nr0   )r!   joinrB   )rD   )r   literalliteralsr   r   addgroup  s
    z parse_template.<locals>.addgroupr   r   r   gr0   r   zunterminated group namer   zmissing group nameznegative group numberzbad character in group namezunknown group name: {0!r}r|   r   r   FrK   Tc             S   s1   g  |  ]' } | d  k r d  n | j  d   q S)Nzlatin-1)encode).0r   r   r   r   
<listcomp>X  s   	 z"parse_template.<locals>.<listcomp>)r_   r   r!   rj   r   r   r   r   
groupindexKeyErrorr   rf   rd   r   re   r   r   r   r:   r`   )r   r,   r   ZsgetZlappendr   rk   rh   r"   rg   rD   r   Zisoctalr   )r   r   r   r   parse_template  s    			
	*- r   c       	      C   s   | j  } | j d  d  } |  \ } } | d  d   } yJ xC | D]; \ } } | |  | | <} | d  k rB t d   qB qB WWn t k
 r t d   Yn X| j |  S)Nr   zunmatched groupzinvalid group reference)r   rb   r   rf   r   )	templaterj   r   sepr   r   rD   r   r   r   r   r   expand_template[  s    	r   ):__doc__sre_constants_srer   r   r   r   r   r   r   r   rN   r   r   r   ZAT_BEGINNING_STRINGZAT_BOUNDARYZAT_NON_BOUNDARYr5   rP   ZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZCATEGORY_WORDZCATEGORY_NOT_WORDZAT_END_STRINGr   SRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_MULTILINESRE_FLAG_DOTALLr   r   SRE_FLAG_TEMPLATEr   r   r   r+   r_   r{   r~   r   r   r   r   r   r   r   r   rQ   rR   r   r   r   r   r   r   r   r   r   r   <module>   sr   

e4*8; *P