
    1j                       U d dl mZ d dlZd dlZd dlZd dl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mZmZmZmZmZmZ d dlmZ d dlmZmZmZmZ ddlmZmZmZ dd	lmZ dd
l m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' erd dl(m)Z) ed   Z* e+ddh      Z,de-d<   dZ.de-d<   dZ/de-d<   dZ0de-d<   dZ1de-d<   dZ2de-d<   dZ3de-d <   d!Z4de-d"<   d#Z5de-d$<   dZ6de-d%<   d&Z7d'e-d(<   d)Z8de-d*<   d+Z9d'e-d,<   d-Z:d'e-d.<    e;ed/d       Z<de-d0<    e$jz                         Z>d1e-d2<    e+h d3      Z?d4e-d5<    e@ed6      ZAd7e-d8<   ej                  ej                  v ZDd7e-d9<   ej                  ej                  v ZFd7e-d:<   ej                  ej                  v ZGd7e-d;<   eAxr ej                  ej                  v ZId7e-d<<   dwd=ZJ eJ       ZKd7e-d><   dxd?ZL eL       ZMd4e-d@<    G dA dBe      ZN edCD       G dE dF             ZO G dG dHeP      ZQdydIZRdzdJZSd{dKZTd|dLZUd}dMZVd~dNZWd{dOZX	 	 	 	 	 	 	 	 	 	 ddPZYddQZZddRZ[ddSZ\ddTZ]	 	 	 	 	 	 	 	 ddUZ^	 	 	 	 	 	 	 	 	 	 ddVZ_	 	 	 	 	 	 	 	 	 	 ddWZ`	 	 	 	 	 	 	 	 ddXZa	 	 	 	 	 	 ddYZbddZZcdd[Zddd\Zedd]Zfdd^Zgdd_Zh	 	 	 	 	 	 	 	 dd`ZiddaZjddbZkdddc	 	 	 	 	 	 	 	 	 dddZlddeZmddfZnddgZoddhZpddiZqddjZrddkZsddlZtddmZuddnZvddoZwddpZxddqZyddrZzddsZ{ddtZ|dduZ}g dvZ~y)    )annotationsN)	dataclass)EACCESEEXISTENOENTENOSYSEPERMESTALEEXDEV)Path)TYPE_CHECKINGFinalLiteralcast   )BaseFileLock
_canonical_raise_cleanup_errors)SoftFileLockProtocolError)	host_nameprocess_start_token)STRICT_SOFT_SENTINEL_RECORD)ensure_directory_exists	write_all)Iterator)intentheldr   r   zFinal[frozenset[str]]_CLAIM_STATESz	.filelockz
Final[str]_COORDINATION_SUFFIXclaims_CLAIM_DIRECTORY_NAMEzfilelock-strict-v1_CLAIM_MAGICi   z
Final[int]_CLAIM_RECORD_LIMIT   _CLAIM_NAME_PART_COUNT    _TOKEN_HEX_LENGTHz.private-v1-_PRIVATE_RECORD_MARKER.tmp_PRIVATE_RECORD_SUFFIX!_PRIVATE_RECORD_RANDOM_HEX_LENGTHg       @zFinal[float]_PRIVATE_RECORD_GRACE
   _UNLINK_MAX_RETRIESg      ?_CLAIM_READ_GRACEgMb`?_CLAIM_READ_RETRYO_BINARY	_O_BINARYzFinal[bytes]_LEGACY_SENTINEL>   r      2   zFinal[frozenset[int]]_WINDOWS_HARD_LINK_UNSUPPORTEDlinkzFinal[bool]	_HAS_LINK_OPEN_SUPPORTS_DIR_FD_UNLINK_SUPPORTS_DIR_FD_STAT_SUPPORTS_DIR_FD_LINK_SUPPORTS_DIR_FDc                    t         sy	 t        j                         5 } t        | d      }|j	                          t        j                  |t        | d      d       d d d        y# 1 sw Y   yxY w# t        t        t        f$ r Y yw xY w)NFzprobe-sourcez
probe-link)follow_symlinksT)
r8   tempfileTemporaryDirectoryr   touchosr7   OSErrorNotImplementedError
ValueError)	directorysources     {/home/vela/workspace/domain/tn-silver/web/tn-site/.runtime/depth-eval/venv/lib/python3.12/site-packages/filelock/_strict.py_probe_link_follow_symlinksrI   =   sy     ((*i)^4FLLNGGFDL95Q +  +  (*5 s.   A1 ?A%A1 %A.*A1 .A1 1BB_LINK_HONORS_FOLLOW_SYMLINKSc            	         t        t        dt        t        dd             } t        | t        t        h      S t        t        | h      S )NENOTSUP
EOPNOTSUPP)getattrerrno	frozensetr   r   )not_supporteds    rH   #_probe_hard_link_unsupported_errnosrR   R   s?     E9ge\4.PQM(=fe_bbFES`Cabb    _HARD_LINK_UNSUPPORTED_ERRNOSc                       e Zd ZU dZdZded<   dZded<   dZded<   dZd	ed
<   dZ	ded<   dZ
ded<   ddZddZedd       ZddZd fdZd fdZddZddZedd       Z xZS ) StrictSoftFileLockz:Portable fail-closed lock based on immutable owner claims.Tbool_preserve_lock_file_supportedF_on_acquired_supported_lifetime_supportedz<a strict claim is never broken by age, only by force_break()str_lifetime_unsupported_reason_serialize_transitionsg?float_poll_backoff_capc                D   | j                   j                  x}&t        | j                        x}| j                   _        t	        |      }t	        | t
               }|t        z  }t        t        j                  |             t        | j                  |       t        | j                  |       t        | j                  || j                               x}y 	 t        t        j                  |            }| j%                  ||       	 | j'                  |||       y # t        $ r?}	 t        j                   |        # t        $ r}t#        d||       Y d }~ d }~ww xY wd }~ww xY w# t        $ r- | j                   j(                  |k(  r| j+                  ||        w xY w)Nz)strict sentinel inspection cleanup failed)_context
claim_rootr   	lock_filer   r   r!   r   rB   fspath_ensure_protocol_directory_open_or_create_sentinel
_open_mode_file_identityfstatBaseExceptioncloser   _mark_descriptor_pending_attempt_doorwaypending_lock_file_fd_discard_doorway)	selfrb   	lock_pathcoordination_directoryclaim_directorysentinel_fdsentinel_identityinspection_errorclose_errors	            rH   _acquirezStrictSoftFileLock._acquiren   sy    --222J;4>t~~4NNJ1$	!%4H3I&J!K03HH		) 45"4>>3IJ"4>>?C3DNNItO`aaKj	 .rxx/D E 	%%k3DE	!!/;@QR  	r%  ! r%&QScepqqr	  	}}11[@%%k3DE	sH   D 
E) 	E&(D>=E!>	EEE!EE!!E&)6Fc                   t        | j                  |      r| j                  ||       y t        j                  t
        dz        }t        d|      }t        ||z        }	 t        |t        |      | j                               }|||f| j$                  _        t        | j                  |      }	|	r't)        d |	D              st+        d |	D              |k7  r| j                  ||       y t        d|      }
t        ||
z        }	 t-        |||
      }||f| j$                  _        |d| j$                  _        |t        | j                  |      }	||
hj/                  d |	D              rt+        d |	D              d	| d
k7  r| j                  ||       y | j1                  ||       y # t        $ r | j                  ||       Y y t        t        f$ rV}t        | j                  |       t        |t              r*|j                   t"        k(  r| j                  ||       Y d }~y  d }~ww xY w# t        t        f$ r}t        | j                  |        d }~ww xY w)N   r   c              3  :   K   | ]  }|j                   d k(    yw)r   N)state.0claims     rH   	<genexpr>z6StrictSoftFileLock._attempt_doorway.<locals>.<genexpr>   s     =fU5;;&(fs   c              3  4   K   | ]  }|j                     y wNnamer}   s     rH   r   z6StrictSoftFileLock._attempt_doorway.<locals>.<genexpr>   s     26%5::6   r    c              3  4   K   | ]  }|j                     y wr   r   r}   s     rH   r   z6StrictSoftFileLock._attempt_doorway.<locals>.<genexpr>   s     1Q&%**&r   c              3  F   K   | ]  }t        |j                          y wr   )_claim_token_keyr   r}   s     rH   r   z6StrictSoftFileLock._attempt_doorway.<locals>.<genexpr>   s     DVE#EJJ/Vs   !zv1-.claim)_read_existing_claimsrc   ro   secrets	token_hexr'   _claim_namer[   _publish_record_claim_recordrg   _PrivateRecordReclaimedErrorrD   rC    _raise_if_hard_links_unsupported
isinstancerO   r   ra   owner_claim_pathsanymin_link_no_replaceissubset_mark_descriptor_owned)rp   rs   rt   ru   tokenintent_nameintent_pathpublication_cleanup_errorerrorr    	held_name	held_pathlink_cleanup_errors                rH   rm   z#StrictSoftFileLock._attempt_doorway   s:    A!!+/@A!!"3q"89!(E2/K78
	(7]SXEY[_[j[j[l(m% %0+++6.'&t~~G=f==2622kA!!+/@A.	)34		!1/;PY!Z ,5k*B').0DMM+$$&t~~Gi(111Q&1QQDVDD#eWTZH[[!!+/@A 	##K1BC_ , 	!!+/@A#W- 	,T^^UC%)ekkV.C%%k3DE	. $W- 	,T^^UC	s=   !$F, H0 ,H-	H-AH('H((H-0I?IIc                B    t        | j                  | j                        S )z(Published claims that block acquisition.)r   rc   _claim_directoryrp   s    rH   r    zStrictSoftFileLock.claims   s     %T^^T5J5JKKrS   c                |    t        |       t        | j                  |       t        | j                  |      x}	 |y)zYRemove one named claim, allowing overlap if its owner still holds the protected resource.N)_validate_force_break_name_require_exact_namer   _unlink_in_directory)rp   
claim_namecleanup_errors      rH   force_breakzStrictSoftFileLock.force_break   sD    ":.D11:>1$2G2GTTM  rS   c                >    | j                   ry t        | 	  |       y r   )	is_lockedsuper_rollback_failed_acquire)rp   acquisition_error	__class__s     rH   r   z+StrictSoftFileLock._rollback_failed_acquire   s    
 >>():;rS   c                ^    | j                   sd | j                  _        t        |   |       y r   )r   ra   rb   r   _reconcile_failed_acquire)rp   	canonicalr   s     rH   r   z,StrictSoftFileLock._reconcile_failed_acquire   s#    ~~'+DMM$))4rS   c                   t        d| j                  j                        }d | j                  _        t	        | j                  j
                        \  }}t        |      | j                  _        |rt        d|       | j                          	 | j                  |d       |rt        d|       y y # t        $ r}|j                  |       Y d }~/d }~ww xY w)Nintzstrict claim release failedFdefault_suppresseszstrict release cleanup failed)r   ra   lock_file_fdrb   _unlink_owner_pathsr   tuple_raise_recorded_errors_mark_descriptor_released_close_released_fdrj   append)rp   fd	remainingerrorsrw   s        rH   _releasezStrictSoftFileLock._release   s    %334#' /0O0OP	6*/	*:'"#@&I&&(	'##B5#A "#BFK   	'MM+&&	's   B0 0	C9CCc                p   t        | j                  j                        \  }}t        |      | j                  _        |r| j	                  ||       t        d|       | j                          	 | j                  |d       |rt        d|       y y # t        $ r}|j                  |       Y d }~/d }~ww xY w)Nz#strict doorway claim cleanup failedFr   zstrict doorway cleanup failed)
r   ra   r   r   r   r   r   r   rj   r   )rp   r   identityr   r   rw   s         rH   ro   z#StrictSoftFileLock._discard_doorway   s    /0O0OP	6*/	*:'''H5"#H&Q&&(	'##B5#A "#BFK   	'MM+&&	's   .B 	B5B00B5c                    | j                   j                  r,t        | j                   j                  d         j                  S t        t	        | j
                         t               t        z  S )Nr   )ra   r   r   parentr   rc   r   r!   r   s    rH   r   z#StrictSoftFileLock._claim_directory   sU    ==**77:;BBBz$..123G2HIJMbbbrS   )returnNone)rs   r   rt   r   ru   tuple[int, int]r   r   )r   tuple[StrictSoftFileClaim, ...])r   r[   r   r   )r   rj   r   r   )r   r[   r   r   )r   r   r   r   r   r   )r   r   )__name__
__module____qualname____doc__rX   __annotations__rY   rZ   r\   r]   r_   rx   rm   propertyr    r   r   r   r   ro   r   __classcell__)r   s   @rH   rV   rV   _   s    D*.!4.#(D( !&%(f #f#'D'  $u#:9Dv L L <5LL c crS   rV   T)frozenc                  R    e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
Zded<   y
)StrictSoftFileClaimz"One parsed strict soft-lock claim.r[   r   StrictSoftFileClaimStater|   r   r   pidhostnameN
int | Nonestart)r   r   r   r   r   r   r   rS   rH   r   r     s+    ,
I##J	HM E:rS   r   c                      e Zd Zy)r   N)r   r   r   r   rS   rH   r   r     s    rS   r   c                   	 t        |      S # t        $ r Y nt        $ r Y y w xY wt        |t	        j                                	 t        t        j                  |      t        |      }|X|# t        $ r Y y t        t        f$ r:}t        | |       t        |t              r|j                  t        k7  r Y d }~nd }~ww xY w	 t        |      S # t        $ r Y y w xY wr   )_open_sentinelFileNotFoundErrorrC   !_reclaim_sentinel_private_recordstimer   rB   rd   r3   r   rD   r   r   rO   r   )rc   pathmoder   r   s        rH   rf   rf     s    d##   &dDIIK8
,$3BIIdOEUW[$\! %0++ ( ) (E:%)U[[F-B .Cd## s@   
 	###$A- -	C 8C 0B;;C 
C 	CCc                |    t        | t        t                    \  }}|t        k(  r|S t        j                  |       y r   )_open_recordlenr3   rB   rk   )r   r   records      rH   r   r   3  s4    dC(8$9:JB!!	HHRLrS   c           	        	 t        j                  |      5 }t        ||      }d d d        g }D ]I  }t        |      x}t        | |d      t        | ||      x}	-|j                  t        | |||	             K t        |      S # 1 sw Y   dxY w# t        $ r9}d|j                  xs t        |      j                   }t        | d |      |d }~ww xY w)Nzcannot list claim directory: z&unknown claim name or protocol version)rB   scandir_public_claim_namesrC   strerrortyper   r   _parse_claim_name_read_claim_recordr   _parse_claimr   )
rc   rF   entriesnamesr   reasonr    r   
name_partsr   s
             rH   _read_claimsr   ;  s    LZZ	"g'	7;E # )+F+D11J:+It=eff(ItDDFQMM,y$
FKL	 
 = #" L01W4;CWCW0XY'	4@eKLs-   B BB BB 	C4CCc                z   t        j                         t        z   }d}	 |rt        j                  t               t        | ||      \  }}||S t        j                         |k\  rU|j                  t        k(  ry d|j                  xs" t        |      xs t        |      j                   }t        | ||      |d})NFTcannot read claim: )r   	monotonicr/   sleepr0   _attempt_claim_readrO   r
   r   r[   r   r   r   )rc   rF   r   deadlinedelayingr   pendingr   s           rH   r   r   L  s     ~~"33HH
JJ()-iDI?M>>x'}}& *7+;+;+es7|+etT[}OeOe*fgF+ItVD'Q rS   c                H   	 t        ||z  t              d fS # t        $ r Y yt        $ r}d |fcY d }~S d }~wt        $ rb}|j
                  t        k(  r	d |fcY d }~S d|j                  xs" t        |      xs t        |      j                   }t        | ||      |d }~ww xY w)N)NNr   )_read_recordr#   r   PermissionErrorrC   rO   r
   r   r[   r   r   r   )rc   rF   r   r   r   s        rH   r   r   f  s    
LI,.ABDHH  U{ L;;& ;&u~~'[U'[tE{G[G[&\]'	4@eK	Ls4    	B!B!3B!B!BB!ABB!c                b   g }t        j                          }|D ]  }|j                  j                  d      s|j                  |j                         :t	        |j                        x}Rt        |      	 _t        t        j                  |       d f|j                  |        t        |      S )N.)
r   r   
startswithr   _private_public_namer   _reclaim_private_recordrB   rd   sorted)rF   r   r   nowentrypublic_names         rH   r   r   w  s    E
))+Czz$$S)LL$1%**==kJO`P
P $RYYy%94$@%**cR  %=rS   c                <    |j                         syt        | |      S )Nr   )existsr   )rc   rF   s     rH   r   r     s    	9--rS   c                   	 |j                  d      j                  d      \  }}}}}}	t        |      }
|rt        |      nd }t        j	                  |      j                  d      }t        |	 |t        k(  ||d   k(  d|
cxk  xr dk  nc t        |
      |k(  |d u xs |dk\  xr t        |      |k(  |j                         j                         |k(  xr% |j                         xr t        d |D               f      st        | |d      t        ||d   ||
||	      S # t
        t        f$ r}t        | |d      |d }~ww xY w)
Nascii
zutf-8zmalformed claim recordr   ir   c              3  <   K   | ]  }|j                           y wr   )isspacer~   	characters     rH   r   z_parse_claim.<locals>.<genexpr>  s     BII%%'s   )r   r|   r   r   r   r   )decodesplitr   bytesfromhexUnicodeDecodeErrorrE   r   allr"   r[   encodehexisprintabler   r   )rc   r   r   r   magicr   pid_texthostname_hex
start_texttrailingr   r   r   r   s                 rH   r   r     sY   ^EK]]SZE[EaEabfEgBuhj((m#-J4==.55g> A	SICHB%1*AUz)A</ 	C  "	CBBBB
 
 (	49QRRD
1UPS^fnstt 
+ ^'	49QRX]]^s   A%D! !E0D>>Ec                (   | j                  d      sy | j                  d      j                  d      }t        |      t        k7  s|d   t
        vs|d   dk7  ry |d   }t        |      t        k7  st        d |D              ry t        d|d         |fS )	Nr   -r   r   v1rz   c              3  $   K   | ]  }|d v 
 yw0123456789abcdefNr   r  s     rH   r   z$_parse_claim_name.<locals>.<genexpr>  s     -ichV_i?Q.Qch   r   )	endswithremovesuffixr  r   r%   r   r'   r   r   )r   partsr   s      rH   r   r     s    =="h'--c2E
5z++uQx}/LPUVWPX\`P`!HE
5z&&#-ich-i*i*E!H5u<<rS   c                    |  d| dS )Nz-v1-r   r   )r|   r   s     rH   r   r     s    WDv&&rS   c                B    | j                  d      j                  d      S )Nzheld-zintent-)removeprefixr   s    rH   r   r     s    W%229==rS   c           
        t               j                         j                         }t        t	        j
                               }|dn
t        |      }t         d|  dt	        j
                          d| d| d
j                  d      S )N r  r  )r   r  r  r   rB   getpidr[   r"   )r   r  r   r  s       rH   r   r     sr    ;%%'++-L		,E}#e*J^2eWBryy{m2l^2j\QST[[\cddrS   c                   t         j                  j                  |       \  }}|xs t         j                  }t	        |      }t
        rt        |      nd }||f}	 t        |||f||       |	 t        j                  |       y y # t        $ rA}	 |t        j                  |        # t        $ r}	t        d||	       Y d }	~	 d }	~	ww xY wd }~ww xY w# t        $ r}	|	cY d }	~	S d }	~	ww xY w)Nz+strict publication directory cleanup failed)rB   r   r  curdir_private_record_namer9   _open_directory_publish_record_in_directoryrj   rk   r   )
public_pathr   r   rF   r  private_namedirectory_fddirectory_refpublication_errorrw   s
             rH   r   r     s    
  WW]];7I{&RYYI'4L1F?9-DL|+M$]\;4OQUW]^ 	HH\"   	q'& 	  	q!"OQbdopp	q	  		sZ   B -C 	CB&%C	&	C/C<C	CC		C	C&C!C&!C&c                   t         j                  t         j                  z  t         j                  z  t        z  }t        t         dd       x}||z  }t        | |d   ||      }d }	 t        t        j                  |            }t        ||       t        | ||       t        | |d   ||      \  }	}
|	|
t        |	|
       y y # t        $ r,}t        | |d   ||      \  }	}
|	|
t        d||	|
        d }~ww xY w)N
O_NOFOLLOWr   z(strict record publication cleanup failed)rB   O_RDWRO_CREATO_EXCLr2   rN   _open_relativerh   ri   r   _link_private_recordrj    _close_and_unlink_private_recordr   !_raise_record_finalization_errors)r7  r   r   r   flags
o_nofollow
private_fdprivate_identityr8  rw   unlink_errors              rH   r3  r3    s!    II

"RYY.:Eb,55
BuQxEJ/3)"((:*>?*f%]E3CD  !Aa	!K ,":)+|D #;+  $D!H	%
!\ "l&>!:!	 	s   &7C 	C8'C33C8c                    d }	 t        j                  |       d }	 |t        | |       nt	        | ||       ||fS # t        $ r}|}Y d }~3d }~ww xY w# t
        $ r Y ||fS t        $ r}|}Y d }~||fS d }~ww xY wr   )rB   rk   rj   _unlink_relative_unlink_relative_if_identityr   )r7  r5  rD  rE  rw   r   rF  s          rH   r@  r@    s     )-K
 *.L#]L9(FVW
 $$     $$  $$s2   < A 	AAA	A9"A9*A44A9c                    	 t        | g|  t        | |d         |k(  ry d}t        |      # t        $ r#}t        | |d          d}t        |      |d }~ww xY w)Nr   z(private publication record was reclaimedr   z'private publication record was replaced)_link_relativer   _relative_identityr   )r7  r   rE  r   msgmsg_0s         rH   r?  r?    su    
;}-u- -q26FF5E
&u
--  ;mU1X6B8*3/U:	;s   . 	AAAc                    | |fD cg c]  }||	 }}t        |      dkD  rt        d|d   g|dd    |d   c c}w )Nr   z!strict record finalization failedr   r   r   )rw   rF  r   r   s       rH   rA  rA  .  sZ     #.|!<R!<@Qe!<FR
6{QA6!9ZvVWVXzZ
)O Ss   ;;c                R    d|  t          t        j                  t        dz         dS )Nr   rz   r)   )r(   r   r   r+   )r  s    rH   r1  r1  8  s/    {m23G4E4EFgklFl4m3nnrssrS   c                   | j                  d      r| j                  t              sy | dt        t                j	                  t
              \  }}}|t
        k7  s$t        |      t        k7  st        d |D              ry |S )Nr   r   c              3  $   K   | ]  }|d v 
 ywr#  r   r  s     rH   r   z'_private_public_name.<locals>.<genexpr>C  s     OJyy 22Jr%  )r  r&  r*   r   
rpartitionr(   r+   r   )r5  r  marker
random_hexs       rH   r  r  <  sv    ""3'|/D/DE[/\&21<R8S7S&T&_&_`v&w#K((z???OJOOrS   c                2   t        j                  | j                        d f}t        j                  | j                        5 }|D ]<  }t	        |j
                        | j
                  k(  s&t        ||j
                  |       > 	 d d d        y # 1 sw Y   y xY wr   )rB   rd   r   r   r  r   r  )r   r  r7  r   r  s        rH   r   r   I  sf    IIdkk*D0M	DKK	 GE#EJJ/499<'uzz3G  
!	 	 s   (B*BBc                   | \  }}	 |t         rt        j                  ||d      nt        ||      j	                         }t        j                  |j                        st        ||       d}t        |      |j                  dk(  r||j                  z
  t        k  ry 	 t        | |       y # t
        $ r Y y w xY w# t
        $ r Y y t        $ r#}|j                  t        t        hvr Y d }~y d }~ww xY w)NFdir_fdr>   z  is not a regular private recordr   )r;   rB   statr   lstatr   S_ISREGst_moderC   st_nlinkst_mtimer,   _unlink_private_record_oncerO   r   r	   )r7  r5  r  rF   r6  private_statrM  r   s           rH   r  r  Q  s    +I| ',A GGLuMi.446 	 <<,,-i.//OPcl!cL,A,A&ADY&Y#M<@     ;;vuo- .s/   :B. !B= .	B:9B:=	C3C3C..C3c                    | \  }}|t         rt        j                  ||       y t        ||      j                          y NrZ  )r:   rB   unlinkr   )r7  r5  rF   r6  s       rH   ra  ra  i  s6    +I| %<
		,|4Y%,,.rS   c                    | \  }}	 |t         rt        j                  ||d      }nt        ||      j	                         }t        |      S # t
        $ r Y y w xY w)NFrY  )r;   rB   r[  r   r\  r   rh   )r7  r   rF   r6  	path_stats        rH   rL  rL  s  sb    +I|#(=\5QIY-335I )$$  s   ;A 	AAc                    t        | |      |k(  r/t        j                  t              5  t	        | |       d d d        y y # 1 sw Y   y xY wr   )rL  
contextlibsuppressr   rH  )r7  r   r   s      rH   rI  rI    s@    
 -.(:  !23]D1 43 ;33s   A  A	c                    | \  }}|t        j                  ||||      S t        j                  t        ||      ||      S rd  )rB   openr   )r7  r   rB  r   rF   r6  s         rH   r>  r>    sK    +I| # 	eT,7 WWT)T*E48rS   c                ~    | \  }}|t         rt        ||||       y t        t        ||      t        ||             y )N
src_dir_fd
dst_dir_fd)r<   _link_no_followr   )r7  source_namedestination_namerF   r6  s        rH   rK  rK    sA    +I|$9%5,[ghDK0$yBR2STrS   ro  c                   t         sd}t        |      t        rt        j                  | |||d       y t        j                  | |||       y )Nz'os.link is unavailable on this platformF)rp  rq  r>   ro  )r8   rD   rJ   rB   r7   )rG   destinationrp  rq  rM  s        rH   rr  rr    sE      8!#&& $

zchi

zRrS   c                    | \  }}|t         rt        j                  ||       y t        j                  dk(  rt        t        |      |       y t        ||      j                          y )Nre  win32)r:   rB   rf  sysplatformr   r   )r7  r   rF   r6  s       rH   rH  rH    sP    +I|$;
		$|,		 T)_d3Y$$&rS   c                p   t         r;t        t        |             }	 t        ||||       	 t        j                  |       y t        | |z  | |z         y # t        $ r?}	 t        j                  |        # t        $ r}t        d||       Y d }~ d }~ww xY wd }~ww xY w# t        $ r}|cY d }~S d }~ww xY w)Nro  z$strict link directory cleanup failed)r<   r2  r[   rr  rj   rB   rk   r   )rF   rs  rt  r6  
link_errorrw   s         rH   r   r     s    &s9~6	K)9l_kl	HH\" I+Y9I-IJ  	g&  ! g%&LjZeffg	  		sX   A B  	BA54B5	B>BBBBB 	B5)B0*B50B5c                    t         j                  j                  |       \  }}t        t	        |xs t         j
                        |      S r   )rB   r   r  r   r   r0  )r   rF   r   s      rH   _unlink_owner_pathr~    s3    ggmmD)OItY%;")) <dCCrS   c                    | D cg c]  }|t        |      f }}|D cg c]  \  }\  }}|r| c}}}|D cg c]  \  }\  }}|| c}}fS c c}w c c}}}w c c}}w r   )_unlink_owner_path_result)pathsr   resultsremoved_r   s         rH   r   r     s}    CHI54/565GI+2B7'T<GQ'D7B#*E#*-!Zae.?7E   JB Es   AAAA
Ac                j    	 t        |       }d|fS # t        $ r Y yt        $ r}d|fcY d }~S d }~ww xY w)N)TNFT)r~  r   rj   )r   r   r   s      rH   r  r    sE    *40
 	   e|s    	22-22c                N    t        |      dkD  rt        | |d   g|dd    |d   )Nr   r   rP  )messager   s     rH   r   r     s/    
6{Qgvay>6!":>
)OrS   c                   t         rCt        t        |             }	 t        j                  ||       	 t        j                  |       y t        j                  dk7  rt        | |z        j	                          y d}t        t              D ]T  }t        | |z        x} y |j                  t        t         hvs|t        dz
  k(  r|t#        j$                  |       |dz  }V y # t
        $ r?}	 t        j                  |        # t
        $ r}t        d||       Y d }~ d }~ww xY wd }~ww xY w# t
        $ r}|cY d }~S d }~ww xY w)Nre  z&strict unlink directory cleanup failedrx  gMbP?r   rz   )r:   r2  r[   rB   rf  rj   rk   r   ry  rz  r   ranger.   _unlink_errorrO   r   r	   r   r   )rF   r   r6  rF  rw   retry_delayattemptr   s           rH   r   r     s4   &s9~6	IId<0	HH\" 
||wY%%'K,-"9t#344E=;;vuo-<ORS<S1SK

;q . -  	k&  ! k%&NP\^ijjk	  		sX   C# D. #	D+-DD&	D#DD&D##D&&D+.	E7D>8E>Ec                V    	 | j                          y # t        $ r}|cY d }~S d }~ww xY wr   )rf  rC   )r   r   s     rH   r  r    s,       s    	(#((c           	         t        j                  | t         j                  t        t         dd      z  t        t         dd      z        S )NO_DIRECTORYr   r:  )rB   rm  O_RDONLYrN   )rF   s    rH   r2  r2    s:    77
gb-33gb,PQ6RR rS   c                N    t        | |      \  }}t        j                  |       |S r   )r   rB   rk   )r   limitr   r   s       rH   r   r     s"    dE*JBHHRLMrS   c                   | j                         }t        j                  |j                        s|  d}t	        |      t
        j                  t        z  t        t
        dd      z  t        t
        dd      z  }t        j                  | |      }	 t        || ||      }||fS # t        $ r?}	 t        j                  |        # t        $ r}t        d||       Y d }~ d }~ww xY wd }~ww xY w)N is not a regular filer:  r   
O_NONBLOCKz!strict record read cleanup failed)r\  r[  r]  r^  rC   rB   r  r2   rN   rm  _read_opened_recordrj   rk   r   )	r   r  rh  rM  rB  r   r   
read_errorrw   s	            rH   r   r     s    

I<<	))*,-clKK)#gb,&BBWRQ]_`EaaE	u	B$Ry%@ v:  	`HHRL 	  	`!"EzS^__	`s<   B$ $	C,.CC'	C$CC'C$$C''C,c                P   t        j                  |       }t        j                  |j                        s| d}t        |      t        |      t        |      k7  r| d}t        |      t        j                  | |dz         }t        |      |kD  r| d| d}t        |      |S )Nr  z changed while openingr   z	 exceeds z bytes)	rB   ri   r[  r]  r^  rC   rh   readr   )r   r   rh  r  opened_statrM  r   s          rH   r  r  .  s    ((2,K<<++,,-clk"nY&??,-clWWR#F
6{Uiwf-clMrS   c                6   	 |j                          y # t        $ r| 	 |j                         j                  }n"# t        $ r}t        | d d|       |d }~ww xY wt        j                  |      rt        j                  |      sY y t        | d | d      d w xY w)Nzcannot inspect z is not a real directory)	mkdirFileExistsErrorr\  r^  rC   r   r[  S_ISDIRS_ISLNK)rc   rF   r   r   s       rH   re   re   =  s    	k k	g??$,,D 	g+Ityk=Z[aff	g<<dll4&8'	4I;F^9_`fjjks/    	B8B	AAA-BBc                       xs5  j                  d      xs"  t        j                  t        j                  hv }|st	         fddD              rd}t        |      y )Nr   c              3  &   K   | ]  }|v  
 y wr   r   )r~   	separatorr   s     rH   r   z-_validate_force_break_name.<locals>.<genexpr>L  s     WCVi	T 1CVs   )/\ z,claim_name must be one public claim basename)r  rB   r0  pardirr   rE   )r   invalid_componentrM  s   `  rH   r   r   J  sY     ZDOOC$8ZDRYYPRPYPYDZ<ZCWCVWW<o XrS   c                    t        j                  |       5 }t        fd|D              s(t        t        t        j
                  t                    	 d d d        y # 1 sw Y   y xY w)Nc              3  <   K   | ]  }|j                   k(    y wr   r   )r~   r  r   s     rH   r   z&_require_exact_name.<locals>.<genexpr>S  s     ;7%5::%7s   )rB   r   r   r   r   r   )rF   r   r   s    ` rH   r   r   Q  sH    	I	';7;;#FBKK,?FF < 
		s   =AA'c                    t        |t              xs' |j                  t        v xs t	        |dd       t
        v }|rd}t        | d |      |y )NwinerrorzCfilesystem does not support atomic no-replace hard-link publication)r   rD   rO   rT   rN   r6   r   )rc   r   unsupportedr   s       rH   r   r   W  s]    5-. 	P;;77	PE:t,0NN 
 V'	4@eK rS   c                2    | j                   | j                  fS r   )st_devst_ino)sts    rH   rh   rh   b  s    99biirS   )r   r   rV   )r   rW   )r   zfrozenset[int])rc   r[   r   r   r   r   r   r   )r   r   r   r   )rc   r[   rF   r   r   r   )rc   r[   rF   r   r   r[   r   zbytes | None)rc   r[   rF   r   r   r[   r   z#tuple[bytes | None, OSError | None])rF   r   r   zIterator[os.DirEntry[str]]r   z	list[str])
rc   r[   r   r[   r   z$tuple[StrictSoftFileClaimState, str]r   r  r   r   )r   r[   r   z+tuple[StrictSoftFileClaimState, str] | None)r|   r   r   r[   r   r[   )r   r[   r   r[   )r   r[   r   r  )r4  r[   r   r  r   r   r   BaseException | None)
r7  tuple[str, int | None]r   tuple[str, str]r   r   r   r  r   r   )
r7  r  r5  r[   rD  r   rE  tuple[int, int] | Noner   z1tuple[BaseException | None, BaseException | None])r7  r  r   r  rE  r   r   r   )rw   r  rF  r  r   r   )r  r[   r   r[   )r5  r[   r   z
str | None)r   r   r  r^   r   r   )r7  r  r5  r[   r  r^   r   r   )r7  r  r5  r[   r   r   )r7  r  r   r[   r   r  )r7  r  r   r[   r   r   r   r   )
r7  r  r   r[   rB  r   r   r   r   r   )r7  r  rs  r[   rt  r[   r   r   )
rG   
str | Pathrv  r  rp  r   rq  r   r   r   )r7  r  r   r[   r   r   )rF   r   rs  r[   rt  r[   r   r  )r   r[   r   r  )r  ztuple[str, ...]r   z%tuple[list[str], list[BaseException]])r   r[   r   z!tuple[bool, BaseException | None])r  r[   r   zlist[BaseException]r   r   )rF   r   r   r[   r   r  )r   r   r   zOSError | None)rF   r[   r   r   )r   r   r  r   r   r  )r   r   r  r   r   ztuple[int, bytes])
r   r   r   r   rh  os.stat_resultr  r   r   r  )rc   r[   rF   r   r   r   )r   r[   r   r   )rF   r   r   r[   r   r   )rc   r[   r   zNotImplementedError | OSErrorr   r   )r  r  r   r   )
__future__r   rj  rO   rB   r   r[  ry  r?   r   dataclassesr   r   r   r   r   r	   r
   r   pathlibr   typingr   r   r   r   _apir   r   r   _errorr   	_identityr   r   _soft_protocolr   _utilr   r   collections.abcr   r   rP   r   r   r   r!   r"   r#   r%   r'   r(   r*   r+   r,   r.   r/   r0   rN   r2   r  r3   r6   hasattrr8   rm  supports_dir_fdr9   rf  r:   r;   r7   r<   rI   rJ   rR   rT   rV   r   	Exceptionr   rf   r   r   r   r   r   r   r   r   r   r   r   r   r3  r@  r?  rA  r1  r  r   r  ra  rL  rI  r>  rK  rr  rH  r   r~  r   r  r   r   r  r2  r   r   r  re   r   r   r   rh   __all__r   rS   rH   <module>r     si   "   	   
   ! F F F  6 6 A A - 5 7 5("#34 '0(F1C'D$ D#. j .$, z ,/j /"& Z &%& 
 & " : "%3 
 3%+ 
 +02 !: 2&) | )"$ Z $"% < %"' < '  J2	: 2!C!<!C!C!E , E8A+8N  5 N
 !V,	; , &(WW0B0B%B { B')yyB4F4F'F  F%'WW0B0B%B { B%.%P277b>P>P3P { P$ -H,I k Ic 8[7\ 4 \ec ecP $
 
 
	9 	4"4L"
.uu
u 5u 	u
 u8	='>e  	6%E)%E%E %E 	%E
 
%EP%)%% % -	%
 7%0.).. &. 
	.$%& 
t
H0/	%2)2
2 2 
	2U "!SSS 	S
 S 
S*'(D
<$
kGL rS   