
\K]c           @` s  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z d  d l m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l m Z d d	 l m Z m Z m Z d  d
 l m  Z  d  d l! m" Z" d  d l# m$ Z$ e j% d f k rUd d l& m' Z' m( Z( n  d   Z) d e e f d     YZ* e+ d k re j,   n  d S(   i    (   t   absolute_importt   print_functiont   division(   t   OrderedDictN(   t   float32t   float64t   int16t   int32t   booleant   deferred_typet   optional(   t   njitt   typeoft   typest   errors(   t   unittest_support(   t   jitclassi   (   t   TestCaset   MemoryLeakMixint   tag(   t   _box(   t   MemInfo(   t   LoweringErrori   (   t
   TestClass1t
   TestClass2c         C` s)   t  j |   } t |  } | j   | S(   N(   R   t   box_get_meminfoptrR   t   acquire(   t   boxt   ptrt   mi(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _get_meminfo   s    
t   TestJitClassc           B` s  e  Z d    Z d   Z d   Z d   Z d   Z d   Z e d  d    Z	 e d  d    Z
 d	   Z e d  d
    Z d   Z d   Z d   Z d   Z d   Z d   Z e d  d    Z d   Z d   Z d   Z d   Z e d  d    Z e j e j d' k  d  d    Z d   Z d   Z d   Z  e j e j d( k  d  d    Z! e j e j d) k  d  d    Z" d   Z# d    Z$ d!   Z% d"   Z& d#   Z' d$   Z( d%   Z) d&   Z* RS(*   c         C` s   t  |  d t f d     Y } | j j } t | j j    } t | j j    } |  j | d d  |  j | d d  |  j | d t	  |  j | d t
  d  S(   Nt   Testc           B` s   e  Z d    Z RS(   c         S` s   d  S(   N(    (   t   self(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   __init__'   s    (   t   __name__t
   __module__R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR    $   s   i    t   xi   t   y(   R   t   objectt
   class_typet   instance_typet   listt   structt   keyst   valuest   assertEqualR   R   (   R!   t   specR    t   clstyt   namesR-   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _check_spec#   s    c         C` s.   t    } t | d <t | d <|  j |  d  S(   NR%   R&   (   R   R   R   R2   (   R!   R/   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_ordereddict_spec2   s    	

c         C` s)   d t  f d t f g } |  j |  d  S(   NR%   R&   (   R   R   R2   (   R!   R/   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_list_spec8   s    	c         C` s   d t  f d t f g } d t f d t f g } d t f d     Y} |  j t   } t |  |  Wd  QX|  j d t | j	   |  j t   } t |  |  Wd  QX|  j
 t | j	  d  d  S(   NR%   R&   i   R    c           B` s   e  Z d    Z RS(   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   C   s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR    A   s   s*   spec values should be Numba type instancess"   spec keys should be strings, got 1(   t   intR   R   R'   t   assertRaisest	   TypeErrorR   t   assertInt   strt	   exceptionR.   (   R!   t   spec1t   spec2R    t   raises(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_spec_errors=   s    	c         C` sN   t    } t | d <t | d <t | d <t |  d t f d     Y } | S(   NR%   R&   t   arrt   Float2AndArrayc           B` s   e  Z d    Z d   Z RS(   c         S` s   | |  _  | |  _ | |  _ d  S(   N(   R%   R&   R?   (   R!   R%   R&   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   X   s    		c         S` s"   |  j  | 7_  |  j | 7_ | S(   N(   R%   R&   (   R!   t   val(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   add]   s    (   R#   R$   R"   RB   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR@   U   s   	(   R   R   R   R'   (   R!   R/   R@   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _make_Float2AndArrayO   s    	

c         C` sC   t    } t | d <t | d <t |  d t f d     Y } | S(   NR%   R&   t   Vector2c           B` s   e  Z d    Z RS(   c         S` s   | |  _  | |  _ d  S(   N(   R%   R&   (   R!   R%   R&   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   l   s    	(   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRD   i   s   (   R   R   R   R'   (   R!   R/   RD   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _make_Vector2d   s    	

t	   importantc         ` s   |  j      |  j    t d     t     f d    } t j d d t j } | |  \ } } } |  j | d  |  j | d  |  j | |  d  S(   Nc         S` s   |  j  |  j S(   N(   R%   R&   (   t   obj(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   barw   s    c         ` sJ     d d |   } | j  d   d d  }  |   |  | j f S(   Ni   i   i{   i   i   (   RB   R?   (   t   aRG   t   vec(   R@   RD   RH   (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   foo{   s    i
   t   dtypei{   i   i   i   i   i|   i   i   i   (   RC   RE   R   t   npt   onesR   R.   t   assertPreciseEqual(   R!   RK   t   inpRI   t   bt   c(    (   R@   RD   RH   s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_jit_class_1r   s    c         C` s\  |  j    } t d    } t d    } t j d d t j } | d d |  } t |  } |  j | j d  |  j | j t	 j
 |   |  j | j j | j  | |  } t |  } |  j | j d  |  j | j d  |  j | j t	 j
 |   |  j | j | j  ~ ~ |  j | j d  | |  \ }	 }
 } |  j |	 d  |  j |
 d  |  j | |  |  j | j d  |  j | j d  |  j | j |  |  j | j d  d  |  j | j d  |  j | j d  d	 | _ d
 | _ t j d d t j | _ } |  j | j d	  |  j | j d
  |  j | j |  d  S(   Nc         S` s   |  S(   N(    (   RG   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   identity   s    c         S` s   |  j  |  j |  j f S(   N(   R%   R&   R?   (   RG   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   retrieve_attributes   s    i
   RL   i   i   i   i{   iM  i  i   i|   i}   (   RC   R   RM   t   arangeR   R   R.   t   refcountt   dataR   t   box_get_dataptrt   _numba_type_R(   t   assertIsR%   R&   R?   RB   (   R!   R@   RT   RU   R?   RG   t   obj_meminfot   othert   other_meminfot   out_xt   out_yt   out_arrt   newarr(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_jitclass_usage_from_python   sD    
		c         C` se   t    } t | d <t |  d t f d     Y } |  j | t  j  |  j | t  j  d  S(   NRA   t   Fooc           B` s   e  Z d    Z RS(   c         S` s   | |  _  d  S(   N(   RA   (   R!   RA   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"      s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd      s   (	   R   R   R   R'   t
   assertTruet   TrueRA   t   assertFalset   False(   R!   R/   Rd   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_jitclass_datalayout   s    	
c   	      ` s  t    } t   } t | d <t |  | d <t d      t |  d t f   f d     Y } | j | j j	  | d d   } |  j | j d  |  j | j  | d |  } t |  } t |  } |  j | j d  |  j | j j | j  |  j | j d  |  j | j d	  | j   } |  j | | j  |  j | j  | j | d
 d    |  j | j  |  j | j j d
  |  j | j j  | j | d d    |  j | j j  |  j | j j j d  |  j | j d  ~ ~ |  j | j d	  d  S(   NRX   t   nextc         S` s   |  j  S(   N(   RX   (   t   node(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   get_data   s    t
   LinkedNodec           ` s)   e  Z d    Z   f d   Z d   Z RS(   c         S` s   | |  _  | |  _ d  S(   N(   RX   Rj   (   R!   RX   Rj   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"      s    	c         ` s     |  j   S(   N(   Rj   (   R!   (   Rl   (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   get_next_data   s    c         S` s2   |  } x | j  d  k	 r$ | j  } q	 W| | _  d  S(   N(   Rj   t   None(   R!   R]   t   cur(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   append_to_tail   s    (   R#   R$   R"   Rn   Rq   (    (   Rl   (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRm      s   	i{   iA  i   i   i7  i  (   R	   R   R   R
   R   R   R'   t   defineR(   R)   Ro   R.   RX   t   assertIsNoneRj   R   RW   Rn   Rq   t   assertIsNotNone(	   R!   t	   node_typeR/   Rm   t   firstt   secondt   first_meminfot   second_meminfot	   first_val(    (   Rl   s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_deferred_type   s>    		
c         C` s   t    } t | d <t | d <t | d <t |  d t f d     Y } | d d d  } d	 t j f d
     Y} t j t	 j
 |   } t j | t j |   d } |  j | j | j  |  j | j | j  |  j | j | j  d  S(   NRI   RQ   RR   t   Structc           B` s   e  Z d    Z RS(   c         S` s   | |  _  | |  _ | |  _ d  S(   N(   RI   RQ   RR   (   R!   RI   RQ   RR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    		(   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR|     s   iͫ  i   go!	@t   CStructc           B` s2   e  Z d  e j f d e j f d e j f g Z RS(   RI   RQ   RR   (   R#   R$   t   ctypest   c_int32t   c_int16t   c_doublet   _fields_(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR}     s   i    (   R   R   R   R   R   R'   R~   t	   Structuret   c_void_pR   RY   t   castt   POINTERR.   RI   RQ   RR   (   R!   R/   R|   t   stR}   R   t   cstruct(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_c_structure  s    	


c         C` sl   |  j    } | d d  } t d    } |  j t   } | | |  Wd  QX|  j d t | j   d  S(   Ni   i   c         S` s
   |  | k S(   N(    (   RI   RQ   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   do_is.  s    s   no default `is` implementation(   RE   R   R6   R   R8   R9   R:   (   R!   t   Vectort   vec_aR   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_is*  s    c         C` s/   |  j    } | d d  } |  j | |  d  S(   Ni   i   (   RE   t   assertIsInstance(   R!   RD   RJ   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_isinstance7  s    c         C` sW   |  j    } |  j t   } d | f d     Y} Wd  QX|  j t | j  d  d  S(   Nt   SubVc           B` s   e  Z RS(    (   R#   R$   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   ?  s   s   cannot subclass from a jitclass(   RE   R6   R7   R.   R9   R:   (   R!   RD   R=   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_subclassing<  s
    c         C` sg   d t  f d     Y} t d t f g  d | f d     Y } | d  } |  j | j   d  d  S(   Nt   Basec           B` s   e  Z d    Z RS(   c         S` s   |  j  S(   N(   t   attr(   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   whatG  s    (   R#   R$   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   E  s   R   R    c           B` s   e  Z d    Z RS(   c         S` s   | |  _  d  S(   N(   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   M  s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR    J  s   i{   (   R'   R   R   R.   R   (   R!   R   R    RG   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_base_classD  s
    c         C` s[   d t  f d     Y} |  j t   } t d  |  Wd  QX|  j t | j  d  d  S(   Nt   Minec           B` s   e  Z d  Z d   Z RS(   i{   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   X  s    (   R#   R$   t   constantR"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   U  s   s-   class members are not yet supported: constant(    (   R'   R6   R7   R   R.   R9   R:   (   R!   R   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_globalsS  s
    c         C` s   t  d t f g  d t f d     Y } | d  } |  j | j d  |  j | j d	  d | _ |  j | j d
  |  j | j d  t d    } | | d  \ } } } |  j | d  |  j | d  |  j | d  d  S(   NR   Rd   c           B` s2   e  Z d    Z e d    Z e j d    Z RS(   c         S` s   | |  _  d  S(   N(   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   f  s    c         S` s   |  j  d S(   Ni   (   R   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   valuei  s    c         S` s   | d |  _  d  S(   Ni   (   R   (   R!   RA   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   m  s    (   R#   R$   R"   t   propertyR   t   setter(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd   c  s   	i{   i   i  c         S` s1   |  j  } | |  _  |  j  } |  j } | | | f S(   N(   R   R   (   RK   RA   RI   RQ   RR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRH   {  s
    				i7  i|   i  i6  (   R   R   R'   R.   R   R   R   (   R!   Rd   RK   RH   RI   RQ   RR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_user_getter_settera  s    	c         C` s[   d t  f d     Y} |  j t   } t g   |  Wd  QX|  j t | j  d  d  S(   NRd   c           B` s2   e  Z d    Z e d    Z e j d    Z RS(   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   d S(   Ni   (    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    (   R#   R$   R"   R   R   t   deleter(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd     s   	s   deleter is not supported: value(   R'   R6   R7   R   R.   R9   R:   (   R!   Rd   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_user_deleter_error  s
    c         C` s   d t  f d     Y} |  j t    } t d t f g  |  Wd  QX|  j t | j  d  |  j t    } t d t f g  |  Wd  QX|  j t | j  d  d  S(   NRd   c           B` s)   e  Z d    Z e d    Z d   Z RS(   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   my_property  s    c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt	   my_method  s    (   R#   R$   R"   R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd     s   	R   s   name shadowing: my_propertyR   s   name shadowing: my_method(   R'   R6   t	   NameErrorR   R   R.   R9   R:   (   R!   Rd   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_name_shadowing_error  s    c         C` s   t  d t f g  d t f d     Y } | } t  d t f g  d t f d     Y } | } | d  } |  j | j d  |  j | j   d  | d  } |  j | j d  |  j | j   d	  d  S(
   NR%   Rd   c           B` s   e  Z d    Z d   Z RS(   c         S` s   | d |  _  d  S(   Ni   (   R%   (   R!   R%   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   |  j  d S(   Ni   (   R%   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   run  s    (   R#   R$   R"   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd     s   	c           B` s   e  Z d    Z d   Z RS(   c         S` s   | d |  _  d  S(   Ni   (   R%   (   R!   R%   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   |  j  d S(   Ni   (   R%   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    (   R#   R$   R"   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRd     s   	i   i   i   i   i   (   R   R   R'   R.   R%   R   (   R!   Rd   t   FirstFoot	   SecondFooRK   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_distinct_classes  s    c         ` s   d t  f d     Y    f d   } | d  } |  j | j d  | d  } |  j | j d  | t j d g   } t j j | j d g  | t j d g   } t j j | j d g  d  S(   Nt   MyClassc           B` s   e  Z d    Z RS(   c         S` s   | |  _  d  S(   N(   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   c         ` s+   t  d t |   f g     } | |   S(   NR   (   R   R   (   R   t   cls(   R   (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   create_my_class  s    !i{   g(@(   R'   R.   R   RM   t   arrayt   testingt   assert_equal(   R!   R   RI   RQ   RR   t   d(    (   R   s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_parameterized  s    c         C` s"  i t  d 6t d 6t  d 6t  d 6} t |  d t f d     Y } d } | |  } |  j | j |  |  j | j | d  |  j | j | d  |  j | j | j  | j } | j d	 8_ |  j | j | d	  |  j | j	 d
  | d  |  j | j	 | d  d
  |  j | j
 d  | j d  |  j | j d  | j d  |  j | j | d	  | j d 8_ |  j | j | d  t d    } |  j t j   } | |  Wd  QX|  j d t | j   |  j t   } | j |  Wd  QX|  j d t | j   d  S(   NR   t   _valuet   __valuet	   __value__R   c           B` s   e  Z d    Z e d    Z e d    Z e j d    Z e d    Z e j d    Z d   Z d   Z	 d   Z
 d	   Z RS(
   c         S` s4   | |  _  | d |  _ | d |  _ | d |  _ d  S(   Ni   i   (   R   R   t   _MyClass__valueR   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    	c         S` s   |  j  S(   N(   R   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   private_value  s    c         S` s   |  j  S(   N(   R   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _inner_value  s    c         S` s   | |  _  d  S(   N(   R   (   R!   t   v(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    c         S` s   |  j  S(   N(   R   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   __private_value  s    c         S` s   | |  _  d  S(   N(   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    c         S` s   |  j  } | |  _  | S(   N(   t   _MyClass__private_value(   R!   t   newt   old(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   swap_private_value
  s    		c         S` s   |  j  | S(   N(   R   (   R!   t   factor(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   _protected_method  s    c         S` s   |  j  | S(   N(   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   __private_method  s    c         S` s   |  j  |  S(   N(   t   _MyClass__private_method(   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   check_private_method  s    (   R#   R$   R"   R   R   R   R   R   R   R   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   				i{   i   i   iA  i   id   ie   c         S` s   |  j  S(   N(   t   _TestJitClass__value(   t   inst(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   access_dunder/  s    R   (   R   R   R   R'   R.   R   R   R   R   R   R   R   R   R   R6   R   t   TypingErrorR8   R9   R:   t   AttributeErrort   py_func(   R!   R/   R   R   R   t   freeze_inst_valueR   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_protected_attrs  s<    
*	  i   s   Python 3-specific testc         C` sk   d d l  m } i t d 6} t |  |  } | d  } |  j | j d  |  j | j d  d  d S(   sM   
        Methods with annotations should compile fine (issue #1911).
        i   (   t   AnnotatedClassR%   i   i   i   N(   t   annotation_usecasesR   R   R   R.   R%   RB   (   R!   R   R/   R   RG   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_annotations=  s    c         C` s{   t  g   d t f d     Y } |  j | j d  |  j | j j d  |  j | j j d  |  j | j j d  d  S(   Nt   Applec           B` s/   e  Z d  Z d   Z d   Z e d    Z RS(   s   Class docstringc         S` s   d S(   s   init docstringN(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   P  t    c         S` s   d S(   s   foo method docstringN(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyRK   S  R   c         S` s   d S(   s   aval property docstringN(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   avalV  R   (   R#   R$   t   __doc__R"   RK   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   M  s   		s   Class docstrings   init docstrings   foo method docstrings   aval property docstring(   R   R'   R.   R   R"   RK   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_docstringK  s    c         C` s   d t  f d t f g } t |  d t f d     Y } d } d } d } i | d 6| d 6} | d	 d |  } |  j | j | |  |  j | j |  d  S(
   NRI   RQ   t	   TestClassc           B` s   e  Z d    Z RS(   c         S` s   | | |  _  | |  _ d  S(   N(   RI   RQ   (   R!   R%   R&   t   z(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   e  s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   c  s   i   g?R&   R   R%   (   R   R   R   R'   R.   RI   RQ   (   R!   R/   R   R%   R&   R   t   kwargst   tc(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_kwargs_  s    	c         C` s.  d t  f d t  f d t  f g } t |  d t f d     Y } | d d d  } |  j | j d  |  j | j d  |  j | j d  | d d  } |  j | j d  |  j | j d  |  j | j d  | d d d d	 d d  } |  j | j d  |  j | j d  |  j | j d	  d  S(
   NR%   R&   R   R   c           B` s   e  Z d  d  Z RS(   i   c         S` s   | |  _  | |  _ | |  _ d  S(   N(   R%   R&   R   (   R!   R%   R&   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   x  s    		(   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   v  s   i   i   i   i   (   R   R   R'   R.   R%   R&   R   (   R!   R/   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_default_argsq  s"    		c      	   C` s  d t  f d t  f d t  f d t  f g } t |  t  } | d d  } |  j | j d  |  j | j d  |  j | j d  |  j | j d  | d d	 d d d d
 d d  } |  j | j d  |  j | j d	  |  j | j d  |  j | j d
  | d d	 d d d d
  } |  j | j d  |  j | j d	  |  j | j d  |  j | j d
  | d d	 d d  } |  j | j d  |  j | j d	  |  j | j d  |  j | j d  d  S(   NR%   R&   R   RI   i   i   i   i   i   i*   id   (   R   R   R   R.   R%   R&   R   RI   (   R!   R/   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_default_args_keyonly  s2    			!c         C` s   d t  f d t  f d t  f d t j t  d  f d t  f g } |  j t j   } t |  t  Wd  QXd } |  j | t	 | j
   d  S(   NR%   R&   R   t   argsi   RI   s(   VAR_POSITIONAL argument type unsupported(   R   R   t   UniTupleR6   R   t   UnsupportedErrorR   R   R8   R9   R:   (   R!   R/   R=   t   msg(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt&   test_default_args_starargs_and_keyonly  s    			c         C` s   g  } t  |  d t f d     Y } d   } xV t d  D]H } x? t | |  |   j |   D] \ } } |  j | |  qf Wq> Wd  S(   NR   c           B` s   e  Z d    Z d   Z RS(   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         s` s)   x" t  |  D] } t j |  Vq Wd  S(   N(   t   rangeRM   RV   (   R!   t   nitert   i(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   gen  s    (   R#   R$   R"   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   	c         s` s)   x" t  |   D] } t j |  Vq Wd  S(   N(   R   RM   RV   (   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   expected_gen  s    i
   (   R   R'   R   t   zipR   RO   (   R!   R/   R   R   R   t   expectt   got(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_generator_method  s    	.c         ` s   d t  f g } t |  d t f d     Y   t   f d    } t d    } |   } |  j | | d  d  |  j | | d  d  |  j | | d  d  d  S(	   NRX   R   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   t  j d d t  j |  _ d  S(   Ni
   RL   (   RM   t   zerosR   RX   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   | |  j  | <d  S(   N(   RX   (   R!   t   keyRX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   __setitem__  s    c         S` s   |  j  | S(   N(   RX   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   __getitem__  s    (   R#   R$   R"   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   		c          ` s+       }  d |  d <d |  d <d |  d <|  S(   Ni   i   i   (    (   t   t(   R   (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   create_and_set_indices  s
    	


c         S` s   |  | S(   N(    (   R   t   n(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt	   get_index  s    i   i   i   (   R   R   R'   R   R.   (   R!   R/   R   R   R   (    (   R   s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_getitem  s    
	c         C` s   d t  f g } t |  d t f d     Y } |   } d | d <t d    } | |  } |  j | d  |  j | d d  d  S(	   NRX   R   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   t  j d d t  j |  _ d  S(   Ni
   RL   (   RM   R   R   RX   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s   | |  j  | <d  S(   N(   RX   (   R!   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    c         S` s   |  j  | S(   N(   RX   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    (   R#   R$   R"   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   		i
   i   c         S` s   d |  d <|  d S(   Ni   i   i   (    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   set2return1  s    
i   i   (   R   R   R'   R   R.   (   R!   R/   R   R   R   t   t_1(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_getitem_unbox  s    
	
c         C` s   d t  d  d   d  d   f f g } t |  d t f d     Y } |   } d | t d d  <t d    } t d    } |  j | | d d  d  | | d d d	  |  j | t d d  d	  d  S(
   NRX   R   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   t  j d d t  j |  _ d  S(   Ni
   RL   (   i
   i
   (   RM   R   R   RX   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    c         S` s)   | |  j  t | j  t | j  f <d  S(   N(   RX   R5   t   realt   imag(   R!   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    c         S` s#   |  j  t | j  t | j  f S(   N(   RX   R5   R   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s    (   R#   R$   R"   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR     s   		i   i   c         S` s   |  t  | |  S(   N(   t   complex(   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   get_key  s    c         S` s   | |  t  | |  <d  S(   N(   R   (   R   R   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   set_key  s    i   i   (   R   R   R'   R   R   R.   (   R!   R/   R   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_getitem_complex_key  s    %
	c         C` s   d t  d  d   d  d   f f g } t |  d t f d     Y } |   } d | d
 <t d    } t d    } |  j | |  d  | | d  |  j | d d  d  S(   NRX   R   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   t  j d d t  j |  _ d  S(   Ni
   RL   (   i
   i
   (   RM   R   R   RX   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   +  s    c         S` s   | |  j  | d | d f <d  S(   Ni    i   (   RX   (   R!   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   .  s    c         S` s   |  j  | d | d f S(   Ni    i   (   RX   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   1  s    (   R#   R$   R"   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   )  s   		i   i   c         S` s   |  d S(   Ni   (   i   i   (    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   get117  s    c         S` s   | |  d <d  S(   Ni   (   i   i   (    (   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   set22;  s    i   i   (   i   i   (   i   i   (   R   R   R'   R   R.   (   R!   R/   R   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_getitem_tuple_key&  s    %
	
c         C` s  d t  f g } t |  d t f d     Y } |   } d | d d d  <|  j | d d d  d  |  j | d d d  d  t d    } |  j | |  d  t d    } | | d  |  j | d d d  d  |  j | d	 d	 d  d
  d  S(   NRX   R   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   t  j d d t  j |  _ d  S(   Ni
   RL   (   RM   R   R   RX   (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   H  s    c         S` s+   | |  j  | j <| | j |  j  | j <d  S(   N(   RX   t   startt   stept   stop(   R!   t   slcRX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   K  s    c         S` s   |  j  | j S(   N(   RX   R   (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   O  s    (   R#   R$   R"   R   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   F  s   		i   i   i   c         S` s   |  d d d  S(   Ni   i   i   (    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   get5Y  s    c         S` s   | |  d d d  <d  S(   Ni   i   i   (    (   R   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   set26`  s    i   i   (   R   R   R'   R.   R   (   R!   R/   R   R   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_getitem_slice_keyC  s    	c         C` s   g  t  d  D] } t t d  |  ^ q } g  | D] } | d t f ^ q6 } | j g  | D] } | j   d t f ^ q_  t |  d t f d     Y } |   j   d  S(   Ni   RI   i
   t   TruncatedLabelc           B` s#   e  Z d    Z d   Z d   Z RS(   c         S` s   d |  _  d  S(   Ng      $@(   t
   aaaaaaaaaa(   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"   s  s    c         S` s   t  j |  j |  j  |  _ d  S(   N(   t   randomt   gaussR  t
   bbbbbbbbbb(   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   meth1v  s    c         S` s   |  j    d  S(   N(   R  (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   meth2y  s    (   R#   R$   R"   R  R  (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR  q  s   		(	   R   t   chrt   ordR   t   extendt   upperR   R'   R  (   R!   R%   t   alphabett   letterR/   R  (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt%   test_jitclass_longlabel_not_truncatedh  s    /#0c         C` sy   t  d g   d t f d     Y } |   } t |  } |  j | t j  t j |  } |  j t j	 |  |  d  S(   NR/   t   PickleTestSubjectc           B` s   e  Z d    Z RS(   c         S` s   d  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR"     s    (   R#   R$   R"   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR    s   (
   R   R'   R   R   R   t   ClassInstanceTypet   picklet   dumpsR[   t   loads(   R!   R  R   t   tyt   pickled(    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   test_pickling  s    	(   i   (   i   (   i   (+   R#   R$   R2   R3   R4   R>   RC   RE   R   RS   Rc   Ri   R{   R   R   R   R   R   R   R   R   R   R   R   R   t   unittestt   skipIft   syst   version_infoR   R   R   R   R   R   R   R   R   R   R   R   R  R  (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyR   !   sH   						7	?						'				Y$			$!$						%	t   __main__(-   t
   __future__R    R   R   t   collectionsR   R~   R  R  R  t   numpyRM   t   numbaR   R   R   R   R   R	   R
   R   R   R   R   R   R  R   t   supportR   R   R   t   numba.jitclassR   t   numba.runtime.nrtR   t   numba.errorsR   R  t   jitclass_usecasesR   R   R   R   R#   t   main(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_jitclasses.pyt   <module>   s.   4"	   n