
-XM                 @   s  d  Z  d d l Z d d l Z d d l Td d l m Z e j e k sS t d   e j d k rk d Z n d Z e	 e
 e g  Z e	 e e e g  Z e	 e e g  Z e	 e e g  Z dX Z d* d+   e D Z d, d-   Z d d d. d/  Z d0 d1   Z d2 d3   Z e j d4 Z d5 d6 d7 Z e e d8 d9  Z  d: d;   Z! d< d=   Z" d> d?   Z# d@ dA   Z$ dB dC   Z% dD dE   Z& d dF dG  Z' d S)YzInternal support module for sre    N)*)	MAXREPEATzSRE module mismatch   i  l    i   1  s          E                                              a        c                s?   i  |  ]5 } | D](   t    f d  d   | D     q q S)c             3   s!   |  ] }   | k r | Vq d  S)N ).0j)ir&   ;/home/kubikplay/www/django_dtb/lib/python3.4/sre_compile.py	<genexpr>C   s    z<dictcomp>.<genexpr>)tuple)r'   tr&   )r)   r*   
<dictcomp>C   s   	r.   c             C   sj  |  j  } t } t } t } t } t } | t @rO | t @rO | t @rO t	 }	 n d  }	 x| D]\ }
 } |
 | k rv| t @r[t
 j | |  } |	 r<| |	 k r<| t t  | |   } | d  |
 t k r | t t  n  x1 | f |	 | D] } | t t  | |  q W| t t  | |   | |  | <qs| t t |
  | |  qb| t |
  | |  q\ |
 t k r| t @r| t t |
  | d d  } n | t |
  d  } | |   } | d  t | | |  | |	  | |   | |  | <q\ |
 t k r?| t @r.| t t  qb| t t  q\ |
 | k r| t @rdt d   qbt |  r|
 t k	 r|
 t k r| t t  n | t t  | |   } | d  | | d  | | d  t |  | d |  | t t   | |   | |  | <qb| t t  | |   } | d  | | d  | | d  t |  | d |  | |   | |  | <|
 t k r| t t!  qb| t t"  q\ |
 t# k r1| d r| t t$  | | d d d  n  t |  | d |  | d rb| t t$  | | d d d d  qbq\ |
 | k rN| t |
  q\ |
 | k r| t |
  | |   } | d  | d d k r| d  n; | d j%   \ } } | | k rt d   n  | |  t |  | d |  | t t   | |   | |  | <q\ |
 t& k rt| t |
  | |   } | d  t |  | |  | t t   | |   | |  | <q\ |
 t' k r| t |
  | t( @rt) j* | |  } n  | t @rt+ j* | |  } n | t @rt, j* | |  } n  | t- |  q\ |
 t. k r| t |
  g  } | j  } xt | d D]h } | |   } | d  t |  | |  | t t/  | | |    | d  | |   | |  | <q0W| d  x| D] } | |   | |  | <qWq\ |
 t0 k r'| t |
  | t @rt1 | } n | t @rt2 | } n  | t3 |  q\ |
 t4 k rq| t @rR| t t |
  n | t |
  | | d  q\ |
 t5 k rS| t |
  | | d d  | |   } | d  t |  | d |  | d r8| t t/  | |   } | d  | |   | d |  | <t |  | d |  | |   | |  | <qb| |   | d |  | <q\ t6 d |
   q\ Wd  S)	Nr   c             S   s   t  j |  |  S)N)_sregetlower)Zliteralflagsr&   r&   r*   fixupk   s    z_compile.<locals>.fixupz'internal: unsupported template operator   r   z(look-behind requires fixed-width patternzunsupported operand type)7appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES_ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODE_ignorecase_fixesr/   r0   OPCODESZ	IN_IGNORENOT_LITERALNEGATELITERALFAILUREZ	OP_IGNOREIN_compile_charsetZANYSRE_FLAG_DOTALLZANY_ALLSRE_FLAG_TEMPLATEerror_simpleREPEAT
MAX_REPEATZ
REPEAT_ONEZMIN_REPEAT_ONE_compileSUCCESSZ	MAX_UNTILZ	MIN_UNTIL
SUBPATTERNZMARKgetwidthZCALLZATSRE_FLAG_MULTILINEZAT_MULTILINEgetZ	AT_LOCALEZ
AT_UNICODEZATCODESBRANCHZJUMPCATEGORY	CH_LOCALE
CH_UNICODECHCODESZGROUPREFZGROUPREF_EXISTS
ValueError)codepatternr1   emitZ_lenZLITERAL_CODESZREPEATING_CODESZSUCCESS_CODESZASSERT_CODESfixesopavloskipkr2   hitailZ
tailappendZskipyesZskipnor&   r&   r*   rK   F   s*   	

	
 

 


 
 


  

 



	 
 




 

 
rK   c             C   sE  | j  } x't |  | | | t @ D]\ } } | t |  | t k rL q# | t k re | |  q# | t k r | | d  | | d  q# | t k r | j |  q# | t	 k r | j |  q# | t
 k r#| t @r | t t |  q/| t @r| t t |  q/| t |  q# t d   q# W| t t  d  S)Nr   r3   z"internal: unsupported set operator)r4   _optimize_charsetr<   r>   r@   rA   RANGECHARSETextend
BIGCHARSETrR   r;   rU   rS   rT   rG   rB   )charsetr1   rW   r2   rZ   rY   r[   r\   r&   r&   r*   rD      s.    	

rD   c             C   s  g  } g  } t  d  } xk|  D]c\ } } xTyZ| t k r | r | |  }	 d | |	 <| r |	 | k r x | |	 D] }
 d | |
 <qv Wq qd | | <n | t k rRt | d | d d  } | r t | |  } n  | r4| r4xd | D]> }	 d | |	 <|	 | k r x | |	 D] }
 d | |
 <qWq q WqxP | D] }	 d | |	 <q;Wn5 | t k rt| j | | f  n | j | | f  Wn t k
 r|t |  d k r| d d 7} w. n  | re| re| t k re| \ } } | g } t	 t
 d |  t d |  | |  xe | D]G \ } } | | k rE| j t | f  q| j t | | f f  qWn | j | | f  Yn XPq. Wq Wg  } d } x | j d |  } | d k  rPn  t |  d k rd  } Pn  | j d |  } | d k  r| j | t |  f  Pn  | j | | f  qW| d  k	 rxW | D]O \ } } | | d k rj| j t | f  q8| j t | | d f f  q8W| | 7} | st |  t |   k  r| S|  St |  d k rt |  } | j t | f  | | 7} | St |  } i  } t  d  } d } t    } xy t d d d  D]e }	 | |	 |	 d  } | | k ru| | | |	 d <q:| | |	 d <| | <| d 7} | | 7} q:Wt |  } | g t |  | d d  <| j t | f  | | 7} | S)	N   r3   r   s    i   i   i r   )	bytearrayrA   rc   rangemapr@   r4   
IndexErrorr5   _fixup_rangemaxminfind
_mk_bitmaprd   bytes_bytes_to_codesrf   )rg   r2   rZ   Z	isunicodeZoutra   Zcharmapr[   r\   r)   r_   rr]   r`   rangesZrunsqpdatacompsmappingZblockZchunkr&   r&   r*   rb      s    

	
 	!

	

rb   c             C   s   x t  | t |  | d   D] } x t |  D] \ } \ }  } | |  k  r t |  d k rq | | f | | <n | j | | | f  Pq0 | | k r | | d k r |  | f | | <Pq q0 Pq0 W| j | | f  q Wd  S)Nr3   )rk   rj   	enumeratelinsertr4   )r]   r`   ru   r2   r)   r_   r&   r&   r*   rm     s    #rm         0   1   c                sL   |  j  t  d  d  d       f d d   t t   d    D S)Nr3   c                s-   g  |  ]# }   |   |  d    q S)r   r&   )r'   r)   )	_CODEBITS_intsr&   r*   
<listcomp>  s   	z_mk_bitmap.<locals>.<listcomp>r   )	translate_BITS_TRANSrj   r5   )bitsr   r   r&   )r   r   r   r*   rq     s    rq   c             C   s\   t  |   j d  } | j t j k s- t  t |  | j t |   k sR t  | j   S)NI)
memoryviewcastitemsizer/   CODESIZEAssertionErrorr5   tolist)bar&   r&   r*   rs     s    %rs   c             C   sH   |  d j    \ } } | | k o- d k n oG |  d d d t k S)Nr   r3   r   )rN   rM   )r\   r]   r`   r&   r&   r*   rH     s    rH   c             C   s   d g t  |   } x| t d t  |    D]e } | | d } xN |  | |  | k r | d k rn d | | <Pn  | | d } q@ W| d | | <q) W| 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   r3   )r5   rj   )prefixZtabler)   Zidxr&   r&   r*   _generate_overlap_table  s    	
r   c             C   s  | j    \ } } | d k r" d  Sg  } | j } d } g  } | j }	 | t @sfx | j D] \ }
 } |
 t k r t |  | k r | d } n  | |  qZ |
 t k r t | d  d k r | d d \ }
 } |
 t k r | |  q PqZ PqZ W| rf| j rf| j d \ }
 } |
 t k r| d r| d d \ }
 } |
 t k rb|	 |
 | f  q`|
 t k r`g  } | j } xU | d D]@ } | sPn  | d \ }
 } |
 t k r| |
 | f  qPqW| } q`qc|
 t k rKg  } | j } xj | d D]@ } | sPn  | d \ }
 } |
 t k r=| |
 | f  qPqW| } qc|
 t k rc| } qcqfn  |  j } | t	 t
  t |   } | d  d } | rt } t |  | k ot | j  k n r| t } qn | r| t } n  | |  | t k  r| |  n | t  | d  t  } | t k  rI| |  n
 | d  | r| t |   | |  |  j |  |  j t |   n | rt | | |   n  t |   | |  | <d  S)Nr   r3   )rN   r4   r:   rx   rA   r5   rM   rQ   rC   r>   ZINFOZSRE_INFO_PREFIXZSRE_INFO_LITERALZSRE_INFO_CHARSETMAXCODEre   r   rD   )rW   rX   r1   r]   r`   r   ZprefixappendZprefix_skiprg   Zcharsetappendr[   r\   cZcappendrw   rY   r^   Zmaskr&   r&   r*   _compile_info  s    		
"				 
+



r   c             C   s   t  |  t t f  S)N)
isinstancestrrr   )objr&   r&   r*   isstring!  s    r   c             C   sN   |  j  j | B} g  } t | |  |  t | |  j |  | j t t  | S)N)rX   r1   r   rK   rx   r4   r>   rL   )rw   r1   rW   r&   r&   r*   _code$  s    r   c             C   s   t  |   r' |  } t j |  |  }  n d  } t |  |  } |  j j d k r] t d   n  |  j j } d  g |  j j } x$ | j   D] \ } } | | | <q Wt	 j
 | | |  j j B| |  j j d | |  S)Nd   z6sorry, but this version only supports 100 named groupsr3   )r   	sre_parseparser   rX   groupsr   Z	groupdictitemsr/   compiler1   )rw   r1   rX   rW   Z
groupindexZ
indexgroupr_   r)   r&   r&   r*   r   3  s     r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )(__doc__r/   r   sre_constantsr   ZMAGICr   r   r   setrA   r?   r6   rI   Z
MIN_REPEATrJ   r7   rL   rB   r8   ZASSERTZ
ASSERT_NOTr9   Z_equivalencesr=   rK   rD   rb   rm   r   r   intrq   rs   rH   r   r   r   r   r   r&   r&   r&   r*   <module>   sX   
	               	
e