]/ @ s 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 d d l m Z d d l m
Z
y d d
l m Z m Z Wn* e
k
r e
d d d d Yn Xe e d \ Z Z e j j Z Gd d d e Z Gd d d e Z Gd d d e Z Gd d d e Z Gd d d e Z Gd d d e Z Gd d d e Z Gd d d e j Z d S)LockRLock SemaphoreBoundedSemaphore ConditionEvent N)time )context)process)util)SemLock
sem_unlinkz*This platform lacks a functioning sem_openz( implementation, therefore, the requiredz+ synchronization primitives needed will notz function, see issue 3770. c @ s e Z d Z e j Z d d Z e d d Z d d Z d d Z
d d
Z d d Z d
d Z
e d d Z d S)r
c
C sK | d k r t j j } | j } t j d k p? | d k } xb t d D]H } y, t j | | | | j | } | _
Wn t k
r YqO XPqO Wt d t j
d | j | j t j d k r d d } t j | | | j
j d k rGd d l m }
|
| j
j t j | t j | j
j f d
d d S)Nwin32forkd zcannot find name for semaphorezcreated semlock with handle %sc S s | j j d S)N)_semlock_after_fork)obj r 0/opt/alt/python35/lib64/python3.5/synchronize.pyr H s z%SemLock.__init__.._after_forkr )registerexitpriorityr )r
_default_contextget_contextget_start_methodsysplatformrange_multiprocessingr
_make_namer FileExistsErrorr debughandle
_make_methodsregister_after_forknamesemaphore_trackerr Finalize_cleanup)selfkindvaluemaxvaluectxr' Z
unlink_nowislr r r r r __init__3 s.
zSemLock.__init__c C s( d d l m } t | | | d S)Nr )
unregister)r( r3 r )r' r3 r r r r* U s
zSemLock._cleanupc C s" | j j | _ | j j | _ d S)N)r acquirerelease)r+ r r r r% [ s zSemLock._make_methodsc C s
| j j S)N)r __enter__)r+ r r r r6 _ s zSemLock.__enter__c G s | j j | S)N)r __exit__)r+ argsr r r r7 b s zSemLock.__exit__c C sb t j | | j } t j d k r@ t j j | j } n | j } | | j | j | j
f S)Nr )r
assert_spawningr r r get_spawning_popenduplicate_for_childr$ r, r. r' )r+ r1 hr r r __getstate__e s
zSemLock.__getstate__c C s8 t j j | | _ t j d | d | j d S)Nz recreated blocker with handle %rr )r r
_rebuildr r r# r% )r+ stater r r __setstate__n s zSemLock.__setstate__c C s$ d t j j d t t j f S)Nz%s-%s semprefix)r current_process_confignextr
_randr r r r r! s s zSemLock._make_nameN)__name__
__module____qualname__tempfile_RandomNameSequencerE r2 staticmethodr* r% r6 r7 r= r@ r! r r r r r
/ s " r
c @ s7 e Z d Z d d d Z d d Z d d Z d S) r r c C s t j | t | t d | d S)Nr/ )r
r2 SEMAPHORE
SEM_VALUE_MAX)r+ r- r/ r r r r2 ~ s zSemaphore.__init__c C s
| j j S)N)r
_get_value)r+ r r r get_value s zSemaphore.get_valuec C sB y | j j } Wn t k
r- d } Yn Xd | j j | f S)Nunknownz<%s(value=%s)>)r rN Exception __class__rF )r+ r- r r r __repr__ s
zSemaphore.__repr__N)rF rG rH r2 rO rS r r r r r | s c @ s+ e Z d Z d d d Z d d Z d S)r r c C s t j | t | | d | d S)Nr/ )r
r2 rL )r+ r- r/ r r r r2 s zBoundedSemaphore.__init__c C sK y | j j } Wn t k
r- d } Yn Xd | j j | | j j f S)NrP z<%s(value=%s, maxvalue=%s)>)r rN rQ rR rF r. )r+ r- r r r rS s
zBoundedSemaphore.__repr__N)rF rG rH r2 rS r r r r r s c @ s( e Z d Z d d Z d d Z d S)r c C s t j | t d d d | d S)Nr r/ )r
r2 rL )r+ r/ r r r r2 s z
Lock.__init__c C s y | j j rP t j j } t j j d k r | d t j j 7} nB | j j d k rn d } n$ | j j d k r d } n d } Wn t k
r d } Yn Xd | j
j | f S)
N
MainThread|r Noner SomeOtherThreadSomeOtherProcessrP z<%s(owner=%s)>)r _is_miner rB r' threadingcurrent_threadrN _countrQ rR rF )r+ r' r r r rS s
z
Lock.__repr__N)rF rG rH r2 rS r r r r r s c @ s( e Z d Z d d Z d d Z d S)r c C s t j | t d d d | d S)Nr r/ )r
r2 RECURSIVE_MUTEX)r+ r/ r r r r2 s zRLock.__init__c C s y | j j r_ t j j } t j j d k rM | d t j j 7} | j j } nT | j j d k r d \ } } n0 | j j d k r d \ } } n d
\ } } Wn t k
r d \ } } Yn Xd
| j
j | | f S)NrT rU r rV r rW nonzerorX rP z<%s(%s, %s)>)rV r )rW r^ )rX r^ )rP rP )r rY r rB r' rZ r[ r\ rN rQ rR rF )r+ r' countr r r rS s
zRLock.__repr__N)rF rG rH r2 rS r r r r r s c @ s e Z d Z d d d Z d d Z d d Z d d Z d
d Z d d
Z d d Z d d d Z
d d Z d d Z d d d Z
d S)r Nc C sY | p | j | _ | j d | _ | j d | _ | j d | _ | j d S)Nr )r _lockr _sleeping_count_woken_count_wait_semaphorer% )r+ lockr/ r r r r2 s
zCondition.__init__c C s) t j | | j | j | j | j f S)N)r
r9 r` ra rb rc )r+ r r r r= s
zCondition.__getstate__c C s, | \ | _ | _ | _ | _ | j d S)N)r` ra rb rc r% )r+ r? r r r r@ s zCondition.__setstate__c C s
| j j S)N)r` r6 )r+ r r r r6 s zCondition.__enter__c G s | j j | S)N)r` r7 )r+ r8 r r r r7 s zCondition.__exit__c C s" | j j | _ | j j | _ d S)N)r` r4 r5 )r+ r r r r% s zCondition._make_methodsc C s[ y&