B
´Šý`¿;Mã @ s, d dddddgZ ddlZddlZddlZddlZddlZdd lmZ dd
lmZ ddlm Z yddlm
Z
mZ W n ek
rŒ ed
ƒ‚Y nX e
edƒƒ\ZZej
jZG dd„ deƒZ
G dd„ de
ƒZG dd„ deƒZG dd „ d e
ƒZG dd„ de
ƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZdS )ÚLockÚRLockÚ SemaphoreÚBoundedSemaphoreÚ ConditionÚEventé Né )Úcontext)Úprocess)Úutil)ÚSemLockÚ
sem_unlinkz—This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.é c @ s\ e Zd Ze ¡ Zdd„ Zedd„ ƒZdd„ Z dd„ Z
d d
„ Zdd„ Zd
d„ Z
edd„ ƒZdS )r c C sö |d krt j ¡ }| ¡ }tjdkp*|dk}xPtdƒD ]<}y t |||| ¡ |¡ }| _
W n tk
rn Y q6X P q6W tdƒ‚t
d|j ¡ | ¡ tjdkr´dd„ } t | | ¡ | j
jd k ròdd lm}
|
| j
jƒ tj| tj| j
jfd
d d S )NÚwin32Úforkéd zcannot find name for semaphorezcreated semlock with handle %sc S s | j ¡ d S )N)Ú_semlockÚ_after_fork)Úobj© r ú@/opt/alt/python37/lib64/python3.7/multiprocessing/synchronize.pyr G s z%SemLock.__init__.._after_forkr )Úregisterr )Zexitpriority)r Z_default_contextZget_contextZget_start_methodÚsysÚplatformÚrangeÚ_multiprocessingr Ú
_make_namer ÚFileExistsErrorr ÚdebugÚhandleÚ
_make_methodsZregister_after_forkÚnameÚsemaphore_trackerr ZFinalizeÚ_cleanup)ÚselfÚkindÚvalueÚmaxvalueÚctxr! Z
unlink_nowÚiÚslr r r r r Ú__init__2 s.
zSemLock.__init__c C s ddl m} t| ƒ || ƒ d S )Nr )Ú
unregister)r" r, r
)r! r, r r r r# T s zSemLock._cleanupc C s | j j| _| j j| _d S )N)r ÚacquireÚrelease)r$ r r r r Z s
zSemLock._make_methodsc C s
| j ¡ S )N)r Ú __enter__)r$ r r r r/ ^ s zSemLock.__enter__c G s | j j|Ž S )N)r Ú__exit__)r$ Úargsr r r r0 a s zSemLock.__exit__c C sD t | ¡ | j}tjdkr,t ¡ |j¡}n|j}||j|j |j
fS )Nr )r Úassert_spawningr r r Zget_spawning_popenZduplicate_for_childr r% r' r! )r$ r* Úhr r r Ú__getstate__d s
zSemLock.__getstate__c C s, t jj|Ž | _t d|d ¡ | ¡ d S )Nz recreated blocker with handle %rr )r r Z_rebuildr r r r )r$ Ústater r r Ú__setstate__m s zSemLock.__setstate__c C s dt ¡ jd ttjƒf S )Nz%s-%sZ semprefix)r
Úcurrent_processZ_configÚnextr Ú_randr r r r r r s zSemLock._make_nameN)Ú__name__Ú
__module__Ú__qualname__ÚtempfileZ_RandomNameSequencer9 r+ Ústaticmethodr# r r/ r0 r4 r6 r r r r r r . s " r c @ s&