
    Loj                    Z   % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJrJrJrJr  SSKJrJrJr  SS	KJr  SS
K J!r!J"r"  SSK#J$r$  SSK%J&r&J'r'  \(       a  S SK(J)r)  \S   r*\+" SS15      r,S\-S'   Sr.S\-S'   Sr/S\-S'   Sr0S\-S'   Sr1S\-S'   Sr2S\-S'   Sr3S\-S '   S!r4S\-S"'   S#r5S\-S$'   Sr6S\-S%'   S&r7S'\-S('   S)r8S\-S*'   S+r9S'\-S,'   S-r:S'\-S.'   \;" \S/S 5      r<S\-S0'   \$Rz                  " 5       r>S1\-S2'   \+" 1 S3k5      r?S4\-S5'   \@" \S65      rAS7\-S8'   \R                  \R                  ;   rDS7\-S9'   \R                  \R                  ;   rFS7\-S:'   \R                  \R                  ;   rGS7\-S;'   \A=(       a    \R                  \R                  ;   rIS7\-S<'   SwS= jrJ\J" 5       rKS7\-S>'   SxS? jrL\L" 5       rMS4\-S@'    " SA SB\5      rN\" SCSD9 " SE SF5      5       rO " SG SH\P5      rQSySI jrRSzSJ jrSS{SK jrTS|SL jrUS}SM jrVS~SN jrWS{SO jrX          SSP jrYSSQ jrZSSR jr[SSS jr\SST jr]        SSU jr^          SSV jr_          SSW jr`        SSX jra      SSY jrbSSZ jrcSS[ jrdSS\ jreSS] jrfSS^ jrgSS_ jrh        SS` jriSSa jrjSSb jrkSSSc.         SSd jjrlSSe jrmSSf jrnSSg jroSSh jrpSSi jrqSSj jrrSSk jrsSSl jrtSSm jruSSn jrvSSo jrwSSp jrxSSq jrySSr jrzSSs jr{SSt jr|SSu jr}/ SvQr~g)    )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                 *   [         (       d  g [        R                  " 5        n [        U S5      nUR	                  5         [
        R                  " U[        U S5      SS9  S S S 5        g! , (       d  f       g= f! [        [        [        4 a     gf = f)NFzprobe-sourcez
probe-link)follow_symlinksT)
r8   tempfileTemporaryDirectoryr   touchosr7   OSErrorNotImplementedError
ValueError)	directorysources     J/mnt/workspace/venv-train/lib/python3.13/site-packages/filelock/_strict.py_probe_link_follow_symlinksrI   =   s~     9((*i)^4FLLNGGFDL95Q +  +*  (*5 s.   A: =A) A: )
A73A: 7A: :BB_LINK_HONORS_FOLLOW_SYMLINKSc            	         [        [        S[        [        SS 5      5      n [        U c  [        [        15      $ [        [        U 15      $ )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                     ^  \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'   S	r	S
\S'   Sr
S\S'   SrS\S'   SS jrSS jr\SS j5       rSS jrSU 4S jjrSU 4S jjrSS jrS S jr\S!S j5       rSrU =r$ )"StrictSoftFileLock_   z: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                J   U R                   R                  =nc%  [        U R                  5      =oR                   l        [	        U5      n[	        U [
         35      nU[        -  n[        [        R                  " U5      5        [        U R                  U5        [        U R                  U5        [        U R                  X R                  5       5      =nc  g  [        [        R                  " U5      5      nU R%                  XV5         U R'                  XEU5        g ! [         a@  n [        R                   " U5        e ! [         a  n[#        SXx5         S nAe S nAff = fS nAff = f! [         a-    U R                   R(                  U:X  a  U R+                  XV5        e f = f)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)	selfrc   	lock_pathcoordination_directoryclaim_directorysentinel_fdsentinel_identityinspection_errorclose_errors	            rH   _acquireStrictSoftFileLock._acquiren   sj    --222J;4>t~~4NNJ1$	!%4H3I&J!K03HH		) 45"4>>3IJ"4>>?C3DNNIO`aaKj	 .rxx/D E 	%%kE	!!/@QR  	r%  ! r%&QScqqr	  	}}11[@%%kE	sH   D E+ 
E()E ?E# 
E 
EE#E  E##E(+7F"c                   [        U R                  U5      (       a  U R                  X#5        g [        R                  " [
        S-  5      n[        SU5      n[        X-  5      n [        U[        U5      U R                  5       5      nUb  UeU4U R$                  l        [        U R                  U5      n	U	(       a-  [)        S U	 5       5      (       d  [+        S U	 5       5      U:w  a  U R                  X#5        g [        SU5      n
[        X-  5      n [-        XU
5      nX4U R$                  l        Ub  SU R$                  l        Ue[        U R                  U5      n	XZ1R/                  S U	 5       5      (       a  [+        S U	 5       5      S	U S
3:w  a  U R                  X#5        g U R1                  X#5        g ! [         a    U R                  X#5         g [        [        4 a[  n[        U R                  U5        [        U[        5      (       a*  UR                   ["        :X  a  U R                  X#5         S nAg e S nAff = f! [        [        4 a  n[        U R                  U5        e S nAff = f)N   r   c              3  >   #    U  H  oR                   S :H  v   M     g7f)r   N)state.0claims     rH   	<genexpr>6StrictSoftFileLock._attempt_doorway.<locals>.<genexpr>   s     =fU;;&(fs   c              3  8   #    U  H  oR                   v   M     g 7fNnamer   s     rH   r   r      s     26%::6   r    c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     rH   r   r      s     1Q&**&r   c              3  L   #    U  H  n[        UR                  5      v   M     g 7fr   )_claim_token_keyr   r   s     rH   r   r      s     DVE#EJJ//Vs   "$zv1-.claim)_read_existing_claimsrd   rp   secrets	token_hexr'   _claim_namer\   _publish_record_claim_recordrh   _PrivateRecordReclaimedErrorrD   rC    _raise_if_hard_links_unsupported
isinstancerO   r   rb   owner_claim_pathsanymin_link_no_replaceissubset_mark_descriptor_owned)rq   rt   ru   rv   tokenintent_nameintent_pathpublication_cleanup_errorerrorr    	held_name	held_pathlink_cleanup_errors                rH   rn   #StrictSoftFileLock._attempt_doorway   s*    AA!!+A!!"3q"89!(E2/78
	(7]SXEY[_[j[j[l(m% %0+++6.'&t~~G=f===2622kA!!+A.	34		!1/PY!Z ,5*B').0DMM+$$&t~~G(111Q&1QQQDVDD#eWTZH[[!!+A 	##KC_ , 	!!+A#W- 	,T^^UC%))ekkV.C%%kE	. $W- 	,T^^UC	s=   %$F< I <II(AH>=H>>II2I--I2c                B    [        U R                  U R                  5      $ )z(Published claims that block acquisition.)r   rd   _claim_directoryrq   s    rH   r    StrictSoftFileLock.claims   s     %T^^T5J5JKKrS   c                ~    [        U5        [        U R                  U5        [        U R                  U5      =n b  Ueg)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)rq   
claim_namecleanup_errors      rH   force_breakStrictSoftFileLock.force_break   sD    ":.D11:>1$2G2GTTM  rS   c                H   > U R                   (       a  g [        TU ]	  U5        g r   )	is_lockedsuper_rollback_failed_acquire)rq   acquisition_error	__class__s     rH   r   +StrictSoftFileLock._rollback_failed_acquire   s    
 >>():;rS   c                h   > U R                   (       d  S U R                  l        [        TU ]  U5        g r   )r   rb   rc   r   _reconcile_failed_acquire)rq   	canonicalr   s     rH   r   ,StrictSoftFileLock._reconcile_failed_acquire   s#    ~~'+DMM$))4rS   c                   [        SU R                  R                  5      nS U R                  l        [	        U R                  R
                  5      u  p#[        U5      U R                  l        U(       a  [        SU5        U R                  5          U R                  USS9  U(       a  [        SU5        g g ! [         a  nUR                  U5         S nAN5S nAff = f)Nintzstrict claim release failedFdefault_suppresseszstrict release cleanup failed)r   rb   lock_file_fdrc   _unlink_owner_pathsr   tuple_raise_recorded_errors_mark_descriptor_released_close_released_fdrk   append)rq   fd	remainingerrorsrx   s        rH   _releaseStrictSoftFileLock._release   s    %334#' /0O0OP	*/	*:'"#@&I&&(	'##B5#A "#BFK   	'MM+&&	's   B6 6
C CCc                |   [        U R                  R                  5      u  p4[        U5      U R                  l        U(       a  U R	                  X5        [        SU5        U R                  5          U R                  USS9  U(       a  [        SU5        g g ! [         a  nUR                  U5         S nAN5S nAff = f)Nz#strict doorway claim cleanup failedFr   zstrict doorway cleanup failed)
r   rb   r   r   r   r   r   r   rk   r   )rq   r   identityr   r   rx   s         rH   rp   #StrictSoftFileLock._discard_doorway   s    /0O0OP	*/	*:'''5"#H&Q&&(	'##B5#A "#BFK   	'MM+&&	's   1B 
B; B66B;c                    U R                   R                  (       a,  [        U R                   R                  S   5      R                  $ [        [	        U R
                  5       [         35      [        -  $ )Nr   )rb   r   r   parentr   rd   r   r!   r   s    rH   r   #StrictSoftFileLock._claim_directory   sU    ==**77:;BBBz$..123G2HIJMbbbrS   r   )returnNone)rt   r   ru   r   rv   tuple[int, int]r   r   )r   tuple[StrictSoftFileClaim, ...])r   r\   r   r   )r   rk   r   r   )r   r\   r   r   )r   r   r   r   r   r   )r   r   )__name__
__module____qualname____firstlineno____doc__rY   __annotations__rZ   r[   r]   r^   r`   ry   rn   propertyr    r   r   r   r   rp   r   __static_attributes____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                  Z    \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S\S
'   SrS\S'   Srg)StrictSoftFileClaimi  z"One parsed strict soft-lock claim.r\   r   StrictSoftFileClaimStater~   r   r   pidhostnameN
int | Nonestartr   )r   r   r   r   r   r   r   r   r   rS   rH   r   r     s+    ,
I##J	HM E:rS   r   c                      \ rS rSrSrg)r   i  r   N)r   r   r   r   r   r   rS   rH   r   r     s    rS   r   c                    [        U5      $ ! [         a     O[         a     g f = f[        U[        R                  " 5       5         [        [        R                  " U5      [        U5      nUb  UeO]! [         a     g [        [        4 a?  n[        X5        [        U[        5      (       a  UR                  [        :w  a  e  S nAOS nAff = f [        U5      $ ! [         a     g f = fr   )_open_sentinelFileNotFoundErrorrC   !_reclaim_sentinel_private_recordstimer   rB   re   r3   r   rD   r   r   rO   r   )rd   pathmoder   r   s        rH   rg   rg     s    d##   &dDIIK8
,$3BIIdOEUW[$\! %0++ 1 ( ) (:%))U[[F-B .Cd## s@   
 
%	%%%A3 3
C?C5CC
C 
C)(C)c                ~    [        U [        [        5      5      u  pU[        :X  a  U$ [        R                  " U5        g r   )_open_recordlenr3   rB   rl   )r   r   records      rH   r   r   3  s2    dC(8$9:JB!!	HHRLrS   c           	         [         R                  " U5       n[        X5      nS S S 5        / nW HI  n[        U5      =nc  [        XS5      e[        XU5      =n	c  M.  UR                  [        XX5      5        MK     [        U5      $ ! , (       d  f       Nj= f! [         a>  nSUR                  =(       d    [        U5      R                   3n[        U S U5      UeS nAff = f)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   )
rd   rF   entriesnamesr   reasonr    r   
name_partsr   s
             rH   _read_claimsr   ;  s    LZZ	"g'	;E # )+F+D11J:+I=eff(tDDFQMM,y
KL	 
 = #" L01W4;CWCW0XY'	4@eKLs3   B BB 
BB B 
C!#9CC!c                   [         R                  " 5       [        -   nSn U(       a  [         R                  " [        5        [        XU5      u  pVUc  U$ [         R                  " 5       U:  a_  UR                  [        :X  a  g SUR                  =(       d'    [        U5      =(       d    [        U5      R                   3n[        XU5      UeSnM  )NFTcannot read claim: )r   	monotonicr/   sleepr0   _attempt_claim_readrO   r
   r   r\   r   r   r   )rd   rF   r   deadlinedelayingr   pendingr   s           rH   r   r   L  s     ~~"33HH
JJ()-iDI?M>>x'}}& *7+;+;+es7|+etT[}OeOe*fgF+IVD'Q rS   c                `    [        X-  [        5      S 4$ ! [         a     g[         a  nS U4s S nA$ S nAf[         al  nUR
                  [        :X  a	  S U4s S nA$ SUR                  =(       d'    [        U5      =(       d    [        U5      R                   3n[        XU5      UeS nAff = f)N)NNr  )_read_recordr#   r   PermissionErrorrC   rO   r
   r   r\   r   r   r   )rd   rF   r   r   r   s        rH   r  r  f  s    
LI,.ABDHH  U{ L;;& ;&u~~'[U'[tE{G[G[&\]'	@eK	Ls5    
B-	B-4B-B-B(B-A
B((B-c                ~   / n[         R                   " 5       nU H  nUR                  R                  S5      (       d  UR                  UR                  5        M@  [	        UR                  5      =nc  MZ  [        U5       c  Mi  [        [        R                  " U 5      S 4UR                  U5        M     [        U5      $ )N.)
r   r   
startswithr   _private_public_namer   _reclaim_private_recordrB   re   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                D    UR                  5       (       d  g[        X5      $ )Nr   )existsr   )rd   rF   s     rH   r   r     s    	--rS   c                    UR                  S5      R                  S5      u  pEpgp[        U5      n
U(       a  [        U5      OS n[        R	                  U5      R                  S5      n[        U	(       + U[        :H  XRS   :H  SU
s=:*  =(       a    S:*  Os  [        U
5      U:H  US L =(       d    US:  =(       a    [        U5      U:H  UR                  5       R                  5       U:H  =(       a.    UR                  5       =(       a    [        S U 5       5      (       + 45      (       d  [        XS5      e[        XS   XZXS	9$ ! [
        [        4 a  n[        XS5      UeS nAff = f)
Nascii
zutf-8zmalformed claim recordr   ir   c              3  @   #    U  H  oR                  5       v   M     g 7fr   )isspacer   	characters     rH   r   _parse_claim.<locals>.<genexpr>  s     BI%%''s   )r   r~   r   r   r   r   )decodesplitr   bytesfromhexUnicodeDecodeErrorrE   r   allr"   r\   encodehexisprintabler   r   )rd   r   r   r   magicr   pid_texthostname_hex
start_texttrailingr   r   r   r   s                 rH   r   r     sM   ^EK]]SZE[EaEabfEgBhj(m#-J4==.55g> A	SICHB%1*AUz)A</ 	C  "	CBBBB
 
 
 (	9QRRD1U^ftt 
+ ^'	9QRX]]^s   A'E E#EE#c                F   U R                  S5      (       d  g U R                  S5      R                  S5      n[        U5      [        :w  d  US   [
        ;  d	  US   S:w  a  g US   n[        U5      [        :w  d  [        S U 5       5      (       a  g [        SUS   5      U4$ )	Nr   -r   r   v1r|   c              3  *   #    U  H	  oS ;  v   M     g7f0123456789abcdefNr   r  s     rH   r   $_parse_claim_name.<locals>.<genexpr>  s     -ichV_?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*i*E!H5u<<rS   c                    U  SU S3$ )Nz-v1-r   r   )r~   r   s     rH   r   r     s    WDv&&rS   c                B    U R                  S5      R                  S5      $ )Nzheld-zintent-)removeprefixr   s    rH   r   r     s    W%229==rS   c           
        [        5       R                  5       R                  5       n[        [        R
                  " 5       5      nUc  SO
[        U5      n[         SU  S[        R
                  " 5        SU SU S3
R                  S5      $ )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                   [         R                  R                  U 5      u  p4U=(       d    [         R                  n[	        U5      n[
        (       a  [        U5      OS nX64n [        XuU4X!5        Ub   [         R                  " U5        g g ! [         aC  n Ub  [         R                  " U5        e ! [         a  n	[        SX5         S n	A	e S n	A	ff = fS nAff = f! [         a  n	U	s S n	A	$ S n	A	ff = f)Nz+strict publication directory cleanup failed)rB   r   r   curdir_private_record_namer9   _open_directory_publish_record_in_directoryrk   rl   r   )
public_pathr   r   rF   r  private_namedirectory_fddirectory_refpublication_errorrx   s
             rH   r   r     s    
  WW]];7I&RYYI'4L1F1F?9-DL+M$];4OQU^ 	HH\"   	q'& 	  	q!"OQbpp	q	  		sZ   "B 4C 
CB10C1
C;CCCCC
C2&C-'C2-C2c                   [         R                  [         R                  -  [         R                  -  [        -  n[        [         SS 5      =nb  XE-  n[        XS   XB5      nS n [        [         R                  " U5      5      n[        Xc5        [        XU5        [        U US   UU5      u  pU	c  U
b  [        X5        g g ! [         a-  n[        U US   UU5      u  pU	c  U
b  [        SUU	U
5        e S nAff = f)N
O_NOFOLLOWr   z(strict record publication cleanup failed)rB   O_RDWRO_CREATO_EXCLr2   rN   _open_relativeri   rj   r   _link_private_recordrk    _close_and_unlink_private_recordr   !_raise_record_finalization_errors)rF  r   r   r   flags
o_nofollow
private_fdprivate_identityrG  rx   unlink_errors              rH   rB  rB    s    II

"RYY.:Eb,55
BQxEJ/3)"((:*>?*%]3CD  !Aa	!K ,":)+D #;+  $D!H	%
! "l&>!:!	 	s   $6C   
C7
(C22C7c                    S n [         R                  " U5        S n Uc  [        X5        XF4$ [	        XU5         XF4$ ! [         a  nUn S nAN5S nAff = f! [
         a     XF4$ [         a  nUn S nAXF4$ S nAff = fr   )rB   rl   rk   _unlink_relative_unlink_relative_if_identityr   )rF  rD  rS  rT  rx   r   rU  s          rH   rO  rO    s     )-K
 *.L#]9 $$ )FVW
 $$     $$  $$s7   > A A 
AAA
A<%	A<.A77A<c                     [        U /UQ76   [        XS   5      U:X  a  g Sn[        U5      e! [         a#  n[        XS   5      b  e Sn[        U5      UeS nAff = f)Nr   z(private publication record was reclaimedr   z'private publication record was replaced)_link_relativer   _relative_identityr   )rF  r   rT  r   msgmsg_0s         rH   rN  rN    sq    
;}-u- -q26FF5E
&u
--  ;m1X6B8*3/U:	;s   . 
AAAc                    X4 Vs/ s H	  o"c  M  UPM     nn[        U5      S:  a  [        SUS   /USS  Q76   US   es  snf )Nr   z!strict record finalization failedr   r   r   )rx   rU  r   r   s       rH   rP  rP  .  sS     #.!<R!<e!<FR
6{QA6!9ZvVWVXzZ
)O Ss   ??c                T    SU  [          [        R                  " [        S-  5       S3$ )Nr  r|   r)   )r(   r   r   r+   )r  s    rH   r@  r@  8  s/    {m23G4E4EFgklFl4m3nnrssrS   c                $   U R                  S5      (       a  U R                  [        5      (       d  g U S[        [        5      *  R	                  [
        5      u  pnU[
        :w  d*  [        U5      [        :w  d  [        S U 5       5      (       a  g U$ )Nr  r   c              3  *   #    U  H	  oS ;  v   M     g7fr1  r   r  s     rH   r   '_private_public_name.<locals>.<genexpr>C  s     OJy 22Jr4  )r  r5  r*   r   
rpartitionr(   r+   r   )rD  r  marker
random_hexs       rH   r  r  <  s}    ""3''|/D/DE[/\/\&21<R8S7S&T&_&_`v&w#K((z???OJOOOrS   c                D   [         R                  " U R                  5      S 4n[         R                  " U R                  5       nU H>  n[	        UR
                  5      U R
                  :X  d  M(  [        X$R
                  U5        M@     S S S 5        g ! , (       d  f       g = fr   )rB   re   r   r   r  r   r  )r   r  rF  r   r  s        rH   r   r   I  sd    IIdkk*D0M	DKK	 GE#EJJ/499<'zz3G  
!	 	 s   'B.B
Bc                   U u  p4 Ub   [         (       a  [        R                  " XSS9O[        X15      R	                  5       n[        R                  " UR                  5      (       d  [        X15       S3n[        U5      eUR                  S:X  a  X%R                  -
  [        :  a  g  [        X5        g ! [
         a     g f = f! [
         a     g [         a%  nUR                  [        [        1;  a  e  S nAg S nAff = f)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	   )rF  rD  r  rF   rE  private_statr\  r   s           rH   r  r  Q  s    +I ',A,A GGLuMi.446 	 <<,,--i.//OPcl!c,A,A&ADY&Y#M@     ;;vuo- .s/   <B4 (C 4
C C
C>	C>C99C>c                    U u  p#Ub   [         (       a  [        R                  " XS9  g [        X!5      R                  5         g Nrj  )r:   rB   unlinkr   )rF  rD  rF   rE  s       rH   rq  rq  i  s3    +I %<%<
		,4Y%,,.rS   c                    U u  p# Ub!  [         (       a  [        R                  " XSS9nO[        X!5      R	                  5       n [        U5      $ ! [
         a     g f = f)NFri  )r;   rB   rk  r   rl  r   ri   )rF  r   rF   rE  	path_stats        rH   r[  r[  s  s_    +I#(=(=5QIY-335I )$$  s   #A A 
AAc                    [        X5      U:X  a/  [        R                  " [        5         [	        X5        S S S 5        g g ! , (       d  f       g = fr   )r[  
contextlibsuppressr   rW  )rF  r   r   s      rH   rX  rX    s<    
 -.(:  !23]1 43 ;33s   A  
Ac                z    U u  pEUb  [         R                  " XX5S9$ [         R                  " [        XA5      X#5      $ rt  )rB   openr   )rF  r   rQ  r   rF   rE  s         rH   rM  rM    sA    +I # 	T7 WWT)*E8rS   c                z    U u  p4Ub  [         (       a  [        XXDS9  g [        [        X15      [        X25      5        g )N
src_dir_fd
dst_dir_fd)r<   _link_no_followr   )rF  source_namedestination_namerF   rE  s        rH   rZ  rZ    s7    +I$9$9,hD0$y2STrS   r  c                   [         (       d  Sn[        U5      e[        (       a  [        R                  " XX#SS9  g [        R                  " XX#S9  g )Nz'os.link is unavailable on this platformF)r  r  r>   r  )r8   rD   rJ   rB   r7   )rG   destinationr  r  r\  s        rH   r  r    sB     9 8!#&& $#

chi

RrS   c                    U u  p#Ub   [         (       a  [        R                  " XS9  g [        R                  S:X  a  [        [        U5      U5        g [        X!5      R                  5         g )Nru  win32)r:   rB   rv  sysplatformr   r   )rF  r   rF   rE  s       rH   rW  rW    sM    +I$;$;
		$,		 T)_d3Y$$&rS   c                t   [         (       a7  [        [        U 5      5      n [        XX3S9   [
        R                  " U5        g [        X-  X-  5        g ! [         a@  n [
        R                  " U5        e ! [         a  n[        SXE5         S nAe S nAff = fS nAff = f! [         a  nUs S nA$ S nAff = f)Nr  z$strict link directory cleanup failed)r<   rA  r\   r  rk   rB   rl   r   )rF   r  r  rE  
link_errorrx   s         rH   r   r     s    &s9~6	Kll	HH\" I+Y-IJ  	g&  ! g%&Ljffg	  		sX   
A B! 
BA65B6
B BBBBB!
B7+B2,B72B7c                    [         R                  R                  U 5      u  p[        [	        U=(       d    [         R
                  5      U5      $ r   )rB   r   r   r   r   r?  )r   rF   r   s      rH   _unlink_owner_pathr    s1    ggmmD)OIY%;")) <dCCrS   c                    U  Vs/ s H  o[        U5      4PM     nnU VVVs/ s H  u  nu  p4U(       a  M  UPM     snnnU VVs/ s H  u  nu  pEUc  M  UPM     snn4$ s  snf s  snnnf s  snnf r   )_unlink_owner_path_result)pathsr   resultsremoved_r   s         rH   r   r     st    CHI54/565GI+2B7'T<G'D7B#*E#*-!Zae7E   JB Es   A!A&A&A-A-c                n     [        U 5      nSU4$ ! [         a     g[         a  nSU4s S nA$ S nAff = f)N)TNFT)r  r   rk   )r   r   r   s      rH   r  r    sE    *40
 	   e|s    
4	4/44c                N    [        U5      S:  a  [        XS   /USS  Q76   US   e)Nr   r   r_  )messager   s     rH   r   r     s-    
6{Qgay>6!":>
)OrS   c                   [         (       aA  [        [        U 5      5      n [        R                  " XS9   [        R                  " U5        g [        R                  S:w  a  [        X-  5      R	                  5         g Sn[        [        5       HY  n[        X-  5      =nc    g UR                  [        [         1;  d  U[        S-
  :X  a  Ue["        R$                  " U5        US-  nM[     g ! [
         a@  n [        R                  " U5        e ! [
         a  n[        SX45         S nAe S nAff = fS nAff = f! [
         a  nUs S nA$ S nAff = f)Nru  z&strict unlink directory cleanup failedr  gMbP?r   r|   )r:   rA  r\   rB   rv  rk   rl   r   r  r  r   ranger.   _unlink_errorrO   r   r	   r   r  )rF   r   rE  rU  rx   retry_delayattemptr   s           rH   r   r     s.   &s9~6	IId0	HH\" 
||wY%%'K,-"9#344E=;;vuo-<ORS<S1SK

;q . -  	k&  ! k%&NP\jjk	  		sX   C, D9 ,
D67DD1
D.D)$D1)D..D11D69
EE
E
Ec                X     U R                  5         g ! [         a  nUs S nA$ S nAff = fr   )rv  rC   )r   r   s     rH   r  r    s,       s    
)$))c           	         [         R                  " U [         R                  [        [         SS5      -  [        [         SS5      -  5      $ )NO_DIRECTORYr   rI  )rB   r}  O_RDONLYrN   )rF   s    rH   rA  rA    s:    77
gb-33gb,PQ6RR rS   c                L    [        X5      u  p#[        R                  " U5        U$ r   )r   rB   rl   )r   limitr   r   s       rH   r
  r
    s    d*JBHHRLMrS   c                   U R                  5       n[        R                  " UR                  5      (       d  U  S3n[	        U5      e[
        R                  [        -  [        [
        SS5      -  [        [
        SS5      -  n[
        R                  " X5      n [        XPX!5      nXV4$ ! [         a@  n [
        R                  " U5        e ! [         a  n[        SXx5         S nAe S nAff = fS nAff = f)N is not a regular filerI  r   
O_NONBLOCKz!strict record read cleanup failed)rl  rk  rm  rn  rC   rB   r  r2   rN   r}  _read_opened_recordrk   rl   r   )	r   r  rx  r\  rQ  r   r   
read_errorrx   s	            rH   r   r     s    

I<<	))**,-clKK)#gb,&BBWRQ]_`EaaE		B$Ry@ :  	`HHRL 	  	`!"Ez__	`s<   B' '
C12C	C,	
C)C$C,$C))C,,C1c                b   [         R                  " U 5      n[        R                  " UR                  5      (       d  U S3n[        U5      e[        U5      [        U5      :w  a  U S3n[        U5      e[         R                  " XS-   5      n[        U5      U:  a  U SU S3n[        U5      eU$ )Nr  z changed while openingr   z	 exceeds z bytes)	rB   rj   rk  rm  rn  rC   ri   readr   )r   r   rx  r  opened_statr\  r   s          rH   r  r  .  s    ((2,K<<++,,,-clk"nY&??,-clWWR#F
6{Uiwf-clMrS   c                R    UR                  5         g ! [         a     UR                  5       R                  nO#! [         a  n[        U S SU 35      UeS nAff = f[        R                  " U5      (       a  [        R                  " U5      (       d   g [        U S U S35      S ef = f)Nzcannot inspect z is not a real directory)	mkdirFileExistsErrorrl  rn  rC   r   rk  S_ISDIRS_ISLNK)rd   rF   r   r   s       rH   rf   rf   =  s    	k k	g??$,,D 	g+Ityk=Z[aff	g<<dll4&8&8'	4I;F^9_`fjjks/    
B&9B&
AAA9B&B&c                   ^  T (       + =(       d;    T R                  S5      =(       d#    T [        R                  [        R                  1;   nU(       d  [	        U 4S jS 5       5      (       a  Sn[        U5      eg )Nr  c              3  ,   >#    U  H	  oT;   v   M     g 7fr   r   )r   	separatorr   s     rH   r   -_validate_force_break_name.<locals>.<genexpr>L  s     WCViT 1CVs   )/\ z,claim_name must be one public claim basename)r  rB   r?  pardirr   rE   )r   invalid_componentr\  s   `  rH   r   r   J  s\     ZDOOC$8ZDRYYPRPYPYDZ<ZCWCVWWW<o XrS   c                   ^ [         R                  " U 5       n[        U4S jU 5       5      (       d)  [        [        [         R
                  " [        5      T5      e S S S 5        g ! , (       d  f       g = f)Nc              3  @   >#    U  H  oR                   T:H  v   M     g 7fr   r   )r   r  r   s     rH   r   &_require_exact_name.<locals>.<genexpr>S  s     ;7%::%7s   )rB   r   r   r   r   r   )rF   r   r   s    ` rH   r   r   Q  sK    	I	';7;;;#FBKK,?FF < 
		s   AA&&
A4c                    [        U[        5      =(       d.    UR                  [        ;   =(       d    [	        USS 5      [
        ;   nU(       a  Sn[        U S U5      Ueg )NwinerrorzCfilesystem does not support atomic no-replace hard-link publication)r   rD   rO   rT   rN   r6   r   )rd   r   unsupportedr   s       rH   r   r   W  s]    5-. 	P;;77	PE:t,0NN 
 V'	4@eK rS   c                2    U R                   U R                  4$ r   )st_devst_ino)sts    rH   ri   ri   b  s    99biirS   )r   r   rV   )r   rX   )r   zfrozenset[int])rd   r\   r   r   r   r   r   r   )r   r   r   r   )rd   r\   rF   r   r   r   )rd   r\   rF   r   r   r\   r   zbytes | None)rd   r\   rF   r   r   r\   r   z#tuple[bytes | None, OSError | None])rF   r   r   zIterator[os.DirEntry[str]]r   z	list[str])
rd   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!  )rC  r\   r   r!  r   r   r   BaseException | None)
rF  tuple[str, int | None]r   tuple[str, str]r   r   r   r!  r   r   )
rF  r  rD  r\   rS  r   rT  tuple[int, int] | Noner   z1tuple[BaseException | None, BaseException | None])rF  r  r   r  rT  r   r   r   )rx   r  rU  r  r   r   )r  r\   r   r\   )rD  r\   r   z
str | None)r   r   r  r_   r   r   )rF  r  rD  r\   r  r_   r   r   )rF  r  rD  r\   r   r   )rF  r  r   r\   r   r  )rF  r  r   r\   r   r   r   r   )
rF  r  r   r\   rQ  r   r   r   r   r   )rF  r  r  r\   r  r\   r   r   )
rG   
str | Pathr  r  r  r   r  r   r   r   )rF  r  r   r\   r   r   )rF   r   r  r\   r  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   rx  os.stat_resultr  r   r   r!  )rd   r\   rF   r   r   r   )r   r\   r   r   )rF   r   r   r\   r   r   )rd   r\   r   zNotImplementedError | OSErrorr   r   )r  r  r   r   )
__future__r   rz  rO   rB   r   rk  r  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   r}  supports_dir_fdr9   rv  r:   r;   r7   r<   rI   rJ   rR   rT   rV   r   	Exceptionr   rg   r   r   r   r  r   r   r   r   r   r   r   r   rB  rO  rN  rP  r@  r  r   r  rq  r[  rX  rM  rZ  r  rW  r   r  r   r  r   r   r  rA  r
  r   r  rf   r   r   r   ri   __all__r   rS   rH   <module>r     sf   "   	   
   ! 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!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   