
    e                     h    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d Zd Zd	e	d
dfdZy)    )BoundMethod)register_module_extenderparse)InferenceError)AstroidManager)FunctionDefc                     t        d      } t        d      }	 t        |d   j                               }t        |d   j                               }||fD ]\  }|j
                  j                         D ]=  \  }}|j                  d      r|d   }t        |t              rt        ||      }|| |<   ? ^ | S # t        t        f$ r | cY S w xY w)Nzj
    from multiprocessing.managers import SyncManager
    def Manager():
        return SyncManager()
    z
    from multiprocessing.context import DefaultContext, BaseContext
    default = DefaultContext()
    base = BaseContext()
    defaultbase_r   )r   nextinferr   StopIterationlocalsitems
startswith
isinstancer	   r   )modulenodecontextr   keyvalues         E/usr/lib/python3/dist-packages/astroid/brain/brain_multiprocessing.py_multiprocessing_transformr      s    	F 	DtI,,./DL&&() $ 
 ++++- 		 JC~~c"!HE%- $E40F3K		 
  M M* s   8B5 5C	C	c                      t        d      S )Na  
    import array
    import threading
    import multiprocessing.pool as pool
    import queue

    class Namespace(object):
        pass

    class Value(object):
        def __init__(self, typecode, value, lock=True):
            self._typecode = typecode
            self._value = value
        def get(self):
            return self._value
        def set(self, value):
            self._value = value
        def __repr__(self):
            return '%s(%r, %r)'%(type(self).__name__, self._typecode, self._value)
        value = property(get, set)

    def Array(typecode, sequence, lock=True):
        return array.array(typecode, sequence)

    class SyncManager(object):
        Queue = JoinableQueue = queue.Queue
        Event = threading.Event
        RLock = threading.RLock
        Lock = threading.Lock
        BoundedSemaphore = threading.BoundedSemaphore
        Condition = threading.Condition
        Barrier = threading.Barrier
        Pool = pool.Pool
        list = list
        dict = dict
        Value = Value
        Array = Array
        Namespace = Namespace
        __enter__ = lambda self: self
        __exit__ = lambda *args: args

        def start(self, initializer=None, initargs=None):
            pass
        def shutdown(self):
            pass
    r        r   #_multiprocessing_managers_transformr   3   s    -	/ /r   managerreturnNc                 H    t        | dt               t        | dt               y )Nzmultiprocessing.managersmultiprocessing)r   r   r   )r    s    r   registerr$   f   s#    +-P W&79STr   )astroid.basesr   astroid.brain.helpersr   astroid.builderr   astroid.exceptionsr   astroid.managerr   astroid.nodes.scoped_nodesr	   r   r   r$   r   r   r   <module>r+      s;   
 & : ! - * 2#L0fUn U Ur   