U
    ‰dH  ã                   @   sL  d dl m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	 d dlm
Z
 d dlmZ d dlmZ ddd	d
dddddddddddgZG dd„ dejƒZz
ejZW n ek
rÀ   ejZY nX G dd„ deƒ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 ))é    )Úabsolute_importN)ÚLockÚRLockÚ	SemaphoreÚBoundedSemaphore)ÚEvent)ÚQueue)ÚPipeÚProcessÚcurrent_processÚactive_childrenÚfreeze_supportr   r   r   r   Ú	Conditionr   r   ÚManagerr	   ÚPoolÚJoinableQueuec                   @   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   ú;/tmp/pip-unpacked-wheel-lulkwrw3/billiard/dummy/__init__.pyr   =   s
    
zDummyProcess.__init__c                 C   s>   | j tƒ kst‚d| _t| j dƒr.d | j j| < tj | ¡ d S )NTr   )	r   r   ÚAssertionErrorr   Úhasattrr   r   r   Ústart©r   r   r   r"   r%   D   s
    zDummyProcess.startc                 C   s   | j r|  ¡ sdS d S d S )Nr   )r   Úis_aliver&   r   r   r"   ÚexitcodeK   s    zDummyProcess.exitcode)Ú__name__Ú
__module__Ú__qualname__r   r%   Úpropertyr(   r   r   r   r"   r   ;   s   r   c                   @   s*   e Zd Zejd dkrejZnejjZdS )r   r   é   N)	r)   r*   r+   ÚsysÚversion_infoÚ
_ConditionÚ	notifyAllÚ
notify_allÚ__func__r   r   r   r"   r   Y   s   c                  C   s2   t ƒ j} t| ƒD ]}| ¡ s|  |d ¡ qt| ƒS ©N)r   r   Úlistr'   Úpop)ÚchildrenÚpr   r   r"   r   e   s
    c                   C   s   d S r4   r   r   r   r   r"   r   m   s    c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Namespacec                 K   s   | j  |¡ d S r4   )Ú__dict__Úupdate)r   Úkwdsr   r   r"   r   s   s    zNamespace.__init__c                 C   s\   t | j ¡ ƒ}g }|D ]$\}}| d¡s| d||f ¡ q| ¡  d| jjt 	d|¡f S )NÚ_z%s=%rz%s(%s)z, )
r5   r:   ÚitemsÚ
startswithÚappendÚsortÚ	__class__r)   ÚstrÚjoin)r   r>   Útempr   Úvaluer   r   r"   Ú__repr__v   s    
zNamespace.__repr__N)r)   r*   r+   r   rG   r   r   r   r"   r9   q   s   r9   Tc                 C   s   t   | |¡S r4   )Úarray)ÚtypecodeÚsequenceÚlockr   r   r"   ÚArray„   s    rL   c                   @   s8   e Zd Zddd„Zdd„ Zdd„ ZeeeƒZdd	„ Zd
S )ÚValueTc                 C   s   || _ || _d S r4   )Ú	_typecodeÚ_value)r   rI   rF   rK   r   r   r"   r   Š   s    zValue.__init__c                 C   s   | j S r4   ©rO   r&   r   r   r"   Ú_getŽ   s    z
Value._getc                 C   s
   || _ d S r4   rP   )r   rF   r   r   r"   Ú_set‘   s    z
Value._setc                 C   s   dt | ƒj| j| jf S )Nz<%r(%r, %r)>)Útyper)   rN   rO   r&   r   r   r"   rG   •   s    
 ÿzValue.__repr__N)T)	r)   r*   r+   r   rQ   rR   r,   rF   rG   r   r   r   r"   rM   ˆ   s
   

rM   c                   C   s
   t jt S r4   )r.   Úmodulesr)   r   r   r   r"   r   š   s    c                   C   s   d S r4   r   r   r   r   r"   Úshutdownž   s    rU   r   c                 C   s   ddl m} || ||ƒS )Nr   )Ú
ThreadPool)Zbilliard.poolrV   )Z	processesZinitializerZinitargsrV   r   r   r"   r   ¢   s    )T)NNr   )&Ú
__future__r   r   r.   r   rH   r   r   r   r   r   Zbilliard.fiver   Zbilliard.connectionr	   Ú__all__r   r   r0   ÚAttributeErrorr   r
   Úcurrent_threadr   r   r   r   r   Úobjectr9   Údictr5   rL   rM   r   rU   r   r   r   r   r   r"   Ú<module>"   sX               ý


