ó
< Õ[c        
   @   sÇ   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d d d g Z d „  Z	 d	 „  Z
 e d
 ƒ d d d d d d d d d g	 Z e d d g Z e d d g Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t	   cStringIO(   t
   PatsyError(   t   Origint   python_tokenizet   pretty_untokenizet   normalize_token_spacingc   	      c   sW  |  j  d d ƒ j ƒ  }  t j t |  ƒ j ƒ } yí xæ | D]Ò \ } } \ } } \ } } }  | t j k rn Pn  t |  | | ƒ } | t j k s• t	 ‚ | t j
 k r¼ | d k s: t	 ‚ q: n  | t j k rÝ t d | ƒ ‚ n  | t j k rþ t d | ƒ ‚ n  | | | f Vq: Wt d ƒ ‚ Wn3 t j k
 rR} | j d j d ƒ sNt	 ‚ d  SXd  S(	   Ns   
t    t    s2   error tokenizing input (maybe an unclosed string?)s   comments are not alloweds!   stream ended without ENDMARKER?!?i    s   EOF in multi-line(   t   replacet   stript   tokenizet   generate_tokenst   StringIOt   readlinet	   ENDMARKERR   t   NLt   AssertionErrort   NEWLINEt
   ERRORTOKENR   t   COMMENTt
   ValueErrort
   TokenErrort   argst
   startswith(	   t   codet   itt   pytypet   stringt   _t   startt   endt   origint   e(    (    s+   lib/python2.7/site-packages/patsy/tokens.pyR      s*    (	c          C   sô  d }  t  t |  ƒ ƒ } t j d t |  d d ƒ f t j d t |  d d ƒ f t j d t |  d	 d
 ƒ f t j d t |  d
 d ƒ f t j d t |  d d ƒ f t j d t |  d d ƒ f t j d t |  d d ƒ f t j d t |  d d ƒ f g } | | k st ‚ d } t  t | ƒ ƒ } t j d t | d d ƒ f t j d t | d d ƒ f t j d t | d	 d
 ƒ f t j d t | d
 d ƒ f g } | | k s¤t ‚ d d l m	 } | t
 t  t d ƒ ƒ d d l m	 } | t
 t  t d ƒ ƒ d  S(   Ns   a + (foo * -1)t   ai    i   t   +i   i   t   (i   i   t   fooi   t   *i	   i
   t   -i   i   t   1i   t   )i   s   a + (bt   bi   iÿÿÿÿ(   t   assert_raisess   a b # cs   a b "c(   t   listR   R
   t   NAMER   t   OPt   NUMBERR   t
   nose.toolsR*   R   (   R   t   tokenst   expectedt   code2t   tokens2t	   expected2R*   (    (    s+   lib/python2.7/site-packages/patsy/tokens.pyt   test_python_tokenize<   s,    !!s
   +-*/%&^|<>s   ==s   <>s   !=s   <=s   >=s   <<s   >>s   **s   //t   !t   ~t   ,t   :c         C   sI  g  } t  } t  } t  } t  } g  } x|  D]\ } } | t j t j t j f k s[ t ‚ | t j k rp q+ n  | t j k r… q+ n  | t j t j	 t j
 f k rÛ | s¯ | r¿ | j d ƒ n  | j | ƒ t  } t } n| d k r÷ | j | ƒ n | r| d k r| j ƒ  n  | t k }	 | t k }
 | d k rY| rY| d	 d k rYt  }
 n  | d k rz| rzt  }	 t  }
 n  | d k rœ| rœt }	 t }
 n  | d k r¾| r¾t  }	 t  }
 n  | sÊ|	 rÚ| j d ƒ n  | j | ƒ |
 } t  } | t j t j	 t j
 f k s| d k r&t } n t  } | d k } q+ Wd j | ƒ S(   NR   R#   t   [t   {R(   t   ]t   }R9   iÿÿÿÿR%   s   **t   =R"   R&   R8   R   (   R#   R:   R;   (   R(   R<   R=   (   R%   s   **(   R"   R&   (   R#   R8   (   t   FalseR
   t   INDENTt   DEDENTR   R   R   R   R,   R.   t   STRINGt   appendt   Truet   popt   _python_space_beforet   _python_space_aftert   join(   t   typed_tokenst   textt   prev_was_space_delimt   prev_wants_spacet   prev_was_open_paren_or_commat   prev_was_object_liket   bracketst
   token_typet   tokent   this_wants_space_beforet   this_wants_space_after(    (    s+   lib/python2.7/site-packages/patsy/tokens.pyR   _   s^    	"					c         C   sC   g  t  j t |  ƒ j ƒ D] } | d | d f ^ q } t | ƒ S(   Ni    i   (   R
   R   R   R   R   (   R   t   tR0   (    (    s+   lib/python2.7/site-packages/patsy/tokens.pyR   š   s    6c           C   sÌ  t  d ƒ d k s t ‚ t  d ƒ d k s0 t ‚ t  d ƒ d k sH t ‚ t  d ƒ d k s` t ‚ t  d ƒ d k sx t ‚ t  d ƒ d k s t ‚ t  d	 ƒ d	 k s¨ t ‚ t  d
 ƒ d k sÀ t ‚ t  d ƒ d k sØ t ‚ t  d ƒ d k sð t ‚ t  d ƒ d k st ‚ t  d ƒ d k s t ‚ t  d ƒ d k s8t ‚ t  d ƒ d k sPt ‚ t  d ƒ d k sht ‚ t  d ƒ d k s€t ‚ t  d ƒ d k s˜t ‚ t  d ƒ d k s°t ‚ t  d  ƒ d  k sÈt ‚ d  S(!   Ns   1 + 1s   1+1s
   1*(2+3**2)s   1 * (2 + 3 ** 2)s   a and bs   foo(a=bar.baz[1:])s   {"hi":foo[:]}s   {"hi": foo[:]}s   'a' "b" 'c's   """a""" is 1 or 2==3s   """a""" is 1 or 2 == 3s   foo ( * args )s
   foo(*args)s   foo ( a * args )s   foo(a * args)s   foo ( ** args )s   foo(**args)s   foo ( a ** args )s   foo(a ** args)s   foo (1, * args )s   foo(1, *args)s   foo (1, a * args )s   foo(1, a * args)s   foo (1, ** args )s   foo(1, **args)s   foo (1, a ** args )s   foo(1, a ** args)s   a=foo(b = 1)s   a = foo(b=1)s   foo(+ 10, bar = - 1)s   foo(+10, bar=-1)s   1 + +10 + -1 - 5(   R   R   (    (    (    s+   lib/python2.7/site-packages/patsy/tokens.pyt2   test_pretty_untokenize_and_normalize_token_spacingŸ   s&    (   R
   t	   six.movesR    R   t   patsyR   t   patsy.originR   t   __all__R   R5   R+   t   _python_space_bothRF   RG   R   R   RU   (    (    (    s+   lib/python2.7/site-packages/patsy/tokens.pyt   <module>   s"   		$			;	