d(Ǯ |dZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z ddl mZmZGdd eZiZe ZGd d e ZGd deZGddeZgdZdS)z7holds locking functionality that works across processesN)ABCMetaabstractmethod)contextmanager)Path)LockRLock)FileLockTimeoutc6eZdZfdZdfd Zdfd ZxZS) _CountedFileLockcFtj|}tj|s& tj|n#t $rYnwxYwt |d|_t|_ dSNr) ospathdirnameisdirmakedirsOSErrorsuper__init__countr thread_safe)self lock_fileparent __class__s /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/virtualenv/util/lock.pyrz_CountedFileLock.__init__s++w}}V$$   F####     ###  77sA A#"A#N皙?c|j|dn|st|j|jdkr"t |||xjdz c_dS)N)timeoutr)racquirer rrr)rr! poll_intervalrs rr#z_CountedFileLock.acquiresm''go7'SS *$.)) ) :?? GGOOG] 3 3 3 a Fc$|j5|jdkr|j|jdkr"t|t |jdz d|_ddddS#1swxYwYdS)Nrr")force)rrreleasermax)rr'rs rr(z_CountedFileLock.release s   0 0zA~~ ((***zQe,,,TZ!^Q//DJ  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sA/BB  B )NrF)__name__ __module__ __qualname__rr#r( __classcell__rs@rr r st # # # # #0000000000r%r ceZdZdZdZdZdZedZedZ ee d dZ ee d Z d S) PathLockBasect|}|r|n||_dSN)rexistsresolver)rfolderrs rrzPathLockBase.__init__.s1F||&*kkmm=DLLNNN r%c0|jjd|jdS)N())rr+rrs r__repr__zPathLockBase.__repr__2s .)88DI8888r%cBt||j|z Sr3)typerrothers r__div__zPathLockBase.__div__5stDzz$)e+,,,r%c,||Sr3)r@r>s r __truediv__zPathLockBase.__truediv__8s||E"""r%ctr3NotImplementedErrorr:s r __enter__zPathLockBase.__enter__;!!r%ctr3rDrexc_typeexc_valexc_tbs r__exit__zPathLockBase.__exit__?rGr%Fctr3rDrnameno_blocks r lock_for_keyzPathLockBase.lock_for_keyC "!r%ctr3rDrrPs rnon_reentrant_lock_for_keyz'PathLockBase.non_reentrant_lock_for_keyHrSr%Nr*) r+r,r-rr;r@rBrrFrMrrRrVr%rr1r1-s>>>999---###""^"""^""""^^"""^^"""r%r1) metaclassceZdZfdZd dZedZdZdZdZ dd Z ed Z e dd Z e d ZxZS)ReentrantFileLockcXt|d|_dSr3)rr_lock)rr6rs rrzReentrantFileLock.__init__Os&     r%ct|j|dz }t5|tvrt |t|<t|cdddS#1swxYwYdSNz.lock)strr _store_lock _lock_storer )rrPrs r _create_lockzReentrantFileLock._create_lockSs tNNN233  * * ++)9))D)D I&y) * * * * * * * * * * * * * * * * * *s-AA #A c|lt5|j5|jdkr t|jddddn #1swxYwYddddS#1swxYwYdSdSr)rarrrbpoprlocks r _del_lockzReentrantFileLock._del_lockZs   > >%>>zQ#===>>>>>>>>>>>>>>> > > > > > > > > > > > > > > > > > >  s3A",A  A" A A"A A""A&)A&c:||jdSr3)rhr\r:s r__del__zReentrantFileLock.__del__bs tz"""""r%cl||_||jdSr3)rcr\ _lock_filer:s rrFzReentrantFileLock.__enter__es/&&((   #####r%c|||j||jd|_dSr3)_releaser\rhrIs rrMzReentrantFileLock.__exit__is5 dj!!! tz""" r%FcN tjt|jn#t$rYnwxYw |ddS#t $rI|rtjd|j | |YdSwxYw)Ng-C6?z/lock file %s present, will block until released) rrr`rrr#r loggingdebugrr()rrgrQs rrlzReentrantFileLock._lock_filens  KDI ' ' ' '    D   LL      MKT^ \ \ \ LLNNN LLNNNNNN  s&) 66AAB$#B$c.|dSr3)r(rfs rrnzReentrantFileLock._releases r%c#4K||} |||dV||n#||wxYw ||d}dS#||d}wxYwr3)rcrlrnrh)rrPrQrgs rrRzReentrantFileLock.lock_for_keys  &&  $h/// d#### d##### NN4 DDD NN4 DKKKKsA A> A!!A>>Bc#Ktt|j|dz 5dVddddS#1swxYwYdSr_)r r`rrUs rrVz,ReentrantFileLock.non_reentrant_lock_for_keys c$)nnn"<== > >   EEE                  s<AA)r]r*)r+r,r-rrc staticmethodrhrjrFrMrlrnrrRrVr.r/s@rrZrZNs****>>\>###$$$ "\   ^ ^r%rZcHeZdZdZdZeddZedZdS) NoOpFileLockctr3rDr:s rrFzNoOpFileLock.__enter__!!r%ctr3rDrIs rrMzNoOpFileLock.__exit__ryr%Fc#KdVdSr3rWrOs rrRzNoOpFileLock.lock_for_key r%c#KdVdSr3rWrUs rrVz'NoOpFileLock.non_reentrant_lock_for_keyr|r%Nr*)r+r,r-rFrMrrRrVrWr%rrwrwsm""""""^^r%rw)rwrZr )__doc__rprabcrr contextlibrpathlibr threadingrrfilelockr r r rbrar1rZrw__all__rWr%rrsg== ''''''''%%%%%%!!!!!!!!&&&&&&&&00000x0008 dff """""W""""BEEEEE EEEP     <       r%