ó
\K]c           @` sQ   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d „  Z d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   utilsc         ` sø   d „  } d „  ‰  ‡  f d †  } | |  ƒ j  d ƒ \ } } } t | | ƒ ƒ } t | | ƒ ƒ } t ƒ  } t ƒ  }	 x | D] }
 | t |
 ƒ O} q| Wx | D] }
 |	 t |
 ƒ O}	 q W|	 j | ƒ } | rî t d d j t | ƒ ƒ ƒ ‚ n  | | f S(   s‹   Parse generalized ufunc signature.

    NOTE: ',' (COMMA) is a delimiter; not separator.
          This means trailing comma is legal.
    c         S` s   d j  d „  |  Dƒ ƒ S(   Nt    c         s` s$   |  ] } | t  j k r | Vq d  S(   N(   t   stringt
   whitespace(   t   .0t   c(    (    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pys	   <genexpr>   s    (   t   join(   t   s(    (    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   stripws   s    c         ` s.   ‡ f d †  } | ƒ  ‰  t  j ‡  f d †  ƒ S(   Nc           3` s	   ˆ  Vd  S(   N(    (    (   t   src(    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   readline   s    c           ` s
   t  ˆ  ƒ S(   N(   t   next(    (   t   gen(    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   <lambda>   R   (   t   tokenizet   generate_tokens(   R   R   (    (   R   R   s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt	   tokenizer   s    	c         3` s/  ˆ  |  ƒ } xt  r*t | ƒ } | d d k rü g  } x{ t  r´ t | ƒ } | d d k r` Pq: | d t j k r‡ | j | d ƒ q: | d d k r q: q: t d | d ƒ ‚ q: Wt | ƒ Vt | ƒ } | d d k râ q q't j | d ƒ r'Pq'q t j | d ƒ rPq t d | d ƒ ‚ q Wd  S(   Ni   t   (t   )i    t   ,s   bad token in signature "%s"(   t   TrueR   R   t   NAMEt   appendt
   ValueErrort   tuplet   ISEOF(   R   t   tokgent   tokt   symbols(   R   (    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   parse   s.    		s   ->s   undefined output symbols: %sR   (   t	   partitiont   listt   sett
   differencet	   NameErrorR	   t   sorted(   t   sigR   R    t   inst   _t   outst   inputst   outputst   isymt   osymt   grpt   diff(    (   R   s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   parse_signature   s     				"(	   t
   __future__R    R   R   R   R   t   numbaR   R1   (    (    (    s6   lib/python2.7/site-packages/numba/npyufunc/sigparse.pyt   <module>   s   