ó
\K]c           @` sQ   d  d l  m Z m Z m Z d  d l m Z m Z d   Z d   Z d   Z	 d S(   i    (   t   print_functiont   divisiont   absolute_import(   t   typest   typingc         C` s   t  |  t t t j f  S(   si   
    Return whether *sig* is a potentially valid signature
    specification (for user-facing APIs).
    (   t
   isinstancet   strt   tupleR   t	   Signature(   t   sig(    (    s-   lib/python2.7/site-packages/numba/sigutils.pyt   is_signature   s    c         C` s   t  |  i  t j  S(   N(   t   evalR   t   __dict__(   t   signature_str(    (    s-   lib/python2.7/site-packages/numba/sigutils.pyt   _parse_signature_string   s    c         C` sŨ   t  |  t  r t |   } n |  } t  | t  rC | d } } nM t  | t j  rk | j | j } } n% t	 d |  |  j
 j | j
 j f   d   } | d k	 rē | |  n  x | D] } | |  qđ W| | f S(   sū   
    From *sig* (a signature specification), return a ``(args, return_type)``
    tuple, where ``args`` itself is a tuple of types, and ``return_type``
    can be None if not specified.
    sN   invalid signature: %r (type: %r) evaluates to %r instead of tuple or Signaturec         S` s,   t  |  t j  s( t d |  f   n  d  S(   Ns;   invalid type in signature: expected a type instance, got %r(   R   R   t   Typet	   TypeError(   t   ty(    (    s-   lib/python2.7/site-packages/numba/sigutils.pyt
   check_type(   s    N(   R   R   R   R   t   NoneR   R   t   argst   return_typeR   t	   __class__t   __name__(   R	   t   parsedR   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/sigutils.pyt   normalize_signature   s     	N(
   t
   __future__R    R   R   t   numbaR   R   R
   R   R   (    (    (    s-   lib/python2.7/site-packages/numba/sigutils.pyt   <module>   s   		