
    <Bh6                         S r SSKrSSKrSSKJr  SSKJr  SrSrSr	\S	 5       r
 SSKr\S
 5       rS rg! \ a3     SSKr " S S5      r N! \ a    \R                  " S5        \
r  N8f = ff = f)z
Record locking to manage potential repodata / repodata metadata file contention
between conda processes. Try to acquire a lock on a single byte in the metadat
file; modify both files; then release the lock.
    N)contextmanager   )context   
      c              #      #    Sv   g7f)zWhen locking is not available.N fds    8lib/python3.13/site-packages/conda/gateways/disk/lock.py
_lock_noopr      s
      
s   c              #     #    U R                  5       nU R                  [        5        [        R                  " U R                  5       [        R                  S5         U R                  U5        S v   U R                  [        5        [        R                  " U R                  5       [        R                  S5        g ! U R                  [        5        [        R                  " U R                  5       [        R                  S5        f = f7fNr   )tellseek	LOCK_BYTEmsvcrtlockingfilenoLK_LOCKLK_UNLCK)r   r   s     r   
_lock_implr      s     wwy
	ryy{FNNA6	<GGDMGGINN299;; GGINN299;;s    AD
B< 2A
D
<ADD
c                   &    \ rS rSrS rS rS rSrg)r   4   c                     Xl         g Nr   )selfr   s     r   __init___lock_impl.__init__5   s        c                 0   [        [        5       HJ  n [        R                  " U R                  [        R
                  [        R                  -  S[        5          g    g ! [         a,    U[        S-
  :  a  e [        R                  " [        5         M  f = f)Nr      )rangeLOCK_ATTEMPTSfcntllockfr   LOCK_EXLOCK_NBr   OSErrortimesleep
LOCK_SLEEP)r   attempts     r   	__enter___lock_impl.__enter__8   sn    $]3G	/ GGU]]U]]%BAy   4 # /"]Q%66!

:./s   AA2BBc                 n    [         R                  " U R                  [         R                  S[        5        g r   )r&   r'   r   LOCK_UNr   )r   excs     r   __exit___lock_impl.__exit__E   s    DGGU]]AyAr!   r   N)__name__
__module____qualname____firstlineno__r   r/   r4   __static_attributes__r
   r!   r   r   r   4   s    /Br!   r   zfile locking not availablec                 X    [         R                  (       d  [        U 5      $ [        U 5      $ r   )r   no_lockr   r   r   s    r   lockr=   I   s    ??"~b>r!   )__doc__r+   warnings
contextlibr   base.contextr   r   r%   r-   r   r   r   ImportErrorr&   warnr=   r
   r!   r   <module>rD      s      % #	
 
 

,B	< 	<VA  BB	B 	B   23
	 Bs,   6 A/A
A/A+'A/*A++A/