Your IP : 18.116.8.98


Current Path : /opt/alt/python313/lib64/python3.13/pathlib/__pycache__/
Upload File :
Current File : //opt/alt/python313/lib64/python3.13/pathlib/__pycache__/_local.cpython-313.pyc

�

*}g�z���SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSK	J
r
 SSKJr SSK
r
SSKrSSKJrJrJr /SQr"SS	\5r"S
S\5r\R.R1\5 "SS
\5r"SS\5r"SS\\5r"SS\\5r"SS\\5rg!\a Sr
N�f=f!\a SrN�f=f)�N)�_StringGlobber)�chain)�Sequence�)�UnsupportedOperation�PurePathBase�PathBase)�PurePath�
PurePosixPath�PureWindowsPath�Path�	PosixPath�WindowsPathc�4�\rSrSrSrSrSrSrSrSr	Sr
g	)
�_PathParents�zrThis object provides sequence-like access to the logical ancestors
of a path.  Don't try to construct it yourself.)�_path�_drv�_root�_tailc�v�XlURUlURUlUR
Ulg�N)r�driver�rootrr��self�paths  �5/opt/alt/python313/lib64/python3.13/pathlib/_local.py�__init__�_PathParents.__init__#s(���
��J�J��	��Y�Y��
��Z�Z��
�c�,�[UR5$r)�lenr�rs r�__len__�_PathParents.__len__)s���4�:�:��r!c
�^�[U[5(a3[U4Sj[UR	[T55655$U[T5:�dU[T5*:a[
U5eUS:aU[T5-
nTRRTRTRTRSU*S-
5$)Nc3�.># �UH
nTUv� M g7fr�)�.0�irs  �r�	<genexpr>�+_PathParents.__getitem__.<locals>.<genexpr>.s����I�*H�Q��a��*H�s�rr)�
isinstance�slice�tuple�range�indicesr#�
IndexErrorr�_from_parsed_partsrrr)r�idxs` r�__getitem__�_PathParents.__getitem__,s�����c�5�!�!��I�%����S��Y�1G�*H�I�I�I��#�d�)��s�c�$�i�Z�/��S�/�!���7��3�t�9��C��z�z�,�,�T�Y�Y��
�
�-1�Z�Z�	�#����-B�D�	Dr!c�^�SR[UR5R5$)Nz<{}.parents>)�format�typer�__name__r$s r�__repr__�_PathParents.__repr__7s"���$�$�T�$�*�*�%5�%>�%>�?�?r!)rrrrN)r;�
__module__�__qualname__�__firstlineno__�__doc__�	__slots__rr%r6r<�__static_attributes__r)r!rrrs"��7�3�I� ��	D�@r!rc��\rSrSrSrSr\Rr\	r
SrSrSr
SrSrS	rS
rSrSr\S
5rSrSr\S5rSrSrSrSrSr\S5rSr Sr!\S5r"\S5r#\S5r$\S5r%\S5r&\S5r'\S5r(\S 5r)\S!5r*\S"5r+S#r,S$S%.S&jr-S'r.S(r/S)r0S*r1\S+5r2S,r3g-).r
�;adBase class for manipulating paths without I/O.

PurePath represents a filesystem path and offers operations which
don't imply any actual filesystem I/O.  Depending on your system,
instantiating a PurePath will return either a PurePosixPath or a
PureWindowsPath object.  You can also instantiate either of these classes
directly, regardless of your system.
)�
_raw_pathsrr�_tail_cached�_str�_str_normcase_cached�_parts_normcase_cached�_hashc�~�U[La [RS:Xa[O[n[
R
U5$)z�Construct a PurePath from one or several strings and or existing
PurePath objects.  The strings and path objects are combined so as
to yield a canonicalized path, which is incorporated into the
new PurePath object.
�nt)r
�os�namerr�object�__new__��cls�args�kwargss   rrQ�PurePath.__new__ks+���(�?�%'�W�W��_�/�-�C��~�~�c�"�"r!c���/nUH�n[U[5(aWURURLa!URUR	55 MRURUR5 Mo[R"U5n[U[5(d"[S[U5R<35eURU5 M� X lg![a UnNaf=f)NzVargument should be a str or an os.PathLike object where __fspath__ returns a str, not )
r.r
�parser�append�as_posix�extendrFrN�fspath�	TypeError�strr:r;)rrT�paths�argrs     rr�PurePath.__init__us������C��#�x�(�(��:�:�T�[�[�0��L�L�����0��L�L����0���9�9�S�>�D�"�$��,�,�#��#�D�z�2�2�5�7�8�8����T�"�#�& ���!���D��s�5C�C-�,C-c�(�UR"U/UQ76$)z�Combine 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).
)�
with_segments)r�pathsegmentss  r�joinpath�PurePath.joinpath�s���!�!�$�6��6�6r!c�R�URX5$![a	 [s$f=fr�rcr]�NotImplemented�r�keys  r�__truediv__�PurePath.__truediv__�s-��	"��%�%�d�0�0���	"�!�!�	"����&�&c�R�URX5$![a	 [s$f=frrhrjs  r�__rtruediv__�PurePath.__rtruediv__�s-��	"��%�%�c�0�0���	"�!�!�	"�rnc�D�UR[UR54$r)�	__class__r0rFr$s r�
__reduce__�PurePath.__reduce__�s���~�~�u�T�_�_�5�5�5r!c�j�SRURRUR55$)Nz{}({!r}))r9rsr;rZr$s rr<�PurePath.__repr__�s%��� � ����!8�!8�$�-�-�/�J�Jr!c��[U5$r�r^r$s r�
__fspath__�PurePath.__fspath__�s���4�y�r!c�.�[R"U5$)zYReturn the bytes representation of the path.  This is only
recommended to use under Unix.)rN�fsencoder$s r�	__bytes__�PurePath.__bytes__�s���{�{�4� � r!c���UR$![aQ UR[La[	U5UlO[	U5R5UlURs$f=fr)rI�AttributeErrorrX�	posixpathr^�lowerr$s r�
_str_normcase�PurePath._str_normcase�sY��	-��,�,�,���	-��{�{�i�'�,/��I��)�,/��I�O�O�,=��)��,�,�,�	-�s��AA)�(A)c��UR$![a) [UR5UlURs$f=fr)rKr��hashr�r$s r�__hash__�PurePath.__hash__�s<��	��:�:����	��d�0�0�1�D�J��:�:��	�s��0A�Ac��[U[5(d[$URUR:H=(a URURL$r)r.r
rir�rX�r�others  r�__eq__�PurePath.__eq__�s>���%��*�*�!�!��!�!�U�%8�%8�8�X�T�[�[�E�L�L�=X�Xr!c��UR$![aC URRURR
5UlURs$f=fr)rJr�r��splitrX�sepr$s r�_parts_normcase�PurePath._parts_normcase�sO��	/��.�.�.���	/�*.�*<�*<�*B�*B�4�;�;�?�?�*S�D�'��.�.�.�	/�s��A
A�Ac��[U[5(aURURLa[$URUR:$r�r.r
rXrir�r�s  r�__lt__�PurePath.__lt__��;���%��*�*�d�k�k����.M�!�!��#�#�e�&;�&;�;�;r!c��[U[5(aURURLa[$URUR:*$rr�r�s  r�__le__�PurePath.__le__��;���%��*�*�d�k�k����.M�!�!��#�#�u�'<�'<�<�<r!c��[U[5(aURURLa[$URUR:�$rr�r�s  r�__gt__�PurePath.__gt__�r�r!c��[U[5(aURURLa[$URUR:�$rr�r�s  r�__ge__�PurePath.__ge__�r�r!c���UR$![aN URURURUR
5=(d SUlURs$f=f)zSReturn the string representation of the path, suitable for
passing to system calls.�.)rHr��_format_parsed_partsrrrr$s r�__str__�PurePath.__str__�s[��	��9�9����	��1�1�$�*�*�d�i�i�26�*�*�>�E�AD�
�I��9�9��	�s��AA&�%A&c�"�U(dU(a*X-URRRU5-$U(a,URRUS5S(aS/U-nURRRU5$)Nrr�)rXr��join�
splitdrive)rS�drvr�tails    rr��PurePath._format_parsed_parts�sh���$��:��
�
��� 3� 3�D� 9�9�9�
�c�j�j�+�+�D��G�4�Q�7��5�4�<�D��z�z�~�~�"�"�4�(�(r!c�l�URURXU55nXlX$lX4lU$r)�_from_parsed_stringr�rrrG)rr�rr�rs     rr4�PurePath._from_parsed_parts�s4���'�'��(A�(A�#�T�(R�S���	��
� ���r!c�H�URU5nU=(d SUlU$)Nr�)rcrH)r�path_strrs   rr��PurePath._from_parsed_string�s"���!�!�(�+���O���	��r!c�l�U(dSS/4$URRnURRnU(aURX25nURR	U5upEnU(diURU5(aSUR
U5(d=URU5n[U5S:XaUSS;aUnO[U5S:XaUnURU5Vs/sH2o�(dMUS:wdM[R"[U55PM4 n	nXEU	4$s snf)N���z?.�r�)rXr��altsep�replace�	splitroot�
startswith�endswithr�r#�sys�internr^)
rSrr�r�r�r�rel�	drv_parts�x�parseds
          r�_parse_path�PurePath._parse_paths�����r�2�:���j�j�n�n�����"�"����<�<��,�D����-�-�d�3���3�����s�+�+�C�L�L��4E�4E��	�	�#��I��9�~��"�y��|�4�'?����Y��1�$���.1�i�i��n�O�n���$�a�3�h�$�#�*�*�S��V�$�n��O��&� � ��Ps�2
D1�D1�#D1c��URn[U5S:XaSnU$[U5S:XaUSnU$URR"U6nU$)z!The joined but unnormalized path.rr�r)rFr#rXr�)rr_rs   r�	_raw_path�PurePath._raw_paths\�������u�:��?��D�
��	��Z�1�_���8�D����;�;�#�#�U�+�D��r!c��UR$![a= URUR5uUlUlUlURs$f=f)z.The drive prefix (letter or UNC path), if any.)rr�r�r�rrGr$s rr�PurePath.drive!sL��	��9�9����	�7;�7G�7G����7W�4�D�I�t�z�4�#4��9�9��	����AA�Ac��UR$![a= URUR5uUlUlUlURs$f=f)zThe root of the path, if any.)rr�r�r�rrGr$s rr�
PurePath.root*sL��	��:�:����	�7;�7G�7G����7W�4�D�I�t�z�4�#4��:�:��	�r�c��UR$![a= URUR5uUlUlUlURs$f=fr)rGr�r�r�rrr$s rr�PurePath._tail3sP��	%��$�$�$���	%�7;�7G�7G����7W�4�D�I�t�z�4�#4��$�$�$�	%�r�c�4�URUR-$)z/The concatenation of the drive and root, or ''.)rrr$s r�anchor�PurePath.anchor;s���z�z�D�I�I�%�%r!c���UR(dUR(a0URUR-4[UR5-$[UR5$)zRAn object providing sequence-like access to the
components in the filesystem path.)rrr0rr$s r�parts�PurePath.parts@sD���:�:�����J�J����*�,�u�T�Z�Z�/@�@�@�����$�$r!c��URnURnURnU(dU$URXUSS5$)zThe logical parent of the path.N���)rrrr4)rr�rr�s    r�parent�PurePath.parentIs@���j�j���y�y���z�z����K��&�&�s�$�s��)�<�<r!c��[U5$)z*A sequence of this path's logical parents.)rr$s r�parents�PurePath.parentsSs��
�D�!�!r!c�4�URnU(dgUS$)z!The final path component, if any.r�r�)r)rr�s  rrO�
PurePath.nameZs���z�z�����B�x�r!c�j�URnU(a7URU;d'UR(aURU;dUS:Xa[SU<35eURR5nU(d[U<S35eXS'UR
URURU5$)z-Return a new path with the file name changed.r�z
Invalid name z has an empty namer�)	rXr�r��
ValueErrorr�copyr4rr)rrO�pr�s    r�	with_name�PurePath.with_namebs����K�K���q�u�u��}����a�h�h�$�6F�4�SV�;��}�T�H�5�6�6��z�z��� �����x�'9�:�;�;��R���&�&�t�z�z�4�9�9�d�C�Cr!F)�walk_upc��U(a0Sn[R"U[SS9 UR"U/UQ76nO&[	U[
5(dURU5n[
[U/UR55HoupVX`:XdX`R;a O}U(d$[[U5<S[U5<35eURS:XdMX[S[U5<S35e [[U5<S[U5<S	35eS/U-UR[UR5S
-nURSSU5$)aReturn the relative path to another path identified by the passed
arguments.  If the operation is not possible (because this is not
related to the other path), raise ValueError.

The *walk_up* parameter controls whether `..` may be used to resolve
the path.
z�support for supplying more than one positional argument to pathlib.PurePath.relative_to() is deprecated and scheduled for removal in Python 3.14r���
stacklevelz is not in the subpath of z..z'..' segment in z cannot be walkedz and z have different anchorsNr�)�warnings�warn�DeprecationWarningrcr.r
�	enumeraterr�r�r^rOrr#r4)rr�r��_deprecated�msg�steprr�s        r�relative_to�PurePath.relative_toms'���:�C�
�M�M�#�1�a�@��&�&�u�;�{�;�E��E�8�,�,��&�&�u�-�E�#�E�5�'�5�=�=�$A�B�J�D��|�t�|�|�3��� �C��I�=�0J�3�u�:�.�!Y�Z�Z����d�"� �#3�C��J�>�AR�!S�T�T�
C���D�	�}�E�#�e�*��?V�W�X�X����
��
�
�3�t�z�z�?�+;� <�<���&�&�r�2�u�5�5r!c���U(a0Sn[R"U[SS9 UR"U/UQ76nO&[	U[
5(dURU5nX:H=(d XR;$)zFReturn True if the path is relative to another path or False.
        z�support for supplying more than one argument to pathlib.PurePath.is_relative_to() is deprecated and scheduled for removal in Python 3.14r�r�)r�r�r�rcr.r
r�)rr�r�r�s    r�is_relative_to�PurePath.is_relative_to�sg���:�C�
�M�M�#�1�a�@��&�&�u�;�{�;�E��E�8�,�,��&�&�u�-�E��}�5���� 5�5r!c��UR[La,URHnURS5(dM g gURR	U5$)zKTrue if the path is absolute (has both a root and, if applicable,
a drive).�/TF)rXr�rFr��isabsrs  r�is_absolute�PurePath.is_absolute�sJ���;�;�)�#������?�?�3�'�'��(���{�{� � ��&�&r!c��Sn[R"U[SS9 UR[LaURRU5$g)zYReturn True if the path contains one of the special names reserved
by the system, if any.z�pathlib.PurePath.is_reserved() is deprecated and scheduled for removal in Python 3.15. Use os.path.isreserved() to detect reserved paths on Windows.r�r�F)r�r�r�rX�ntpath�
isreserved)rr�s  r�is_reserved�PurePath.is_reserved�s@��3��	�
�
�c�-�!�<��;�;�&� ��;�;�)�)�$�/�/�r!c�R�UR5(d[S5eURn[U5S:Xa"USS:XaSU-nUR	5SSnO'U(aSnUR	5nO
Sn[U5nS	S
KJn X$"[R"U55-$)zReturn the path as a URI.z.relative path can't be expressed as a file URIr�r�:zfile:///N�file:zfile://r)�quote_from_bytes)
r�r�rr#rZr^�urllib.parserrNr})rr�prefixrrs     r�as_uri�PurePath.as_uri�s������!�!��M�N�N��
�
���u�:��?�u�Q�x�3���%�'�F��=�=�?�1�2�&�D�
��F��=�=�?�D��F��t�9�D�1��(����T�):�;�;�;r!c�,�[U5nUS:XaS$U$)z<The path expressed as a string, for use in pattern-matching.r�r�ry)rr�s  r�_pattern_str�PurePath._pattern_str�s��
�t�9����_�r�2�(�2r!)rrKrJrFrrHrIrGN)4r;r>r?r@rArBrNrrXr�_globberrQrrerlrprtr<rzr~�propertyr�r�r�r�r�r�r�r�r��classmethodr�r4r�r�r�rrrr�r�r�r�rOr�r�r�r�r�rrrCr)r!rr
r
;s����"�I�F�W�W�F��H�#� �.7�"�"�6�K��!�
�	-��	-��Y�
�/��/�<�
=�
<�
=�
��)��)���
�!��!�&�	��	����������%��%��&��&��%��%��=��=��"��"�����	D�;@�6�86�	'�	�<�*�3��3r!r
c� �\rSrSrSr\rSrSrg)ri�z�PurePath subclass for non-Windows systems.

On a POSIX system, instantiating a PurePath should return this object.
However, you can also instantiate it directly on any system.
r)N)	r;r>r?r@rAr�rXrBrCr)r!rrr�s���
�F��Ir!rc� �\rSrSrSr\rSrSrg)ri�z�PurePath subclass for Windows systems.

On a Windows system, instantiating a PurePath should return this object.
However, you can also instantiate it directly on any system.
r)N)	r;r>r?r@rAr�rXrBrCr)r!rrr�s���
�F��Ir!rc�8^�\rSrSrSrSr\Rr\S5r	U4Sjr
SrSS.S	jrS
r
SrS,SjrS-SjrS-Sjr\R&"\"SS
55r\R&"\"S55rSrSrS
SS.SjrS
SS.SjrS.SjrSrS/Sjr\(aSS.Sjr\ (aSS.Sjr!\""\#S5(aSr$S0Sjr%S1S jr&SS.S!jr'S/S"jr(S#r)S$r*S%r+\""\#S&5(aS/S'jr,\""\#S(5(aS)r-S*r.\S+5r/Sr0U=r1$)2r
i�a�PurePath subclass that can make system calls.

Path represents a filesystem path but unlike PurePath, also offers
methods to do system calls on path objects. Depending on your system,
instantiating a Path will return either a PosixPath or a WindowsPath
object. You can also instantiate a PosixPath or WindowsPath directly,
but cannot instantiate a WindowsPath on a POSIX system or vice versa.
r)c�&�URSUS3$)Nr�z is unsupported on this system)r;)rS�	attributes  r�_unsupported_msg�Path._unsupported_msg�s���,�,��q���+I�J�Jr!c�^>�U(aSn[R"SUSS9 [TU]"U6 g)Nzvsupport for supplying keyword arguments to pathlib.PurePath is deprecated and scheduled for removal in Python {remove}zpathlib.PurePath(**kwargs))��)�remove)r�r��superr)rrTrUr�rss    �rr�
Path.__init__�s.����P�C�� � �!=�s�7�S�
���$�r!c�~�U[La [RS:Xa[O[n[
R
U5$)NrM)r
rNrOrrrPrQrRs   rrQ�Path.__new__�s)���$�;�!#���D��+�i�C��~�~�c�"�"r!T��follow_symlinksc�*�[R"XS9$)zP
Return the result of the stat() system call on this path, like
os.stat() does.
r)rN�stat)rrs  rr�	Path.stat�s��
�w�w�t�=�=r!c�@�[RRU5$)z%
Check if this path is a mount point
)rNr�ismountr$s r�is_mount�
Path.is_mounts���w�w���t�$�$r!c�@�[RRU5$)z"
Whether this path is a junction.
)rNr�
isjunctionr$s r�is_junction�Path.is_junctions���w�w�!�!�$�'�'r!r�Nc�j�SU;a[R"U5n[R"XX#XE5$)zg
Open the file pointed to by this path and return a file object, as
the built-in open() function does.
�b)�io�
text_encoding�open)r�mode�	buffering�encoding�errors�newlines      rr-�	Path.opens.���d�?��'�'��1�H��w�w�t�9��H�Hr!c�\�[R"U5n[R"XX#5$)z:
Open the file in text mode, read it, and close the file.
)r+r,r	�	read_text)rr0r1r2s    rr5�Path.read_texts'���#�#�H�-���!�!�$�&�B�Br!c�^�[R"U5n[R"XX#U5$)z>
Open the file in text mode, write to it, and close the file.
)r+r,r	�
write_text)r�datar0r1r2s     rr8�Path.write_text$s)���#�#�H�-���"�"�4�x��I�Ir!r�c#�# �URRn[UR5nUH$n[U5U:�aUSU:XaUSSnUv� M& g7f)Nr�)rXr�r#r�)rr_r��
anchor_lenr�s     r�_filter_trailing_slash�Path._filter_trailing_slash0sQ����k�k�o�o������%�
��H��8�}�z�)�h�r�l�c�.A�#�C�R�=���N��s�AAc��[U5n[R"U5nUVs/sHo3RPM nnSSS5 US:Xa[	UR
W5n[	URW5$s snf!,(df   NE=f)z�Yield path objects of the directory contents.

The children are yielded in arbitrary order, and the
special entries '.' and '..' are not included.
Nr�)r^rN�scandirr�map�_remove_leading_dotr�)r�root_dir�
scandir_it�entryr_s     r�iterdir�Path.iterdir8sp���t�9��
�Z�Z��
!�Z�-7�8�Z�E�Z�Z�Z�E�8�"��s�?���0�0�%�8�E��4�+�+�U�3�3��9�"�
!�s�A=�A8�A=�8A=�=
BF��case_sensitive�recurse_symlinksc��[R"SX5 [U[5(dUR	U5nUR
(a[
S5eURR5nU(d[SRU55eURnUSURRURR4;aURS5 UR!USSS2X#5n[#U5nU"U5nUS:Xa[%UR&U5nUSS:Xa[%UR(U5nOUSS:XaUR+U5n[%UR,U5nU$)	z�Iterate over this subtree and yield all existing files (of any
kind, including directories) matching the given relative pattern.
zpathlib.Path.globz%Non-relative patterns are unsupportedzUnacceptable pattern: {!r}r�r�Nr��**)r��auditr.r
rcr��NotImplementedErrorrr�r�r9r�rXr�r�rY�_glob_selectorr^rArB�_remove_trailing_slashr=r�)	r�patternrIrJr��raw�selectrr_s	         r�glob�	Path.globEs@��	�	�	�%�t�5��'�8�,�,��(�(��1�G��>�>�%�&M�N�N��
�
�"�"�$����9�@�@��I�J�J������r�7�t�{�{������(:�(:�;�;��L�L����$�$�U�4�R�4�[�.�S���4�y���t����3�;���0�0�%�8�E���9��?���3�3�U�;�E�
�2�Y�$�
��/�/��6�E��D�,�,�e�4���r!c��[R"SX5 [U[5(dUR	U5nSU-nURXUS9$)z�Recursively yield all existing files (of any kind, including
directories) matching the given relative pattern, anywhere in
this subtree.
zpathlib.Path.rglobrLrH)r�rMr.r
rcrT)rrQrIrJs    r�rglob�
Path.rglobcsM��
	�	�	�&��6��'�8�,�,��(�(��1�G���.���y�y��Rb�y�c�cr!c#�# �[R"SXU5 [U5nU(d[Rn[R
"XAX#5nUH&upgnUS:XaUSSnUR
U5Xx4v� M( g7f)zBWalk the directory tree from this directory, similar to os.walk().zpathlib.Path.walkr�r�N)r�rMr^rN�_walk_symlinks_as_files�walkr�)	r�top_down�on_errorrrC�resultsr��dirnames�	filenamess	         rr[�	Path.walknst����	�	�%�t��G��t�9��� �8�8�O��'�'�(�h�H��-4�)�H�	��3��#�A�B�<���*�*�8�4�h�I�I�.5�s�A?Bc��UR5(aU$UR(a[[RR	[R
"55SnUR
XRUR5$UR(a*[RRUR5nO[R
"5nUR(dURU5$[RR	U5upnU(dUR
XUR5$URURR5nURUR5 UR
XU5$)z�Return an absolute version of this path
No normalization or symlink resolution is performed.

Use resolve() to resolve symlinks and remove '..' segments.
r)r�rrNrr��getcwdr4rr�abspathr�r�rXr�r[)rr�cwdrr�r�s      r�absolute�
Path.absolutezs��������K��9�9��G�G�%�%�b�i�i�k�2�1�5�E��*�*�5�)�)�T�Z�Z�H�H��:�:��'�'�/�/�$�*�*�-�C��)�)�+�C��z�z��+�+�C�0�0��7�7�,�,�S�1���S���*�*�5��
�
�C�C��y�y������)�����D�J�J���&�&�u�D�9�9r!c�Z�UR[RRXS95$)zT
Make the path absolute, resolving all symlinks on the way and also
normalizing it.
)�strict)rcrNr�realpath)rris  r�resolve�Path.resolve�s'���!�!�"�'�'�"2�"2�4�"2�"G�H�Hr!c�t�URUS9Rn[R"U5R$)z*
Return the login name of the file owner.
r)r�st_uid�pwd�getpwuid�pw_name)rr�uids   r�owner�
Path.owner��/���)�)�O�)�<�C�C�C��<�<��$�,�,�,r!c�t�URUS9Rn[R"U5R$)z(
Return the group name of the file gid.
r)r�st_gid�grp�getgrgid�gr_name)rr�gids   r�group�
Path.group�rur!�readlinkc�L�UR[R"U55$)z4
Return the path to which the symbolic link points.
)rcrNr~r$s rr~�
Path.readlink�s���%�%�b�k�k�$�&7�8�8r!c�4�U(a[R"US5 g[R[R-nU(dU[R
-n[R"XU5n[R"U5 g![a Nuf=f)zC
Create this file with the given access mode, if it doesn't exist.
N)rN�utime�OSError�O_CREAT�O_WRONLY�O_EXCLr-�close)rr.�exist_ok�flags�fds     r�touch�
Path.touch�sq��
�
�����t�$�
��
�
�R�[�[�(����R�Y�Y��E�
�W�W�T�$�
'��
�������
��
�s�B
�

B�Bc�(�[R"X5 g![aF U(aURU:XaeURRSSS9 URUSUS9 g[a  U(aUR5(degf=f)z,
Create a new directory at this given path.
T)r�r�FN)rN�mkdir�FileNotFoundErrorr�r��is_dir)rr.r�r�s    rr��
Path.mkdir�s{��	��H�H�T� �� �	?��d�k�k�T�1���K�K���d�T��:��J�J�t�U�X�J�>��	��4�;�;�=�=��$1�	�s��A
B�(&B�Bc�.�[R"XUS9 g)z6
Change the permissions of the path, like os.chmod().
rN)rN�chmod)rr.rs   rr��
Path.chmod�s��	����_�=r!c�b�[R"U5 g![a U(degf=f)zL
Remove this file or link.
If the path is a directory, use rmdir() instead.
N)rN�unlinkr�)r�
missing_oks  rr��Path.unlink�s,��
	��I�I�d�O�� �	����	�s��.�.c�0�[R"U5 g)z6
Remove this directory.  The directory must be empty.
N)rN�rmdirr$s rr��
Path.rmdir�s��	����r!c�P�[R"X5 URU5$)a
Rename this path to the target path.

The target path may be absolute or relative. Relative paths are
interpreted relative to the current working directory, *not* the
directory of the Path object.

Returns the new Path instance pointing to the target path.
)rN�renamerc�r�targets  rr��Path.rename�s!��	�	�	�$���!�!�&�)�)r!c�P�[R"X5 URU5$)a#
Rename this path to the target path, overwriting if that path exists.

The target path may be absolute or relative. Relative paths are
interpreted relative to the current working directory, *not* the
directory of the Path object.

Returns the new Path instance pointing to the target path.
)rNr�rcr�s  rr��Path.replaces!��	�
�
�4� ��!�!�&�)�)r!�symlinkc�2�[R"XU5 g)z�
Make this path a symlink pointing to the target path.
Note the order of arguments (link, target) is the reverse of os.symlink.
N)rNr�)rr��target_is_directorys   r�
symlink_to�Path.symlink_tos��

�J�J�v�%8�9r!�linkc�0�[R"X5 g)z�
Make this path a hard link pointing to the same file as *target*.

Note the order of arguments (self, target) is the reverse of os.link's.
N)rNr�r�s  r�hardlink_to�Path.hardlink_tos��
�G�G�F�!r!c��UR(d�UR(d�UR(a�URSSSS:Xau[RRURS5nUSSS:Xa[
S5eURU5up#nURX#X@RSS-5$U$)z[Return a new path with expanded ~ and ~user constructs
(as returned by os.path.expanduser)
rNr�~z#Could not determine home directory.)	rrrrNr�
expanduser�RuntimeErrorr�r4)r�homedirr�rr�s     rr��Path.expanduser s������t�y�y��J�J�4�:�:�a�=��!�,��3��g�g�(�(����A��7�G��r��{�c�!�"�#H�I�I�"�.�.�w�7�O�C�t��*�*�3�d�Z�Z���^�6K�L�L��r!c��URS5(d[SU<35eUSSnUSSS:XaUSSnOUSSS	:XaUS
SnUSSS:XdUSSS:XaUSSS
;aUSSnUSSS:XaUSSS-USS-nSSKJn U"[R
"U"U555nUR
5(d[SU<35eU$)z,Return a new path from the given 'file' URI.rz!URI does not start with 'file:': �Nrz///r��z//localhost/�rr�z:|�|rr)�unquote_to_byteszURI is not absolute: )r�r�rr�rN�fsdecoder�)rS�urirr�s    r�from_uri�
Path.from_uri.s���~�~�g�&�&��@���H�I�I��1�2�w�����8�u�����8�D�
�#�2�Y�.�
(����9�D����8�u���b�q��S��T�!�A�Y�$�5F����8�D���!�9������8�c�>�D���H�,�D�1��2�;�;�/��5�6�7�����!�!��4�S�G�<�=�=��r!)�rr�NNN)NNN)TNF)F)i�T)i�FF)2r;r>r?r@rArBr
rrrrrQrr#r'r-r5r8�operator�
itemgetterr/rBrPr=rFrTrWr[rfrkrorsrxr|�hasattrrNr~r�r�r�r�r�r�r�r�r�r�r�rC�
__classcell__)rss@rr
r
�s]�����I�
�_�_�F��K��K� �#�
'+�>�%�(�59�"&�I�C�J�#�-�-�e�A�t�n�=��%�0�0��r��;���4�/3�U��<04�e�	d�
J�:�<I��+/�	-��+/�	-��r�:���	9��,�".2�>�	��*�*��r�9���	:��r�6���	"�����r!r
c�H�\rSrSrSrSr\RS:XaSrSr	gSr	g)riGzkPath subclass for non-Windows systems.

On a POSIX system, instantiating a Path should return this object.
r)rMc�6�[SUR<S35e�Nzcannot instantiate z on your system�rr;rRs   rrQ�PosixPath.__new__O�"��&�%�c�l�l�%5�_�E�G�
Gr!N�
r;r>r?r@rArBrNrOrQrCr)r!rrrG�$����I�	�w�w�$��	G�r!rc�H�\rSrSrSrSr\RS:waSrSr	gSr	g)riSziPath subclass for Windows systems.

On a Windows system, instantiating a Path should return this object.
r)rMc�6�[SUR<S35er�r�rRs   rrQ�WindowsPath.__new__[r�r!Nr�r)r!rrrSr�r!r)r+r�r�rNr�r�r�rTr�	itertoolsr�_collections_abcrro�ImportErrorrx�_abcrrr	�__all__rr
�PathLike�registerrrr
rrr)r!r�<module>r�s���	�
��	��
����%�����?�>���@�8�@�:L3�|�L3�`�����X���H���h��b�8�X�b�J
G��m�
G�
G�$��
G��K��
�C�����
�C��s"�B3�C�3B>�=B>�C�C

?>