ó
­«Y]c           @   sû   d  d l  Z  d  d l m Z d  d l m Z d  d l Z d  d l Z e j d ƒ Z	 e j d ƒ Z
 d  d l Z d e f d „  ƒ  YZ d „  Z d	 d d
 „  ƒ  YZ d e  j e f d „  ƒ  YZ d e  j e f d „  ƒ  YZ d „  Z e d k r÷ e ƒ  n  d S(   iÿÿÿÿN(   t   DocTestSuite(   t   test_supportt   threadt	   threadingt   Weakc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s*   lib/python2.7/test/test_threading_local.pyR      s   c         C   s,   t  ƒ  } | |  _ | j t j | ƒ ƒ d  S(   N(   R   t   weakt   appendt   weakreft   ref(   t   localt   weaklistR   (    (    s*   lib/python2.7/test/test_threading_local.pyt   target   s    		t   BaseLocalTestc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s+   |  j  d ƒ |  j  d ƒ |  j  d ƒ d  S(   Ni   i2   id   (   t   _local_refs(   t   self(    (    s*   lib/python2.7/test/test_threading_local.pyt   test_local_refs   s    c         C   s4  |  j  ƒ  } g  } xF t | ƒ D]8 } t j d t d | | f ƒ } | j ƒ  | j ƒ  q W~ t j ƒ  |  j	 t
 | ƒ | ƒ g  | D] } | ƒ  d  k r… | ^ q… } |  j t
 | ƒ | d | f ƒ d  | _ t j ƒ  g  | D] } | ƒ  d  k rà | ^ qà } |  j t
 | ƒ | d | f | t
 | ƒ f ƒ d  S(   NR   t   argsi   (   t   _localt   rangeR   t   ThreadR   t   startt   joint   gct   collectt   assertEqualt   lent   Nonet   assertInt   someothervar(   R   t   nR   R   t   it   tR   t   deadlist(    (    s*   lib/python2.7/test/test_threading_local.pyR      s    

( 	
(c            sv   d d  l  ‰ d ˆ j f ‡ f d †  ƒ  Y} | ƒ  ‰ ‡ ‡ f d †  ‰  t j ‡  f d †  t d ƒ Dƒ ƒ  Wd  QXd  S(   Niÿÿÿÿt   Localc              s   e  Z ‡  f d  †  Z RS(   c            s   ˆ  j  d ƒ d  S(   Ng{®Gáz„?(   t   sleep(   R   (   t   time(    s*   lib/python2.7/test/test_threading_local.pyt   __init__9   s    (   R   R   R&   (    (   R%   (    s*   lib/python2.7/test/test_threading_local.pyR#   8   s   c            s    |  ˆ  _  ˆ j ˆ  j  |  ƒ d  S(   N(   t   xR   (   R    (   R   R   (    s*   lib/python2.7/test/test_threading_local.pyt   f=   s    	c         3   s*   |  ]  } t  j d  ˆ  d | f ƒ Vq d S(   R   R   N(   R   R   (   t   .0R    (   R(   (    s*   lib/python2.7/test/test_threading_local.pys	   <genexpr>B   s   i
   (   R%   R   t   supportt   start_threadsR   (   R   R#   (    (   R(   R   R   R%   s*   lib/python2.7/test/test_threading_local.pyt   test_derived2   s    	c            sÌ   d |  j  f d „  ƒ  Y‰  d  ‰ t g ‰ t j ƒ  ‰ t j ƒ  ‰ ‡  ‡ ‡ ‡ ‡ f d †  } t j d | ƒ } | j ƒ  ˆ j ƒ  g  t d ƒ D] } ˆ  ƒ  ^ qŽ ‰ ˆ j	 ƒ  | j
 ƒ  |  j ˆ d ƒ d  S(   NR#   c           B   s   e  Z RS(    (   R   R   (    (    (    s*   lib/python2.7/test/test_threading_local.pyR#   H   s   c             se   ˆ  ƒ  g }  |  j  |  ƒ d |  d _ ~  t j ƒ  ˆ j ƒ  ˆ j ƒ  t d „  ˆ Dƒ ƒ ˆ d <d  S(   Nt   bari    c         s   s   |  ] } t  | d  ƒ Vq d S(   t   fooN(   t   hasattr(   R)   R   (    (    s*   lib/python2.7/test/test_threading_local.pys	   <genexpr>]   s    (   R   R.   R   R   t   sett   waitt   all(   t   cycle(   R#   t   e1t   e2t   localst   passed(    s*   lib/python2.7/test/test_threading_local.pyR(   O   s    


R   i
   i    (   R   R   t   FalseR   t   EventR   R   R1   R   R0   R   t
   assertTrue(   R   R(   R!   R    (    (   R#   R4   R5   R6   R7   s*   lib/python2.7/test/test_threading_local.pyt   test_derived_cycle_deallocF   s    	

"

c         C   s‘   d d l  m } d d l m } xj | | f D]\ } d | f d „  ƒ  Y} | d d ƒ | d ƒ |  j t | d d ƒ|  j t | d ƒ q- Wd  S(   Niÿÿÿÿ(   R   (   R   t   MyLocalc           B   s   e  Z d  „  Z RS(   c         _   s   d  S(   N(    (   R   R   t   kwargs(    (    s*   lib/python2.7/test/test_threading_local.pyR&   s   s    (   R   R   R&   (    (    (    s*   lib/python2.7/test/test_threading_local.pyR<   r   s   t   ai   (   R   R   t   _threading_localR   t   assertRaisest	   TypeError(   R   R   t   py_localt   clsR<   (    (    s*   lib/python2.7/test/test_threading_local.pyt   test_argumentsl   s    
c            sÎ   d ˆ _  ˆ  ƒ  ‰ t j ƒ  ‰ t j ƒ  ‰ ‡ ‡ ‡ f d †  } ‡  ‡ ‡ f d †  } t j d | ƒ } | j ƒ  ˆ j ƒ  t j d | ƒ } | j ƒ  | j ƒ  ˆ j ƒ  | j ƒ  ˆ j ˆ j  ˆ j  ƒ d  S(   Ns    No error message set or cleared.c              s0   d ˆ _  d ˆ _ ˆ ` ˆ  j ƒ  ˆ j ƒ  d  S(   NR.   R-   (   R'   t   yR0   R1   (    (   R4   R5   t   obj(    s*   lib/python2.7/test/test_threading_local.pyt   f1   s
    		
c             sT   y ˆ j  }  Wn t k
 r) d ˆ _ n' Xd |  ˆ  f ˆ _ t j j ˆ j ƒ d  S(   Nt    s'   Incorrectly got value %r from class %r
(   R'   t   AttributeErrort   _failedt   syst   stderrt   write(   R.   (   t   cRF   R   (    s*   lib/python2.7/test/test_threading_local.pyt   f2ˆ   s    R   (	   RJ   R   R9   R   R   R1   R   R0   t   assertFalse(   R   RN   RG   RO   t   t1t   t2(    (   RN   R4   R5   RF   R   s*   lib/python2.7/test/test_threading_local.pyt   _test_one_class{   s    		





c         C   s   |  j  |  j ƒ d  S(   N(   RS   R   (   R   (    (    s*   lib/python2.7/test/test_threading_local.pyt   test_threading_localŸ   s    c         C   s*   d |  j  f d „  ƒ  Y} |  j | ƒ d  S(   Nt   LocalSubclassc           B   s   e  Z d  Z RS(   s(   To test that subclasses behave properly.(   R   R   t   __doc__(    (    (    s*   lib/python2.7/test/test_threading_local.pyRU   £   s   (   R   RS   (   R   RU   (    (    s*   lib/python2.7/test/test_threading_local.pyt   test_threading_local_subclass¢   s    c         C   sk   | ƒ  } d | _  |  j | j i d d 6ƒ |  j t ƒ  i  | _ Wd  QX|  j t ƒ  | ` Wd  QXd  S(   Ni   R'   (   R'   R   t   __dict__R@   RI   (   R   RC   RF   (    (    s*   lib/python2.7/test/test_threading_local.pyt   _test_dict_attribute§   s    		c         C   s   |  j  |  j ƒ d  S(   N(   RY   R   (   R   (    (    s*   lib/python2.7/test/test_threading_local.pyt   test_dict_attribute°   s    c         C   s*   d |  j  f d „  ƒ  Y} |  j | ƒ d  S(   NRU   c           B   s   e  Z d  Z RS(   s(   To test that subclasses behave properly.(   R   R   RV   (    (    (    s*   lib/python2.7/test/test_threading_local.pyRU   ´   s   (   R   RY   (   R   RU   (    (    s*   lib/python2.7/test/test_threading_local.pyt   test_dict_attribute_subclass³   s    (   R   R   R   R   R,   R;   RD   RS   RT   RW   RY   RZ   R[   (    (    (    s*   lib/python2.7/test/test_threading_local.pyR      s   				&		$					t   ThreadLocalTestc           B   s   e  Z e j Z d  „  Z RS(   c         C   sg   d d d „  ƒ  Y} | ƒ  } |  j  ƒ  | _ | | j _ t j | ƒ } ~ t j ƒ  |  j | ƒ  ƒ d  S(   Nt   Xc           B   s   e  Z RS(    (   R   R   (    (    (    s*   lib/python2.7/test/test_threading_local.pyR]   ¾   s   (    (   R   R   R'   R	   R
   R   R   t   assertIsNone(   R   R]   R'   t   wr(    (    s*   lib/python2.7/test/test_threading_local.pyt   test_cycle_collection½   s    	
(   R   R   t   _threadR   R`   (    (    (    s*   lib/python2.7/test/test_threading_local.pyR\   ¹   s   	t   PyThreadingLocalTestc           B   s   e  Z e j Z RS(    (   R   R   R?   R   R   (    (    (    s*   lib/python2.7/test/test_threading_local.pyRb   É   s   c             sÜ   t  j ƒ  }  |  j t d ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ y d d l m ‰  Wn t	 k
 rr nY Xd d  l
 ‰ ˆ j ‰ ‡  ‡ f d †  } ‡ ‡ f d †  } |  j t d d | d | ƒƒ t j |  ƒ d  S(   NR?   iÿÿÿÿ(   R   c            s   ˆ  ˆ _  d  S(   N(   R   (   t   test(   R   R?   (    s*   lib/python2.7/test/test_threading_local.pyt   setUpÚ   s    c            s   ˆ ˆ  _  d  S(   N(   R   (   Rc   (   R?   t
   local_orig(    s*   lib/python2.7/test/test_threading_local.pyt   tearDownÜ   s    Rd   Rf   (   t   unittestt	   TestSuitet   addTestR    t	   makeSuiteR\   Rb   R   R   t   ImportErrorR?   R   R*   t   run_unittest(   t   suiteRd   Rf   (    (   R   R?   Re   s*   lib/python2.7/test/test_threading_local.pyt	   test_mainÍ   s    	t   __main__(    (   Rg   t   doctestR    Rc   R   R*   R	   R   t   import_moduleRa   R   R?   t   objectR   R   R   t   TestCaseR\   Rb   Rn   R   (    (    (    s*   lib/python2.7/test/test_threading_local.pyt   <module>   s   	¤	