+
    f4jR:                     \   R t ^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	H
t
HtHt ^ RIHtHt ^ RIHtHtHt R t] ! R R	]4      4       t] ! R
 R]4      4       t ! R R]4      t ! R R]4      t ! R R]4      t]P5                  ]4       ]P5                  ]4       ]P5                  ]4       R# )z.
Protocols for supporting classes in pathlib.
)ABCabstractmethod)_PathGlobber)text_encoding)
magic_openensure_distinct_pathsensure_different_filescopyfileobj)PurePathPath)OptionalProtocolruntime_checkablec                j    V! V 4      w  r#. pW8w  d    VP                  V4       Tp V! V 4      w  r#K%  W3# )z
Split the path into a 2-tuple (anchor, parts), where *anchor* is the
uppermost parent of the path (equivalent to path.parents[-1]), and
*parts* is a reversed list of parts following the anchor.
)append)pathsplitparentnamenamess   &&   lib/python3.14/pathlib/types.py_explode_pathr      s?     ;LFE
.TT{;    c                   f   a  ] tR t^$t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R ltR	t	V t
R
# )_PathParsera  Protocol for path parsers, which do low-level path manipulation.

Path parsers provide a subset of the os.path API, specifically those
functions needed to provide JoinablePath functionality. Each JoinablePath
subclass references its path parser via a 'parser' class attribute.
c                <   < V ^8  d   QhRS[ RS[S[ S[ 3,          /#    r   returnstrtuple)format__classdict__s   "r   __annotate___PathParser.__annotate__/   s    66#6%S/6r   c                    R # N selfr   s   &&r   r   _PathParser.split/   s    3r   c                <   < V ^8  d   QhRS[ RS[S[ S[ 3,          /# r   r   )r"   r#   s   "r   r$   r%   0   s    99S9U38_9r   c                    R # r'   r(   r)   s   &&r   splitext_PathParser.splitext0   s    cr   c                &   < V ^8  d   QhRS[ RS[ /# r   )r    )r"   r#   s   "r   r$   r%   1   s    --S-S-r   c                    R # r'   r(   r)   s   &&r   normcase_PathParser.normcase1   s    #r   c                B   < V ^8  d   Qh/ S[ ;R&   S[S[ ,          ;R&   # )r   sepaltsep)r    r   )r"   r#   s   "r   r$   r%   $   s"      
H  SM r   r(   N)__name__
__module____qualname____firstlineno____doc__r   r.   r2   __annotate_func____static_attributes____classdictcell__r#   s   @r   r   r   $   s%      7699--  r   r   c                      a  ] tR t^4t o RtRR/V 3R lR lltRR/V 3R lR lltRR/V 3R lR	 lltV 3R
 lR ltRt	V t
R# )PathInfoziProtocol for path info objects, which support querying the file type.
Methods may return cached results.
follow_symlinksTc                &   < V ^8  d   QhRS[ RS[ /# r   rB   r   bool)r"   r#   s   "r   r$   PathInfo.__annotate__9       BBBBr   c                   R # r'   r(   r*   rB   s   &$r   existsPathInfo.exists9       sr   c                &   < V ^8  d   QhRS[ RS[ /# rD   rE   )r"   r#   s   "r   r$   rG   :   rH   r   c                   R # r'   r(   rJ   s   &$r   is_dirPathInfo.is_dir:   rM   r   c                &   < V ^8  d   QhRS[ RS[ /# rD   rE   )r"   r#   s   "r   r$   rG   ;   s    CC$C$Cr   c                   R # r'   r(   rJ   s   &$r   is_filePathInfo.is_file;   s    r   c                    < V ^8  d   QhRS[ /# )r   r   rE   )r"   r#   s   "r   r$   rG   <   s    %%D%r   c                    R # r'   r(   r*   s   &r   
is_symlinkPathInfo.is_symlink<   s    #r   r(   N)r7   r8   r9   r:   r;   rK   rP   rT   rY   r=   r>   r?   s   @r   rA   rA   4   s4      CBBBBBCCC%%r   rA   c                     a  ] tR t^?t o RtRt]]R 4       4       t]R 4       t	]R 4       t
]R 4       t]R 4       t]R 4       t]R 4       t]R	 4       tR
 tR tR t]R 4       tR tR tR t]R 4       t]R 4       tR tRtV tR# )_JoinablePathzAbstract base class for pure path objects.

This class *does not* provide several magic methods that are defined in
its implementation PurePath. They are: __init__, __fspath__, __bytes__,
__reduce__, __hash__, __eq__, __lt__, __le__, __gt__, __ge__.
c                    \         h)zZImplementation of pathlib._types.Parser used for low-level path
parsing and manipulation.
NotImplementedErrorrX   s   &r   parser_JoinablePath.parserH   
     "!r   c                    \         h)zConstruct a new path object from any number of path-like objects.
Subclasses may override this method to customize how new path objects
are created from methods like `iterdir()`.
r^   r*   pathsegmentss   &*r   with_segments_JoinablePath.with_segmentsP   rb   r   c                    \         h)zSReturn the string representation of the path, suitable for
passing to system calls.r^   rX   s   &r   __str___JoinablePath.__str__X   s
     "!r   c                b    \        \        V 4      V P                  P                  4      ^ ,          # )z/The concatenation of the drive and root, or ''.)r   r    r`   r   rX   s   &r   anchor_JoinablePath.anchor^   s$     SY(9(9:1==r   c                X    V P                   P                  \        V 4      4      ^,          # )z!The final path component, if any.)r`   r   r    rX   s   &r   r   _JoinablePath.namec   s"     {{  T+A..r   c                Z    V P                   P                  V P                  4      ^,          # )zc
The final component's last suffix, if any.

This includes the leading period. For example: '.txt'
r`   r.   r   rX   s   &r   suffix_JoinablePath.suffixh   s"     {{##DII.q11r   c                    V P                   P                  pV! V P                  4      w  r#. pV'       d   VP                  V4       V! V4      w  r#K%  VRRR1,          # )zt
A list of the final component's suffixes, if any.

These include the leading periods. For example: ['.tar', '.gz']
N)r`   r.   r   r   )r*   r   stemrr   suffixess   &    r   rw   _JoinablePath.suffixesq   sR     $$TYY'OOF# ;LD&"~r   c                Z    V P                   P                  V P                  4      ^ ,          # )z0The final path component, minus its last suffix.rq   rX   s   &r   rv   _JoinablePath.stem   s"     {{##DII.q11r   c                    V P                   P                  pV! V4      ^ ,          '       d   \        RV: 24      h\        V 4      pVP	                  V! V4      ^,          4      V,           pV P                  V4      # )z-Return a new path with the file name changed.zInvalid name )r`   r   
ValueErrorr    removesuffixrf   )r*   r   r   r   s   &&  r   	with_name_JoinablePath.with_name   sg    !!;q>>}TH5664y  tQ047!!$''r   c                    V P                   pV'       g   V P                  V4      # V'       g   \        V : R24      hV P                  W,           4      # )z(Return a new path with the stem changed.z has a non-empty suffix)rr   r~   r|   )r*   rv   rr   s   && r   	with_stem_JoinablePath.with_stem   sD    >>$''x'>?@@>>$-00r   c                    V P                   pV'       g   \        V : R24      hV'       d'   VP                  R4      '       g   \        RV: 24      hV P                  W!,           4      # )zReturn a new path with the file suffix changed.  If the path
has no suffix, add given suffix.  If the given suffix is an empty
string, remove the suffix from the path.
 has an empty name.zInvalid suffix )rv   r|   
startswithr~   )r*   rr   rv   s   && r   with_suffix_JoinablePath.with_suffix   sY    
 yyx'9:;;F--c22vj9::>>$-00r   c                    \        \        V 4      V P                  P                  4      w  rV'       d   VP	                  V4       \        \        V4      4      # )zRAn object providing sequence-like access to the
components in the filesystem path.)r   r    r`   r   r   r!   reversed)r*   rl   partss   &  r   r   _JoinablePath.parts   s>     &c$i1B1BCLL Xe_%%r   c                <    V P                   ! \        V 4      .VO5!  # )zCombine this path with one or several arguments, and return a
new path representing either a subpath (if all arguments are relative
paths) or a totally different path (if one of the arguments is
anchored).
)rf   r    rd   s   &*r   joinpath_JoinablePath.joinpath   s     !!#d);l;;r   c                h     V P                  \        V 4      V4      #   \         d
    \        u # i ; ir'   rf   r    	TypeErrorNotImplementedr*   keys   &&r   __truediv___JoinablePath.__truediv__   s3    	"%%c$i55 	"!!	"    11c                h     V P                  V\        V 4      4      #   \         d
    \        u # i ; ir'   r   r   s   &&r   __rtruediv___JoinablePath.__rtruediv__   s3    	"%%c3t955 	"!!	"r   c                    \        V 4      pV P                  P                  V4      ^ ,          pW8w  d   V P                  V4      # V # )zThe logical parent of the path.)r    r`   r   rf   )r*   r   r   s   &  r   r   _JoinablePath.parent   sA     4y""4(+>%%f--r   c                    V P                   P                  p\        V 4      pV! V4      ^ ,          p. pW#8w  d4   VP                  V P	                  V4      4       TpV! V4      ^ ,          pK9  \        V4      # )z*A sequence of this path's logical parents.)r`   r   r    r   rf   r!   )r*   r   r   r   parentss   &    r   r   _JoinablePath.parents   sf     !!4ytQnNN4--f56D4[^FW~r   c                    V P                   P                  R4      R8H  p\        V P                   P                  VRR7      pVP	                  WP                   P
                  R7      pV! \        V 4      4      RJ# )zp
Return True if this path matches the given glob-style pattern. The
pattern is matched against the entire path.
AaT	recursive)r6   N)r`   r2   r   r5   compiler6   r    )r*   patterncase_sensitiveglobbermatchs   &&   r   
full_match_JoinablePath.full_match   sa    
 --d3t;t{{$O0B0BCSYt++r   r(   N)r7   r8   r9   r:   r;   	__slots__propertyr   r`   rf   ri   rl   r   rr   rw   rv   r~   r   r   r   r   r   r   r   r   r   r=   r>   r?   s   @r   r\   r\   ?   s     I"  " " " " "
 > > / / 2 2   2 2(	11 & &<""   
 
, ,r   r\   c                      a  ] tR t^t o RtRt]]R 4       4       t]RR l4       t	R t
RR lt]R 4       tRR	/R
 ltRR lt]R 4       tR tR tRtV tR# )_ReadablePathzAbstract base class for readable path objects.

The Path class implements this ABC for local filesystem paths. Users may
create subclasses to implement readable virtual filesystem paths, such as
paths in archive files or on remote storage systems.
c                    \         h)zV
A PathInfo object that exposes the file type and other file attributes
of this path.
r^   rX   s   &r   info_ReadablePath.info   
     "!r   c                    \         h)zr
Open the file pointed to by this path for reading in binary mode and
return a file object, like open(mode='rb').
r^   r*   	bufferings   &&r   __open_rb___ReadablePath.__open_rb__   rb   r   c                    \        V R^ R7      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i)z;
Open the file in bytes mode, read it, and close the file.
rb)moder   N)r   read)r*   fs   & r   
read_bytes_ReadablePath.read_bytes   s-     4155668 6555s	   2A	Nc                    \        V4      p\        V RWVR7      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i)z:
Open the file in text mode, read it, and close the file.
rr   encodingerrorsnewlineN)r   r   r   )r*   r   r   r   r   s   &&&& r   	read_text_ReadablePath.read_text  s<     !*3RYZZ^_668 [ZZZs	   >A	c                    \         h)zYield path objects of the directory contents.

The children are yielded in arbitrary order, and the
special entries '.' and '..' are not included.
r^   rX   s   &r   iterdir_ReadablePath.iterdir  r   r   recurse_symlinksTc                  \        WP                  P                  4      w  r4V'       d   \        R4      hV'       g   \	        RV: 24      hV'       g   \        R4      hV P                  P                  R4      R8H  p\        V P                  P                  VRR7      pVP                  V4      pV! V P                  R4      4      # )zIterate over this subtree and yield all existing files (of any
kind, including directories) matching the given relative pattern.
z%Non-relative patterns are unsupportedzUnacceptable pattern: z%recurse_symlinks=False is unsupportedr   Tr    )
r   r`   r   r_   r|   r2   r   r5   selectorr   )r*   r   r   rl   r   r   r   selects   &&$     r   glob_ReadablePath.glob  s     &g{{/@/@A%&MNN5g[ABB!%&MNN--d3t;t{{$O!!%(dmmB'((r   c              #  
  "   V .pV'       Ed   VP                  4       p\        V\        4      '       d   Vx  K5  . p. pV'       g   VP                  WVV34        VP	                  4        Fv  pVP
                  P                  VR7      '       d7   V'       g   VP                  V4       VP                  VP                  4       K[  VP                  VP                  4       Kx  	  T'       g   K  YVT3x  T\        T4       U
u. uF  qP                  T
4      NK  	  up
,          pEK"  R#   \         dG   p	Te	   T! T	4       T'       g'   \        TP                  4       \        4      '       g   K&   Rp	?	EKp  Rp	?	ii ; iu up
i 5i)zBWalk the directory tree from this directory, similar to os.walk().)rB   N)pop
isinstancer!   r   r   r   rP   r   OSErrorr   r   )r*   top_downon_errorrB   pathsr   dirnames	filenameschilderrords   &&&&       r   walk_ReadablePath.walk)  s+    e99;D$&&
HIdi89!\\^Ezz(((II'!LL/ 

3!((4 , xi//HX4FG4Fq--*4FGG5 "  'UO(e<< HsY   F7FF<D* AD* %F/FE>F*E;5E6	&E6/F6E;;Fc                    \         h)z4
Return the path to which the symbolic link points.
r^   rX   s   &r   readlink_ReadablePath.readlinkH  
    
 "!r   c                ^    \        W4       VP                  ! V 3/ VB  VP                  4       # )zH
Recursively copy this file or directory tree to the given destination.
)r   
_copy_fromr   )r*   targetkwargss   &&,r   copy_ReadablePath.copyO  s,     	d+$)&)  r   c                z    V P                   pV'       g   \        V : R24      hV P                  ! W,          3/ VB # )zE
Copy this file or directory tree into the given existing directory.
r   )r   r|   r   )r*   
target_dirr   r   s   &&, r   	copy_into_ReadablePath.copy_intoW  s:     yyx'9:;;yy*5f55r   r(   ru   NNN)TNF)r7   r8   r9   r:   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r>   r?   s   @r   r   r      s      I"  " " " " ") ) H> " "!6 6r   r   c                   z   a  ] tR tRt o RtR
t]RR l4       t]R 4       t]RR l4       t	R t
RR ltRR	 ltR
tV tR# )_WritablePathia  zAbstract base class for writable path objects.

The Path class implements this ABC for local filesystem paths. Users may
create subclasses to implement writable virtual filesystem paths, such as
paths in archive files or on remote storage systems.
c                    \         h)z
Make this path a symlink pointing to the target path.
Note the order of arguments (link, target) is the reverse of os.symlink.
r^   )r*   r   target_is_directorys   &&&r   
symlink_to_WritablePath.symlink_toj  rb   r   c                    \         h)z,
Create a new directory at this given path.
r^   rX   s   &r   mkdir_WritablePath.mkdirr  r   r   c                    \         h)zr
Open the file pointed to by this path for writing in binary mode and
return a file object, like open(mode='wb').
r^   r   s   &&r   __open_wb___WritablePath.__open_wb__y  rb   r   c                    \        V4      p\        V RR7      ;_uu_ 4       pVP                  V4      uuRRR4       #   + '       g   i     R# ; i)z?
Open the file in bytes mode, write to it, and close the file.
wb)r   N)
memoryviewr   write)r*   dataviewr   s   &&  r   write_bytes_WritablePath.write_bytes  s7    
 $4((A774= )(((s	   =A	Nc                   \        V4      p\        V\        4      '       g'   \        RVP                  P
                  ,          4      h\        V RW#VR7      ;_uu_ 4       pVP                  V4      uuRRR4       #   + '       g   i     R# ; i)z>
Open the file in text mode, write to it, and close the file.
zdata must be str, not %swr   N)r   r   r    r   	__class__r7   r   r   )r*   r   r   r   r   r   s   &&&&& r   
write_text_WritablePath.write_text  sm     !*$$$6 NN334 5 53RYZZ^_774= [ZZZs   A;;B	c           	        W3.pV'       EdG   VP                  4       w  rEV'       gd   VP                  P                  4       '       dD   VP                  \	        VP                  4       4      VP                  P                  4       4       K  VP                  P                  4       '       dW   VP                  4       pVP                  4        V F.  pVP                  WuP                  VP                  4      34       K0  	  K  \        WE4       \        VR4      ;_uu_ 4       p\        VR4      ;_uu_ 4       p	\        W4       RRR4       RRR4       EKO  R#   + '       g   i     L; i  + '       g   i     EKv  ; i)z/
Recursively copy the given path to this path.
r   r   N)r   r   rY   r   r    r   rP   r   r   r   r   r   r   r   r	   )
r*   sourcerB   stacksrcdstchildrenr   source_ftarget_fs
   &&&       r   r   _WritablePath._copy_from  s      eyy{HC"sxx':':'<'<s3<<>2CHHOO4EF"";;=		%ELL%ejj)A!BC & 's0T**h#C..(#H7 / +*  /. +**s$    E)5E	E)E&!E))E;	r(   )Fr   r   )T)r7   r8   r9   r:   r;   r   r   r   r   r   r  r  r   r=   r>   r?   s   @r   r   r   a  s_      I" " " " " "!!8 8r   r   N)r;   abcr   r   r   r   ior   pathlib._osr   r   r   r	   pathlibr
   r   typingr   r   r   r   r   rA   r\   r   r   registerr(   r   r   <module>r     s    $   ^ ^ " 8 8 .( . . &x & &c,C c,Ly6M y6xH8M H8V   x     t    t r   