ó
\K]c           @  sé  d  Z  d d l m Z d d l Z d d l m Z d d l Z d d l j	 Z
 d d l m Z m Z d d l m Z m Z d d l m Z m Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& g Z d d d d d d d d d d d d d d d d  d! d" d' d( d) d* d& g Z d+ d, d- d. d/ d0 d1 g Z d2 d3 d4 d5 d6 d7 d8 d9 g Z d: e f d; „  ƒ  YZ e d< k råe
 j ƒ  n  d S(=   s1   
Test helper functions from numba.numpy_support.
iÿÿÿÿ(   t   print_functionN(   t   product(   t   numpy_supportt   typesi   (   t   TestCaset   tag(   t   Shaket   RequestErrort   TestFromDtypec           B  sƒ   e  Z e d  ƒ d „  ƒ Z d „  Z d „  Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z	 RS(   t	   importantc      
     s  t  j ‰  ‡  ‡ f d †  } | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d	 t j ƒ | d
 t j ƒ | d t j ƒ | d t j ƒ | d t j	 ƒ | d t j	 ƒ | d t j
 ƒ | d t j
 ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ | d t j ƒ x6 d( D]. } ˆ j ˆ  t j | ƒ ƒ t t | ƒ ƒ q’Wt j d# k rÙd$ n d% } x. d& D]& } ˆ j t ˆ  t j | | ƒ ƒ qæWd' S()   sX   
        Test from_dtype() and as_dtype() with the various scalar number types.
        c           se   t  j |  ƒ } ˆ j ˆ  | ƒ | ƒ ˆ j ˆ  t  j d |  ƒ ƒ | ƒ ˆ j | t j | ƒ ƒ d  S(   Nt   =(   t   npt   dtypet   assertIst   assertEqualR   t   as_dtype(   t   typechart
   numba_typeR   (   t   ft   self(    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check   s    #t   ?R   t   f4t   dt   f8t   Ft   c8t   Dt   c16t   bt   i1t   Bt   u1t   ht   i2t   Ht   u2t   it   i4t   It   u4t   qt   Qt   int8t   uint8t   int16t   uint16t   int32t   uint32t   int64t   uint64t   intpt   uintpt   littlet   >t   <t   hHiIlLqQfdFDN(
   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   (   R   t
   from_dtypeR   t   bool_t   float32t   float64t	   complex64t
   complex128R+   R,   R-   R.   R/   R0   R1   R2   R   R   R   t   getattrt   syst	   byteordert   assertRaisest   NotImplementedError(   R   R   t   namet   foreign_alignt   letter(    (   R   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_number_types   s@    	
,c           sU   ‡  f d †  } | d t  j d ƒ ƒ | d t  j d ƒ ƒ | d t  j d ƒ ƒ d S(	   sS   
        Test from_dtype() and as_dtype() with the character string types.
        c           sE   t  j |  ƒ } ˆ  j t j | ƒ | ƒ ˆ  j | t j | ƒ ƒ d  S(   N(   R   R   R   R   R9   R   (   t
   typestringR   R   (   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR   L   s    t   S10i
   t   a11i   t   U12i   N(   R   t   CharSeqt   UnicodeCharSeq(   R   R   (    (   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_string_typesH   s    c           s2   ‡  f d †  } | t  j | ƒ | d ƒ d ƒ d  S(   Nc           sh   t  j |  ƒ } ˆ  j | | ƒ ˆ  j | j | ƒ ˆ  j t  j | ƒ |  ƒ ˆ  j t  j | ƒ |  ƒ d  S(   N(   R   R9   R   t	   unit_codeR   (   R   R   t   codet   tp(   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR   W   s
    t    i   (   R   R   (   R   RF   t   nb_classR   (    (   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_datetime_typesV   s    c         C  s   |  j  d t j ƒ d S(   sK   
        Test from_dtype() and as_dtype() with the datetime types.
        t   MN(   RT   R   t
   NPDatetime(   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_datetime_typesa   s    c         C  s   |  j  d t j ƒ d S(   sL   
        Test from_dtype() and as_dtype() with the timedelta types.
        t   mN(   RT   R   t   NPTimedelta(   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_timedelta_typesh   s    c           sc  ‡  f d †  } t  j d t  j f d t  j f g ƒ } | | d i t j d d  d  f d 6t j d d  d  f d 6d d d	 t ƒt  j d t  j f d t  j f g d
 t ƒ} | | d i t j d d  d  f d 6t j d d  d  f d 6d d d	 t ƒt  j d t  j f d g ƒ } | | d i t j d d  d  f d 6t j d ƒ d d  d  f d 6d d d	 t ƒd  S(   Nc           sr   t  j |  ƒ } ˆ  j | t j ƒ ˆ  j | j |  ƒ ˆ  j | j | ƒ ˆ  j | j | ƒ ˆ  j | j	 | ƒ d  S(   N(
   R   R9   t   assertIsInstanceR   t   RecordR   R   t   fieldst   sizet   aligned(   R   R]   R^   R_   RQ   (   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR   q   s    t   aR   R]   i    i   R^   i   R_   t   aligni   i   RX   t   nt   S5i   i	   (   Rb   Rc   (	   R   R   R-   R/   R   t   Nonet   Falset   TrueRL   (   R   R   R   (    (   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_struct_typeso   s     	'	-		c           s£   ‡  f d †  } t  j t  j t  j t  j g } t t g } x0 t | | ƒ D] \ } } | | | t j	 ƒ qI Wx0 t | | ƒ D] \ } } | | | t j
 ƒ q| Wd  S(   Nc           sP   t  j |  ƒ } t j | ƒ } | | | ƒ } t j | ƒ } ˆ  j | | ƒ d  S(   N(   R   R   R   R9   R   R   (   t	   base_instt   enum_deft
   type_classt   np_dtt   nb_tyt   instt	   recovered(   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR      s
    (   R   R<   R/   R>   t   boolR   R   R   R   t
   EnumMembert   IntEnumMember(   R   R   t   dtst   enumst   dtt   enum(    (   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_enum_typeŒ   s    (
   t   __name__t
   __module__R   RG   RN   RT   RW   RZ   Rg   Rv   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR      s   4		t   ValueTypingTestBasec           B  s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sL   
    Common tests for the typing of values.  Also used by test_special.
    c         C  s  | } |  j  | d ƒ t j t j f ƒ |  j  | d ƒ t j t j f ƒ |  j  | d ƒ t j t j f ƒ |  j | d ƒ t j ƒ |  j | d ƒ t j ƒ |  j | t ƒ t j ƒ |  j | t	 ƒ t j ƒ x? d D]7 } t
 t | ƒ ƒ  } |  j | | ƒ t
 t | ƒ ƒ q× Wd S(   s;   
        Test *func*() with scalar numeric values.
        i   i   i   g      ð?y              ð?R+   R,   R-   R.   R/   R0   R1   R2   t   intct   uintcR3   R4   R;   R<   R=   R>   R:   NI   €    iÿÿÿI   €    i   €(   R+   R,   R-   R.   R/   R0   R1   R2   Rz   R{   R3   R4   R;   R<   R=   R>   R:   (   t   assertInR   R/   R1   R   R<   R>   Rf   R:   Re   R?   R   (   R   t   funcR   RD   t   val(    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_number_values¥   s    """  
c         C  sˆ   | } x{ d d d d d d d d d	 d
 d d d g D]L } | rR | d | ƒ } n | d ƒ } | | ƒ } |  j  | | | ƒ ƒ q4 Wd  S(   NRR   t   YRU   R   R!   RX   t   st   mst   ust   nst   pst   fst   asi   t   Nat(   R   (   R   R}   t   np_typet   nb_typeR   t   unitt   tRQ   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   _base_check_datetime_valuesº   s    c         C  s   |  j  | t j t j ƒ d S(   s:   
        Test *func*() with np.datetime64 values.
        N(   R   R   t
   datetime64R   RV   (   R   R}   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_datetime_valuesÉ   s    c         C  s   |  j  | t j t j ƒ d S(   s;   
        Test *func*() with np.timedelta64 values.
        N(   R   R   t   timedelta64R   RY   (   R   R}   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_timedelta_valuesÏ   s    (   Rw   Rx   t   __doc__R   R   R   R‘   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyRy       s
   			t   TestArrayScalarsc           B  sG   e  Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z RS(   R	   c         C  s   |  j  t j ƒ d S(   sH   
        Test map_arrayscalar_type() with scalar number values.
        N(   R   R   t   map_arrayscalar_type(   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_number_valuesØ   s    c         C  sL   t  j } |  j | ƒ t j d d ƒ } |  j t ƒ  | | ƒ Wd QXd S(   sH   
        Test map_arrayscalar_type() with np.datetime64 values.
        t   2014t   10YN(   R   R”   R   R   RŽ   RB   RC   (   R   R   RŒ   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_datetime_valuesß   s
    	c         C  sL   t  j } |  j | ƒ t j d d ƒ } |  j t ƒ  | | ƒ Wd QXd S(   sI   
        Test map_arrayscalar_type() with np.timedelta64 values.
        i
   R—   N(   R   R”   R‘   R   R   RB   RC   (   R   R   RŒ   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_timedelta_valuesë   s
    	(   Rw   Rx   R   R•   R˜   R™   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR“   Ö   s   t	   FakeUFuncc           B  s   e  Z d Z d „  Z RS(   t   nint   noutR   t   ntypesc         C  s¹   | |  _  |  j  d j d ƒ \ } } t | ƒ |  _ t | ƒ |  _ t | ƒ |  _ x` | D]X } |  j  d j d ƒ \ } } t | ƒ |  j k s– t ‚ t | ƒ |  j k sY t ‚ qY Wd  S(   Ni    s   ->(   R   t   splitt   lenR›   Rœ   R   t   AssertionError(   R   R   t   in_t   outRQ   (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   __init__û   s    	(   R›   Rœ   R   R   (   Rw   Rx   t	   __slots__R£   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyRš   ø   s   s   ??->?s   bb->bs   BB->Bs   hh->hs   HH->Hs   ii->is   II->Is   ll->ls   LL->Ls   qq->qs   QQ->Qs   ee->es   ff->fs   dd->ds   gg->gs   FF->Fs   DD->Ds   GG->Gs   Mm->Ms   mm->ms   mM->Ms   OO->Os   mq->ms   qm->ms   md->ms   dm->ms   e->?s   f->?s   d->?s   g->?s   F->?s   D->?s   G->?s   e->es   f->fs   d->ds   g->gs   F->Fs   D->Ds   G->Gs   O->Ot
   TestUFuncsc           B  s    e  Z d  Z d „  Z d „  Z RS(   s   
    Test ufunc helpers.
    c   	        sõ  t  j ‰ t t ƒ } t t ƒ } t t ƒ } t t ƒ } d ‡ ‡ f d † ‰  d ‡  ‡ f d † } ‡ ‡ f d †  } | | t j t j f d ƒ | | t j	 t j	 f d ƒ | | t j
 t j
 f d ƒ | | t j t j f d ƒ | | t j t j f d ƒ | | t j t j f d ƒ | | t j t j f d ƒ | | t j t j f d ƒ | | t j t j f d ƒ | | t j d ƒ t j d ƒ f d d t j d ƒ f ƒ| | t j d ƒ t j d ƒ f d d t j d ƒ f ƒ| | t j d ƒ t j d ƒ f d d t j d ƒ f ƒ| | t j d ƒ t j f d d t j d ƒ f ƒ| | t j t j d ƒ f d d t j d ƒ f ƒˆ  | t j t j	 f d ƒ ˆ  | t j
 t j f d ƒ ˆ  | t j t j f d ƒ ˆ  | t j t j f d ƒ ˆ  | t j t j f d ƒ t j t j t j t j g } xr | D]j } ˆ  | t j | f d ƒ ˆ  | t j | f d ƒ ˆ  | t j | f d ƒ ˆ  | t j | f d ƒ q8Wx4 | D], } ˆ  | | f d ƒ ˆ  | | f d ƒ q­Wˆ  | t j d ƒ t j f d d t j d ƒ f ƒˆ  | t j d ƒ t j f d d t j d ƒ f ƒˆ  | t j d ƒ t j f d d t j d ƒ f ƒˆ  | t j t j d ƒ f d d t j d ƒ f ƒ| | t j d ƒ t j d ƒ f ƒ | | t j d ƒ t j f ƒ d  S(   Nc           s#  ˆ  |  | | ƒ } ˆ j  | ƒ t | t ƒ r; | f } n  ˆ j | j | d | | | | j f ƒ ˆ j t | j ƒ t | j ƒ ƒ ˆ j t | j	 ƒ t | j
 ƒ ƒ | sÝ ˆ  |  t | ƒ | j
 ƒ } ˆ j | | ƒ n ˆ j | j
 t | ƒ ƒ ˆ  |  | j | j
 ƒ } ˆ j | | ƒ | S(   s¡   
            Check that ufunc_find_matching_loop() finds one of the given
            *sigs* for *ufunc*, *input_types* and optional *output_types*.
            s?   inputs=%s and outputs=%s should have selected one of %s, got %s(   t
   assertTruet
   isinstancet   strR|   t	   ufunc_sigR   RŸ   t   numpy_inputst   inputst   numpy_outputst   outputst   list(   t   ufunct   input_typest   sigst   output_typest   loopt   loop_explicitt   loop_rt(   R   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR   #  s     ""c           s2   ˆ  |  | | | ƒ } ˆ j  | j t | ƒ ƒ d S(   sV   
            Like check(), but also ensure no casting of inputs occurred.
            N(   R   R«   R®   (   R¯   R°   R±   R²   R³   (   R   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_exact=  s    c           s#   ˆ  |  | ƒ } ˆ j  | d  ƒ d  S(   N(   R   Rd   (   R¯   R°   R³   (   R   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   check_no_matchD  s    s   ??->?s   bb->bs   BB->Bs   ll->ls   qq->qs   LL->Ls   QQ->Qs   ff->fs   dd->ds   FF->Fs   DD->DR   s   mm->mR²   R‚   s   mM->Ms   Mm->Ms   mq->ms   dm->ms   ii->is   d->ds   d->?s   md->m(    (    (   s   ll->ls   qq->q(   s   LL->Ls   QQ->Q(   R   t   ufunc_find_matching_loopRš   t
   _add_typest
   _mul_typest   _isnan_typest   _sqrt_typesR   R:   R+   R,   R1   R2   R;   R<   R=   R>   RY   RV   R-   R.   R/   R0   (	   R   t   np_addt   np_mult   np_isnant   np_sqrtR¶   R·   t	   int_typest   intty(    (   R   R   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_ufunc_find_matching_loop  sf    	!!!%c           sJ  ‡  f d †  } t  j d ƒ } | | ƒ | | j d
 ƒ ƒ | | j d ƒ j ƒ | | j d ƒ d  d  d … ƒ | | j d ƒ ƒ | | j d ƒ j ƒ | | j d ƒ d  d  … d  d  d … f ƒ | | j d ƒ j d  d  … d  d  d … f ƒ t j d k rF| | j d ƒ d  d  d … ƒ | | j d ƒ j d  d  … d  d  … d  d  d … f ƒ | | j d ƒ d  d  d … d  d  d … f ƒ | | j d ƒ j d  d  … d  d  d … d  d  d … f ƒ | | j d ƒ d  d  d … d  d  d … d  d  d … f ƒ | | j d ƒ j d  d  d … d  d  d … d  d  d … f ƒ | | j d ƒ d  d  d … d  d  d … d  d  d … f ƒ | | j d ƒ j d  d  … d  d  d … d  d  d … d  d  d … f ƒ | | j d ƒ d  d  d	 … d  d  d … d  d  d … f ƒ | | j d ƒ j d  d  … d  d  d … d  d  d … d  d  d	 … f ƒ n  d  S(   Nc           s†   |  j  } |  j } |  j j } t j | | | ƒ } t j | | | ƒ } |  j d } |  j d } ˆ  j | | ƒ ˆ  j | | ƒ d  S(   Nt   C_CONTIGUOUSt   F_CONTIGUOUS(	   t   shapet   stridesR   t   itemsizeR   t   is_contiguoust
   is_fortrant   flagsR   (   t   arrt   dimsRÇ   RÈ   t   is_ct   is_ft   expect_ct   expect_f(   R   (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt	   check_arr†  s    		i   i   i   i   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (   R   t   aranget   reshapet   TR   t   version(   R   RÒ   RÌ   (    (   R   s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   test_layout_checker…  s*    
 ,/ 8/;;>;G;(   Rw   Rx   R’   RÃ   R×   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyR¥     s   	it   __main__(    R’   t
   __future__R    R@   t	   itertoolsR   t   numpyR   t   numba.unittest_supportt   unittest_supportt   unittestt   numbaR   R   t   supportR   R   t   enum_usecasesR   R   R   t   objectRy   R“   Rš   R¹   Rº   R»   R¼   R¥   Rw   t   main(    (    (    s=   lib/python2.7/site-packages/numba/tests/test_numpy_support.pyt   <module>   s2   Ž6"	™