ó
8Þ	Pc           @   s·  d  d l  Z  d  d l Z d  d l Z d  d l m Z m Z d  d l m Z m Z d d d d d d	 g Z	 i e j
 d
 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z  d „  Z! d  Z" i  Z# e j$ ƒ  Z% d! e& f d" „  ƒ  YZ' d# e' f d$ „  ƒ  YZ( d% e' f d& „  ƒ  YZ) d' e) f d( „  ƒ  YZ* d S()   iÿÿÿÿN(   t   heapt   RLock(   t   assert_spawningt   ForkingPicklert   RawValuet   RawArrayt   Valuet   Arrayt   copyt   synchronizedt   ct   ut   bt   Bt   ht   Ht   it   It   lt   Lt   ft   dc         C   s.   t  j |  ƒ } t j | ƒ } t |  | d  ƒ S(   N(   t   ctypest   sizeofR    t   BufferWrappert   rebuild_ctypet   None(   t   type_t   sizet   wrapper(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt
   _new_value=   s    c         G   sT   t  j |  |  ƒ } t | ƒ } t j t j | ƒ d t j | ƒ ƒ | j | Œ  | S(   s>   
    Returns a ctypes object allocated from shared memory
    i    (   t   typecode_to_typet   getR   R   t   memsett	   addressofR   t   __init__(   t   typecode_or_typet   argsR   t   obj(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR   B   s
    %c         C   s—   t  j |  |  ƒ } t | t t f ƒ rf | | } t | ƒ } t j t j | ƒ d t j	 | ƒ ƒ | S| t
 | ƒ } t | ƒ } | j | Œ  | Sd S(   s=   
    Returns a ctypes array allocated from shared memory
    i    N(   R   R    t
   isinstancet   intt   longR   R   R!   R"   R   t   lenR#   (   R$   t   size_or_initializerR   R&   t   result(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR   L   s    
%c         O   s   | j  d d ƒ } | r1 t d | j ƒ  ƒ ‚ n  t |  | Œ } | t k rP | S| t d f k rn t ƒ  } n  t | d ƒ s t	 d | ƒ ‚ n  t
 | | ƒ S(   s6   
    Return a synchronization wrapper for a Value
    t   locks$   unrecognized keyword argument(s): %st   acquires   '%r' has no method 'acquire'N(   t   popR   t
   ValueErrort   keysR   t   Falset   TrueR   t   hasattrt   AttributeErrorR	   (   R$   R%   t   kwdsR-   R&   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR   \   s    c         K   s   | j  d d ƒ } | r1 t d | j ƒ  ƒ ‚ n  t |  | ƒ } | t k rP | S| t d f k rn t ƒ  } n  t | d ƒ s t	 d | ƒ ‚ n  t
 | | ƒ S(   s9   
    Return a synchronization wrapper for a RawArray
    R-   s$   unrecognized keyword argument(s): %sR.   s   '%r' has no method 'acquire'N(   R/   R   R0   R1   R   R2   R3   R   R4   R5   R	   (   R$   R+   R6   R-   R&   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR   l   s    c         C   s)   t  t |  ƒ ƒ } |  t j | ƒ d <| S(   Ni    (   R   t   typeR   t   pointer(   R&   t   new_obj(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR   |   s    c         C   s  t  |  t ƒ s t d ‚ t  |  t j ƒ r8 t |  | ƒ St  |  t j ƒ rv |  j t j k ri t	 |  | ƒ St
 |  | ƒ St |  ƒ } y t | } Wnq t k
 rg  | j D] } | d ^ qª } t d „  | Dƒ ƒ } d | j } t | t f | ƒ } t | <n X| |  | ƒ Sd  S(   Ns   object already synchronizedi    c         s   s!   |  ] } | t  | ƒ f Vq d  S(   N(   t   make_property(   t   .0t   name(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pys	   <genexpr>   s    t   Synchronized(   R'   t   SynchronizedBaset   AssertionErrorR   t   _SimpleCDataR=   R   t   _type_t   c_chart   SynchronizedStringt   SynchronizedArrayR7   t   class_cachet   KeyErrort   _fields_t   dictt   __name__(   R&   R-   t   clst   sclst   fieldt   namesR   t	   classname(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR	      s      !c         C   sX   t  |  ƒ t |  t j ƒ r8 t |  j |  j |  j f f St t |  ƒ |  j d  f f Sd  S(   N(
   R   R'   R   R   R   RA   t   _wrappert   _length_R7   R   (   R&   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   reduce_ctype™   s    
c         C   sK   | d  k	 r |  | }  n  t j |  t ƒ |  j | j ƒ  ƒ } | | _ | S(   N(   R   R   t   registerRQ   t   from_addresst   get_addressRO   (   R   R   t   lengthR&   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR       s    	c         B   sP   y e  |  SWn= e k
 rK i  } e |  f d | U| |  e  |  <| |  SXd  S(   Ni   (   t
   prop_cacheRF   t   template(   R<   R   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR:   ¬   s    sÿ   
def get%s(self):
    self.acquire()
    try:
        return self._obj.%s
    finally:
        self.release()
def set%s(self, value):
    self.acquire()
    try:
        self._obj.%s = value
    finally:
        self.release()
%s = property(get%s, set%s)
R>   c           B   s8   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s=   | |  _  | p t ƒ  |  _ |  j j |  _ |  j j |  _ d  S(   N(   t   _objR   t   _lockR.   t   release(   t   selfR&   R-   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR#   Î   s    	c         C   s    t  |  ƒ t |  j |  j f f S(   N(   R   R	   RX   RY   (   R[   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt
   __reduce__Ô   s    
c         C   s   |  j  S(   N(   RX   (   R[   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   get_objØ   s    c         C   s   |  j  S(   N(   RY   (   R[   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   get_lockÛ   s    c         C   s   d t  |  ƒ j |  j f S(   Ns   <%s wrapper for %s>(   R7   RI   RX   (   R[   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __repr__Þ   s    N(   RI   t
   __module__R   R#   R\   R]   R^   R_   (    (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR>   Ì   s
   			R=   c           B   s   e  Z e d  ƒ Z RS(   t   value(   RI   R`   R:   Ra   (    (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyR=   â   s   RD   c           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  |  j ƒ S(   N(   R*   RX   (   R[   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __len__è   s    c         C   s+   |  j  ƒ  z |  j | SWd  |  j ƒ  Xd  S(   N(   R.   RX   RZ   (   R[   R   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __getitem__ë   s    
c         C   s-   |  j  ƒ  z | |  j | <Wd  |  j ƒ  Xd  S(   N(   R.   RX   RZ   (   R[   R   Ra   (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __setitem__ò   s    
c         C   s.   |  j  ƒ  z |  j | | !SWd  |  j ƒ  Xd  S(   N(   R.   RX   RZ   (   R[   t   startt   stop(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __getslice__ù   s    
c         C   s0   |  j  ƒ  z | |  j | | +Wd  |  j ƒ  Xd  S(   N(   R.   RX   RZ   (   R[   Re   Rf   t   values(    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   __setslice__   s    
(   RI   R`   Rb   Rc   Rd   Rg   Ri   (    (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyRD   æ   s
   				RC   c           B   s    e  Z e d  ƒ Z e d ƒ Z RS(   Ra   t   raw(   RI   R`   R:   Ra   Rj   (    (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyRC     s   (+   t   sysR   t   weakreft   multiprocessingR    R   t   multiprocessing.forkingR   R   t   __all__RB   t   c_wchart   c_bytet   c_ubytet   c_shortt   c_ushortt   c_intt   c_uintt   c_longt   c_ulongt   c_floatt   c_doubleR   R   R   R   R   R   R   R   R	   RQ   R   R:   RW   RV   t   WeakKeyDictionaryRE   t   objectR>   R=   RD   RC   (    (    (    s2   /usr/lib/python2.7/multiprocessing/sharedctypes.pyt   <module>#   s:   		
							"