o
    ˜»áfõ  ã                   @   sø   g d ¢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__Ú_pidÚweakrefÚWeakKeyDictionaryÚ	_childrenÚ_start_calledr   Ú_parent)ÚselfÚgroupÚtargetÚnameÚargsÚkwargsr   r   ú5/usr/lib/python3.10/multiprocessing/dummy/__init__.pyr   $   s
   
zDummyProcess.__init__c                 C   sN   | j tƒ u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 )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)ÚchildrenÚpr   r   r$   r   D   s   €r   c                   C   ó   d S r0   r   r   r   r   r$   r   K   ó   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Namespacec                K   s   | j  |¡ d S r0   )Ú__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, )	r1   r8   ÚitemsÚ
startswithÚappendÚsortÚ	__class__r,   Újoin)r   r<   Útempr!   Úvaluer   r   r$   Ú__repr__U   s   
€zNamespace.__repr__N)r,   r-   r.   r   rD   r   r   r   r$   r7   R   s    r7   Tc                 C   s   t   | |¡S r0   )Úarray)ÚtypecodeÚsequenceÚlockr   r   r$   ÚArraya   s   rI   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 r0   )Ú	_typecodeÚ_value)r   rF   rC   rH   r   r   r$   r   e   s   
zValue.__init__c                 C   s   | j S r0   ©rL   r)   r   r   r$   rC   i   s   zValue.valuec                 C   s
   || _ d S r0   rM   )r   rC   r   r   r$   rC   m   s   
c                 C   s   dt | ƒj| j| jf S )Nz<%s(%r, %r)>)Útyper,   rK   rL   r)   r   r   r$   rD   q   s   zValue.__repr__N©T)r,   r-   r.   r   r/   rC   ÚsetterrD   r   r   r   r$   rJ   d   s    


rJ   c                   C   s
   t jt S r0   )ÚsysÚmodulesr,   r   r   r   r$   r   t   s   
r   c                   C   r5   r0   r   r   r   r   r$   Úshutdownw   r6   rS   r   c                 C   s   ddl m} || ||ƒS )Né   )Ú
ThreadPool)ÚpoolrU   )Ú	processesÚinitializerÚinitargsrU   r   r   r$   r   z   s   r   rO   )NNr   )#Ú__all__r   rQ   r   rE   Ú
connectionr   r   r   r   r   r
   r	   r   Úqueuer   r   r   r   Úcurrent_threadr   r   r   r   r   Úobjectr7   Údictr1   rI   rJ   r   rS   r   r   r   r   r   r$   Ú<module>   s0   	


