ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     __init__.py                                                                                         0000644                 00000005765 15155762120 0006676 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       #
# Support for the API of the multiprocessing package using threads
#
# multiprocessing/dummy/__init__.py
#
# Copyright (c) 2006-2008, R Oudkerk
# Licensed to PSF under a Contributor Agreement.
#

__all__ = [
    'Process', 'current_process', 'active_children', 'freeze_support',
    'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Condition',
    'Event', 'Barrier', 'Queue', 'Manager', 'Pipe', 'Pool', 'JoinableQueue'
    ]

#
# Imports
#

import threading
import sys
import weakref
import array

from .connection import Pipe
from threading import Lock, RLock, Semaphore, BoundedSemaphore
from threading import Event, Condition, Barrier
from queue import Queue

#
#
#

class DummyProcess(threading.Thread):

    def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
        threading.Thread.__init__(self, group, target, name, args, kwargs)
        self._pid = None
        self._children = weakref.WeakKeyDictionary()
        self._start_called = False
        self._parent = current_process()

    def start(self):
        if self._parent is not current_process():
            raise RuntimeError(
                "Parent is {0!r} but current_process is {1!r}".format(
                    self._parent, current_process()))
        self._start_called = True
        if hasattr(self._parent, '_children'):
            self._parent._children[self] = None
        threading.Thread.start(self)

    @property
    def exitcode(self):
        if self._start_called and not self.is_alive():
            return 0
        else:
            return None

#
#
#

Process = DummyProcess
current_process = threading.current_thread
current_process()._children = weakref.WeakKeyDictionary()

def active_children():
    children = current_process()._children
    for p in list(children):
        if not p.is_alive():
            children.pop(p, None)
    return list(children)

def freeze_support():
    pass

#
#
#

class Namespace(object):
    def __init__(self, /, **kwds):
        self.__dict__.update(kwds)
    def __repr__(self):
        items = list(self.__dict__.items())
        temp = []
        for name, value in items:
            if not name.startswith('_'):
                temp.append('%s=%r' % (name, value))
        temp.sort()
        return '%s(%s)' % (self.__class__.__name__, ', '.join(temp))

dict = dict
list = list

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

class Value(object):
    def __init__(self, typecode, value, lock=True):
        self._typecode = typecode
        self._value = value

    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, value):
        self._value = value

    def __repr__(self):
        return '<%s(%r, %r)>'%(type(self).__name__,self._typecode,self._value)

def Manager():
    return sys.modules[__name__]

def shutdown():
    pass

def Pool(processes=None, initializer=None, initargs=()):
    from ..pool import ThreadPool
    return ThreadPool(processes, initializer, initargs)

JoinableQueue = Queue
           __pycache__/__init__.cpython-38.opt-1.pyc                                                           0000644                 00000007501 15155762120 0014111 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d                     @   s  d ddddddddd	d
dddddgZ ddlZddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZ G dd dejZeZejZe e _dd Zdd ZG dd deZeZeZd'ddZG d d! d!eZd"d Zd#d$ Z d(d&dZ!eZ"dS ))Processcurrent_processactive_childrenfreeze_supportLockRLock	SemaphoreBoundedSemaphore	ConditionEventBarrierQueueManagerPipePoolJoinableQueue    N   )r   )r   r   r   r   )r
   r	   r   )r   c                   @   s4   e Zd Zddddi fddZdd Zedd ZdS )	DummyProcessN c                 C   s8   t j| ||||| d | _t | _d| _t | _	d S )NF)
	threadingThread__init__Z_pidweakrefWeakKeyDictionary	_children_start_calledr   _parent)selfgrouptargetnameargskwargsr   r   6/usr/lib64/python3.8/multiprocessing/dummy/__init__.pyr   $   s
    
zDummyProcess.__init__c                 C   sN   | j t k	r td| j t d| _t| j dr>d | j j| < tj	|  d S )Nz,Parent is {0!r} but current_process is {1!r}Tr   )
r   r   RuntimeErrorformatr   hasattrr   r   r   startr   r   r   r#   r'   +   s     zDummyProcess.startc                 C   s   | j r|  sdS d S d S )Nr   )r   is_aliver(   r   r   r#   exitcode5   s    zDummyProcess.exitcode)__name__
__module____qualname__r   r'   propertyr*   r   r   r   r#   r   "   s   
r   c                  C   s2   t  j} t| D ]}| s| |d  qt| S N)r   r   listr)   pop)Zchildrenpr   r   r#   r   D   s
    c                   C   s   d S r/   r   r   r   r   r#   r   K   s    c                   @   s   e Zd Zdd Zdd ZdS )	Namespacec                K   s   | j | d S r/   )__dict__update)r   kwdsr   r   r#   r   S   s    zNamespace.__init__c                 C   sZ   t | j }g }|D ]$\}}|ds|d||f  q|  d| jjd|f S )N_z%s=%rz%s(%s)z, )	r0   r4   items
startswithappendsort	__class__r+   join)r   r8   Ztempr    valuer   r   r#   __repr__U   s    
zNamespace.__repr__N)r+   r,   r-   r   r?   r   r   r   r#   r3   R   s   r3   Tc                 C   s   t  | |S r/   )array)typecodeZsequencelockr   r   r#   Arraya   s    rC   c                   @   s8   e Zd Zd
ddZedd Zejdd Zdd Zd	S )ValueTc                 C   s   || _ || _d S r/   )	_typecode_value)r   rA   r>   rB   r   r   r#   r   e   s    zValue.__init__c                 C   s   | j S r/   rF   r(   r   r   r#   r>   i   s    zValue.valuec                 C   s
   || _ d S r/   rG   )r   r>   r   r   r#   r>   m   s    c                 C   s   dt | j| j| jf S )Nz<%s(%r, %r)>)typer+   rE   rF   r(   r   r   r#   r?   q   s    zValue.__repr__N)T)r+   r,   r-   r   r.   r>   setterr?   r   r   r   r#   rD   d   s   


rD   c                   C   s
   t jt S r/   )sysmodulesr+   r   r   r   r#   r   t   s    c                   C   s   d S r/   r   r   r   r   r#   shutdownw   s    rL   r   c                 C   s   ddl m} || ||S )N   )
ThreadPool)ZpoolrN   )Z	processesZinitializerZinitargsrN   r   r   r#   r   z   s    )T)NNr   )#__all__r   rJ   r   r@   Z
connectionr   r   r   r   r   r
   r	   r   Zqueuer   r   r   r   Zcurrent_threadr   r   r   r   r   objectr3   dictr0   rC   rD   r   rL   r   r   r   r   r   r#   <module>   sN                


                                                                                                                                                                                               __pycache__/__init__.cpython-38.pyc                                                                 0000644                 00000007501 15155762120 0013152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d                     @   s  d ddddddddd	d
dddddgZ ddlZddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZ G dd dejZeZejZe e _dd Zdd ZG dd deZeZeZd'ddZG d d! d!eZd"d Zd#d$ Z d(d&dZ!eZ"dS ))Processcurrent_processactive_childrenfreeze_supportLockRLock	SemaphoreBoundedSemaphore	ConditionEventBarrierQueueManagerPipePoolJoinableQueue    N   )r   )r   r   r   r   )r
   r	   r   )r   c                   @   s4   e Zd Zddddi fddZdd Zedd ZdS )	DummyProcessN c                 C   s8   t j| ||||| d | _t | _d| _t | _	d S )NF)
	threadingThread__init__Z_pidweakrefWeakKeyDictionary	_children_start_calledr   _parent)selfgrouptargetnameargskwargsr   r   6/usr/lib64/python3.8/multiprocessing/dummy/__init__.pyr   $   s
    
zDummyProcess.__init__c                 C   sN   | j t k	r td| j t d| _t| j dr>d | j j| < tj	|  d S )Nz,Parent is {0!r} but current_process is {1!r}Tr   )
r   r   RuntimeErrorformatr   hasattrr   r   r   startr   r   r   r#   r'   +   s     zDummyProcess.startc                 C   s   | j r|  sdS d S d S )Nr   )r   is_aliver(   r   r   r#   exitcode5   s    zDummyProcess.exitcode)__name__
__module____qualname__r   r'   propertyr*   r   r   r   r#   r   "   s   
r   c                  C   s2   t  j} t| D ]}| s| |d  qt| S N)r   r   listr)   pop)Zchildrenpr   r   r#   r   D   s
    c                   C   s   d S r/   r   r   r   r   r#   r   K   s    c                   @   s   e Zd Zdd Zdd ZdS )	Namespacec                K   s   | j | d S r/   )__dict__update)r   kwdsr   r   r#   r   S   s    zNamespace.__init__c                 C   sZ   t | j }g }|D ]$\}}|ds|d||f  q|  d| jjd|f S )N_z%s=%rz%s(%s)z, )	r0   r4   items
startswithappendsort	__class__r+   join)r   r8   Ztempr    valuer   r   r#   __repr__U   s    
zNamespace.__repr__N)r+   r,   r-   r   r?   r   r   r   r#   r3   R   s   r3   Tc                 C   s   t  | |S r/   )array)typecodeZsequencelockr   r   r#   Arraya   s    rC   c                   @   s8   e Zd Zd
ddZedd Zejdd Zdd Zd	S )ValueTc                 C   s   || _ || _d S r/   )	_typecode_value)r   rA   r>   rB   r   r   r#   r   e   s    zValue.__init__c                 C   s   | j S r/   rF   r(   r   r   r#   r>   i   s    zValue.valuec                 C   s
   || _ d S r/   rG   )r   r>   r   r   r#   r>   m   s    c                 C   s   dt | j| j| jf S )Nz<%s(%r, %r)>)typer+   rE   rF   r(   r   r   r#   r?   q   s    zValue.__repr__N)T)r+   r,   r-   r   r.   r>   setterr?   r   r   r   r#   rD   d   s   


rD   c                   C   s
   t jt S r/   )sysmodulesr+   r   r   r   r#   r   t   s    c                   C   s   d S r/   r   r   r   r   r#   shutdownw   s    rL   r   c                 C   s   ddl m} || ||S )N   )
ThreadPool)ZpoolrN   )Z	processesZinitializerZinitargsrN   r   r   r#   r   z   s    )T)NNr   )#__all__r   rJ   r   r@   Z
connectionr   r   r   r   r   r
   r	   r   Zqueuer   r   r   r   Zcurrent_threadr   r   r   r   r   objectr3   dictr0   rC   rD   r   rL   r   r   r   r   r   r#   <module>   sN                


                                                                                                                                                                                               __pycache__/connection.cpython-38.opt-1.pyc                                                         0000644                 00000004766 15155762120 0014523 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d>                     @   sR   d ddgZ ddlmZ dgZG dd deZdd  Zdd	dZG d
d deZdS )ClientListenerPipe    )QueueNc                   @   sB   e Zd ZdddZdd Zdd Zed	d
 Zdd Zdd Z	dS )r   N   c                 C   s   t || _d S N)r   _backlog_queue)selfaddressZfamilyZbacklog r   8/usr/lib64/python3.8/multiprocessing/dummy/connection.py__init__   s    zListener.__init__c                 C   s   t | j  S r   )
Connectionr   getr	   r   r   r   accept   s    zListener.acceptc                 C   s
   d | _ d S r   r   r   r   r   r   close   s    zListener.closec                 C   s   | j S r   r   r   r   r   r   r
      s    zListener.addressc                 C   s   | S r   r   r   r   r   r   	__enter__!   s    zListener.__enter__c                 C   s   |    d S r   r   r	   exc_type	exc_valueZexc_tbr   r   r   __exit__$   s    zListener.__exit__)NNr   )
__name__
__module____qualname__r   r   r   propertyr
   r   r   r   r   r   r   r      s   

c                 C   s&   t  t   }}| ||f t||S r   )r   putr   )r
   _in_outr   r   r   r   (   s    Tc                 C   s"   t  t   }}t||t||fS r   )r   r   )Zduplexabr   r   r   r   .   s    c                   @   s6   e Zd Zdd ZdddZdd Zdd	 Zd
d ZdS )r   c                 C   s,   || _ || _|j | _| _|j | _| _d S r   )r    r   r   sendZ
send_bytesr   ZrecvZ
recv_bytes)r	   r   r    r   r   r   r   5   s    zConnection.__init__        c              	   C   sN   | j  dkrdS |dkrdS | j j | j j| W 5 Q R X | j  dkS )Nr   Tr$   F)r   ZqsizeZ	not_emptywait)r	   Ztimeoutr   r   r   poll;   s    
zConnection.pollc                 C   s   d S r   r   r   r   r   r   r   D   s    zConnection.closec                 C   s   | S r   r   r   r   r   r   r   G   s    zConnection.__enter__c                 C   s   |    d S r   r   r   r   r   r   r   J   s    zConnection.__exit__N)r$   )r   r   r   r   r&   r   r   r   r   r   r   r   r   3   s
   
	r   )T)	__all__Zqueuer   Zfamiliesobjectr   r   r   r   r   r   r   r   <module>
   s   

          __pycache__/connection.cpython-38.pyc                                                               0000644                 00000004766 15155762120 0013564 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d>                     @   sR   d ddgZ ddlmZ dgZG dd deZdd  Zdd	dZG d
d deZdS )ClientListenerPipe    )QueueNc                   @   sB   e Zd ZdddZdd Zdd Zed	d
 Zdd Zdd Z	dS )r   N   c                 C   s   t || _d S N)r   _backlog_queue)selfaddressZfamilyZbacklog r   8/usr/lib64/python3.8/multiprocessing/dummy/connection.py__init__   s    zListener.__init__c                 C   s   t | j  S r   )
Connectionr   getr	   r   r   r   accept   s    zListener.acceptc                 C   s
   d | _ d S r   r   r   r   r   r   close   s    zListener.closec                 C   s   | j S r   r   r   r   r   r   r
      s    zListener.addressc                 C   s   | S r   r   r   r   r   r   	__enter__!   s    zListener.__enter__c                 C   s   |    d S r   r   r	   exc_type	exc_valueZexc_tbr   r   r   __exit__$   s    zListener.__exit__)NNr   )
__name__
__module____qualname__r   r   r   propertyr
   r   r   r   r   r   r   r      s   

c                 C   s&   t  t   }}| ||f t||S r   )r   putr   )r
   _in_outr   r   r   r   (   s    Tc                 C   s"   t  t   }}t||t||fS r   )r   r   )Zduplexabr   r   r   r   .   s    c                   @   s6   e Zd Zdd ZdddZdd Zdd	 Zd
d ZdS )r   c                 C   s,   || _ || _|j | _| _|j | _| _d S r   )r    r   r   sendZ
send_bytesr   ZrecvZ
recv_bytes)r	   r   r    r   r   r   r   5   s    zConnection.__init__        c              	   C   sN   | j  dkrdS |dkrdS | j j | j j| W 5 Q R X | j  dkS )Nr   Tr$   F)r   ZqsizeZ	not_emptywait)r	   Ztimeoutr   r   r   poll;   s    
zConnection.pollc                 C   s   d S r   r   r   r   r   r   r   D   s    zConnection.closec                 C   s   | S r   r   r   r   r   r   r   G   s    zConnection.__enter__c                 C   s   |    d S r   r   r   r   r   r   r   J   s    zConnection.__exit__N)r$   )r   r   r   r   r&   r   r   r   r   r   r   r   r   3   s
   
	r   )T)	__all__Zqueuer   Zfamiliesobjectr   r   r   r   r   r   r   r   <module>
   s   

          __pycache__/__init__.cpython-38.opt-2.pyc                                                           0000644                 00000007501 15155762120 0014112 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d                     @   s  d ddddddddd	d
dddddgZ ddlZddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZ G dd dejZeZejZe e _dd Zdd ZG dd deZeZeZd'ddZG d d! d!eZd"d Zd#d$ Z d(d&dZ!eZ"dS ))Processcurrent_processactive_childrenfreeze_supportLockRLock	SemaphoreBoundedSemaphore	ConditionEventBarrierQueueManagerPipePoolJoinableQueue    N   )r   )r   r   r   r   )r
   r	   r   )r   c                   @   s4   e Zd Zddddi fddZdd Zedd ZdS )	DummyProcessN c                 C   s8   t j| ||||| d | _t | _d| _t | _	d S )NF)
	threadingThread__init__Z_pidweakrefWeakKeyDictionary	_children_start_calledr   _parent)selfgrouptargetnameargskwargsr   r   6/usr/lib64/python3.8/multiprocessing/dummy/__init__.pyr   $   s
    
zDummyProcess.__init__c                 C   sN   | j t k	r td| j t d| _t| j dr>d | j j| < tj	|  d S )Nz,Parent is {0!r} but current_process is {1!r}Tr   )
r   r   RuntimeErrorformatr   hasattrr   r   r   startr   r   r   r#   r'   +   s     zDummyProcess.startc                 C   s   | j r|  sdS d S d S )Nr   )r   is_aliver(   r   r   r#   exitcode5   s    zDummyProcess.exitcode)__name__
__module____qualname__r   r'   propertyr*   r   r   r   r#   r   "   s   
r   c                  C   s2   t  j} t| D ]}| s| |d  qt| S N)r   r   listr)   pop)Zchildrenpr   r   r#   r   D   s
    c                   C   s   d S r/   r   r   r   r   r#   r   K   s    c                   @   s   e Zd Zdd Zdd ZdS )	Namespacec                K   s   | j | d S r/   )__dict__update)r   kwdsr   r   r#   r   S   s    zNamespace.__init__c                 C   sZ   t | j }g }|D ]$\}}|ds|d||f  q|  d| jjd|f S )N_z%s=%rz%s(%s)z, )	r0   r4   items
startswithappendsort	__class__r+   join)r   r8   Ztempr    valuer   r   r#   __repr__U   s    
zNamespace.__repr__N)r+   r,   r-   r   r?   r   r   r   r#   r3   R   s   r3   Tc                 C   s   t  | |S r/   )array)typecodeZsequencelockr   r   r#   Arraya   s    rC   c                   @   s8   e Zd Zd
ddZedd Zejdd Zdd Zd	S )ValueTc                 C   s   || _ || _d S r/   )	_typecode_value)r   rA   r>   rB   r   r   r#   r   e   s    zValue.__init__c                 C   s   | j S r/   rF   r(   r   r   r#   r>   i   s    zValue.valuec                 C   s
   || _ d S r/   rG   )r   r>   r   r   r#   r>   m   s    c                 C   s   dt | j| j| jf S )Nz<%s(%r, %r)>)typer+   rE   rF   r(   r   r   r#   r?   q   s    zValue.__repr__N)T)r+   r,   r-   r   r.   r>   setterr?   r   r   r   r#   rD   d   s   


rD   c                   C   s
   t jt S r/   )sysmodulesr+   r   r   r   r#   r   t   s    c                   C   s   d S r/   r   r   r   r   r#   shutdownw   s    rL   r   c                 C   s   ddl m} || ||S )N   )
ThreadPool)ZpoolrN   )Z	processesZinitializerZinitargsrN   r   r   r#   r   z   s    )T)NNr   )#__all__r   rJ   r   r@   Z
connectionr   r   r   r   r   r
   r	   r   Zqueuer   r   r   r   Zcurrent_threadr   r   r   r   r   objectr3   dictr0   rC   rD   r   rL   r   r   r   r   r   r#   <module>   sN                


                                                                                                                                                                                               __pycache__/connection.cpython-38.opt-2.pyc                                                         0000644                 00000004766 15155762120 0014524 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       U
    e5d>                     @   sR   d ddgZ ddlmZ dgZG dd deZdd  Zdd	dZG d
d deZdS )ClientListenerPipe    )QueueNc                   @   sB   e Zd ZdddZdd Zdd Zed	d
 Zdd Zdd Z	dS )r   N   c                 C   s   t || _d S N)r   _backlog_queue)selfaddressZfamilyZbacklog r   8/usr/lib64/python3.8/multiprocessing/dummy/connection.py__init__   s    zListener.__init__c                 C   s   t | j  S r   )
Connectionr   getr	   r   r   r   accept   s    zListener.acceptc                 C   s
   d | _ d S r   r   r   r   r   r   close   s    zListener.closec                 C   s   | j S r   r   r   r   r   r   r
      s    zListener.addressc                 C   s   | S r   r   r   r   r   r   	__enter__!   s    zListener.__enter__c                 C   s   |    d S r   r   r	   exc_type	exc_valueZexc_tbr   r   r   __exit__$   s    zListener.__exit__)NNr   )
__name__
__module____qualname__r   r   r   propertyr
   r   r   r   r   r   r   r      s   

c                 C   s&   t  t   }}| ||f t||S r   )r   putr   )r
   _in_outr   r   r   r   (   s    Tc                 C   s"   t  t   }}t||t||fS r   )r   r   )Zduplexabr   r   r   r   .   s    c                   @   s6   e Zd Zdd ZdddZdd Zdd	 Zd
d ZdS )r   c                 C   s,   || _ || _|j | _| _|j | _| _d S r   )r    r   r   sendZ
send_bytesr   ZrecvZ
recv_bytes)r	   r   r    r   r   r   r   5   s    zConnection.__init__        c              	   C   sN   | j  dkrdS |dkrdS | j j | j j| W 5 Q R X | j  dkS )Nr   Tr$   F)r   ZqsizeZ	not_emptywait)r	   Ztimeoutr   r   r   poll;   s    
zConnection.pollc                 C   s   d S r   r   r   r   r   r   r   D   s    zConnection.closec                 C   s   | S r   r   r   r   r   r   r   G   s    zConnection.__enter__c                 C   s   |    d S r   r   r   r   r   r   r   J   s    zConnection.__exit__N)r$   )r   r   r   r   r&   r   r   r   r   r   r   r   r   3   s
   
	r   )T)	__all__Zqueuer   Zfamiliesobjectr   r   r   r   r   r   r   r   <module>
   s   

          connection.py                                                                                       0000644                 00000003076 15155762120 0007267 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       #
# Analogue of `multiprocessing.connection` which uses queues instead of sockets
#
# multiprocessing/dummy/connection.py
#
# Copyright (c) 2006-2008, R Oudkerk
# Licensed to PSF under a Contributor Agreement.
#

__all__ = [ 'Client', 'Listener', 'Pipe' ]

from queue import Queue


families = [None]


class Listener(object):

    def __init__(self, address=None, family=None, backlog=1):
        self._backlog_queue = Queue(backlog)

    def accept(self):
        return Connection(*self._backlog_queue.get())

    def close(self):
        self._backlog_queue = None

    @property
    def address(self):
        return self._backlog_queue

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, exc_tb):
        self.close()


def Client(address):
    _in, _out = Queue(), Queue()
    address.put((_out, _in))
    return Connection(_in, _out)


def Pipe(duplex=True):
    a, b = Queue(), Queue()
    return Connection(a, b), Connection(b, a)


class Connection(object):

    def __init__(self, _in, _out):
        self._out = _out
        self._in = _in
        self.send = self.send_bytes = _out.put
        self.recv = self.recv_bytes = _in.get

    def poll(self, timeout=0.0):
        if self._in.qsize() > 0:
            return True
        if timeout <= 0.0:
            return False
        with self._in.not_empty:
            self._in.not_empty.wait(timeout)
        return self._in.qsize() > 0

    def close(self):
        pass

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, exc_tb):
        self.close()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  