id 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 I/opt/cloudlinux/venv/lib/python3.11/site-packages/virtualenv/util/lock.pyrz_CountedFileLock.__init__s++w}}V$$   F####     ###  77sA A#"A#N皙?c|j5|jdkr"t|||xjdz c_ddddS#1swxYwYdS)Nr)rrracquire)rtimeout poll_intervalrs rr!z_CountedFileLock.acquires    zQ777 JJ!OJJ                  s>AAAFc|j5|jdkr"t|t |jdz d|_ddddS#1swxYwYdS)Nr )forcer)rrrreleasemax)rr%rs rr&z_CountedFileLock.releases   0 0zQe,,,TZ!^Q//DJ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sA A!!A%(A%)NrF)__name__ __module__ __qualname__rr!r& __classcell__rs@rr r st # # # # # 0000000000r 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__/s .)88DI8888r.cBt||j|z Sr2)typerrothers r__div__zPathLockBase.__div__2stDzz$)e+,,,r.c,||Sr2)r?r=s r __truediv__zPathLockBase.__truediv__5s||E"""r.ctr2NotImplementedErrorr9s r __enter__zPathLockBase.__enter__8!!r.ctr2rCrexc_typeexc_valexc_tbs r__exit__zPathLockBase.__exit__<rFr.Fctr2rCrnameno_blocks r lock_for_keyzPathLockBase.lock_for_key@ "!r.ctr2rCrrOs rnon_reentrant_lock_for_keyz'PathLockBase.non_reentrant_lock_for_keyErRr.Nr() r)r*r+rr:r?rArrErLrrQrUr.rr0r0*s>>>999---###""^"""^""""^^"""^^"""r.r0) metaclassceZdZfdZd dZedZdZdZdZ dd Z ed Z e dd Z e d ZxZS)ReentrantFileLockcXt|d|_dSr2)rr_lock)rr5rs rrzReentrantFileLock.__init__Ls&     r.ct|j|dz }t5|tvrt |t|<t|cdddS#1swxYwYdSNz.lock)strr _store_lock _lock_storer )rrOrs r _create_lockzReentrantFileLock._create_lockPs tNNN233  * * ++)9))D)D I&y) * * * * * * * * * * * * * * * * * *s-AA #A c|lt5|j5|jdkr t|jddddn #1swxYwYddddS#1swxYwYdSdSr)r`rrrapoprlocks r _del_lockzReentrantFileLock._del_lockWs   > >%>>zQ#===>>>>>>>>>>>>>>> > > > > > > > > > > > > > > > > > >  s3A",A  A" A A"A A""A&)A&c:||jdSr2)rgr[r9s r__del__zReentrantFileLock.__del___s tz"""""r.cl||_||jdSr2)rbr[ _lock_filer9s rrEzReentrantFileLock.__enter__bs/&&((   #####r.c|||j||jd|_dSr2)_releaser[rgrHs rrLzReentrantFileLock.__exit__fs5 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&)rrfrPs rrkzReentrantFileLock._lock_fileks  KDI ' ' ' '    D   LL      MKT^ \ \ \ LLNNN LLNNNNNN  s&) 66AAB$#B$c.|dSr2)r&res rrmzReentrantFileLock._release|s r.c#4K||} |||dV||n#||wxYw ||d}dS#||d}wxYwr2)rbrkrmrg)rrOrPrfs rrQzReentrantFileLock.lock_for_keys  &&  $h/// d#### d##### NN4 DDD NN4 DKKKKsA A> A!!A>>Bc#Ktt|j|dz 5dVddddS#1swxYwYdSr^)r r_rrTs rrUz,ReentrantFileLock.non_reentrant_lock_for_keys c$)nnn"<== > >   EEE                  s<AA)r\r()r)r*r+rrb staticmethodrgrirErLrkrmrrQrUr,r-s@rrYrYKs****>>\>###$$$ "\   ^ ^r.rYcHeZdZdZdZeddZedZdS) NoOpFileLockctr2rCr9s rrEzNoOpFileLock.__enter__!!r.ctr2rCrHs rrLzNoOpFileLock.__exit__rxr.Fc#KdVdSr2rVrNs rrQzNoOpFileLock.lock_for_key r.c#KdVdSr2rVrTs rrUz'NoOpFileLock.non_reentrant_lock_for_keyr{r.Nr()r)r*r+rErLrrQrUrVr.rrvrvsm""""""^^r.rv)rvrYr )__doc__rorabcrr contextlibrpathlibr threadingrrfilelockr r r rar`r0rYrv__all__rVr.rrsg== ''''''''%%%%%%!!!!!!!!&&&&&&&&00000x0002 dff """""W""""BEEEEE EEEP     <       r.