§
    (¶Õio  ã                   óp   — d Z ddlZddlZg d¢Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )z˜
Path operations common to more than one OS
Do not use directly.  The OS specific modules import the appropriate
functions from this module themselves.
é    N)ÚcommonprefixÚexistsÚgetatimeÚgetctimeÚgetmtimeÚgetsizeÚisdirÚisfileÚsamefileÚsameopenfileÚsamestatc                 ób   — 	 t          j        | ¦  «         n# t          t          f$ r Y dS w xY wdS )zDTest whether a path exists.  Returns False for broken symbolic linksFT)ÚosÚstatÚOSErrorÚ
ValueError)Úpaths    ú"/usr/lib/python3.11/genericpath.pyr   r      sB   € ðÝ
Œ�‰ŒˆˆøÝ•ZÐ ð ð ð Øˆuˆuðøøøàˆ4ó   ‚ —,«,c                 ó�   — 	 t          j        | ¦  «        }n# t          t          f$ r Y dS w xY wt          j        |j        ¦  «        S )z%Test whether a path is a regular fileF)r   r   r   r   ÚS_ISREGÚst_mode)r   Ústs     r   r
   r
      sO   € ðÝŒW�T‰]Œ]ˆˆøÝ•ZÐ ð ð ð ØˆuˆuðøøøåŒ<˜œ
Ñ#Ô#Ð#r   c                 ó�   — 	 t          j        | ¦  «        }n# t          t          f$ r Y dS w xY wt          j        |j        ¦  «        S )z<Return true if the pathname refers to an existing directory.F)r   r   r   r   ÚS_ISDIRr   )Úsr   s     r   r	   r	   '   sO   € ðÝŒW�Q‰ZŒZˆˆøÝ•ZÐ ð ð ð ØˆuˆuðøøøåŒ<˜œ
Ñ#Ô#Ð#r   c                 ó4   — t          j        | ¦  «        j        S )z1Return the size of a file, reported by os.stat().)r   r   Úst_size©Úfilenames    r   r   r   0   s   € åŒ7�8ÑÔÔ$Ð$ó    c                 ó4   — t          j        | ¦  «        j        S )zCReturn the last modification time of a file, reported by os.stat().)r   r   Úst_mtimer   s    r   r   r   5   ó   € åŒ7�8ÑÔÔ%Ð%r!   c                 ó4   — t          j        | ¦  «        j        S )z=Return the last access time of a file, reported by os.stat().)r   r   Úst_atimer   s    r   r   r   :   r$   r!   c                 ó4   — t          j        | ¦  «        j        S )zAReturn the metadata change time of a file, reported by os.stat().)r   r   Úst_ctimer   s    r   r   r   ?   r$   r!   c                 ó6  — | sdS t          | d         t          t          f¦  «        s't          t          t          j        | ¦  «        ¦  «        } t          | ¦  «        }t          | ¦  «        }t          |¦  «        D ]\  }}|||         k    r|d|…         c S Œ|S )zGGiven a list of pathnames, returns the longest common leading componentÚ r   N)	Ú
isinstanceÚlistÚtupleÚmapr   ÚfspathÚminÚmaxÚ	enumerate)ÚmÚs1Ús2ÚiÚcs        r   r   r   E   s˜   € àÐ�R�Rõ
 �a˜”d�T¥5˜MÑ*Ô*ð %Ý•#•b”i Ñ#Ô#Ñ$Ô$ˆÝ	ˆQ‰Œ€BÝ	ˆQ‰Œ€BÝ˜"‘”ð ð ‰ˆˆ1Ø��1”Š:ˆ:Ø�b�q�b”6ˆMˆMˆMð à€Ir!   c                 óB   — | j         |j         k    o| j        |j        k    S )z5Test whether two stat buffers reference the same file)Úst_inoÚst_dev)r4   r5   s     r   r   r   W   s$   € àŒI˜œÒ"ð #ØŒI˜œÒ"ð$r!   c                 ór   — t          j        | ¦  «        }t          j        |¦  «        }t          ||¦  «        S )zÕTest whether two pathnames reference the same actual file or directory

    This is determined by the device number and i-node number and
    raises an exception if an os.stat() call on either pathname fails.
    )r   r   r   )Úf1Úf2r4   r5   s       r   r   r   ^   s.   € õ 
Œ�‰Œ€BÝ	Œ�‰Œ€BÝ�B˜ÑÔÐr!   c                 ór   — t          j        | ¦  «        }t          j        |¦  «        }t          ||¦  «        S )z:Test whether two open file objects reference the same file)r   Úfstatr   )Úfp1Úfp2r4   r5   s       r   r   r   k   s,   € å	Œ�#‰Œ€BÝ	Œ�#‰Œ€BÝ�B˜ÑÔÐr!   c                 ó>  — |                       |¦  «        }|r%|                       |¦  «        }t          ||¦  «        }|                       |¦  «        }||k    r;|dz   }||k     r0| ||dz   …         |k    r| d|…         | |d…         fS |dz  }||k     °0| | dd…         fS )z¤Split the extension from a pathname.

    Extension is everything from the last dot to the end, ignoring
    leading dots.  Returns "(root, ext)"; ext may be empty.é   Nr   )Úrfindr1   )ÚpÚsepÚaltsepÚextsepÚsepIndexÚaltsepIndexÚdotIndexÚfilenameIndexs           r   Ú	_splitextrM   y   sÅ   € ð �wŠw�s‰|Œ|€HØð .Ø—g’g˜f‘o”oˆÝ�x Ñ-Ô-ˆà�wŠw�v‰Œ€HØ�(ÒÐà  1™ˆØ˜hÒ&Ð&Ø�˜}¨Q™Ð.Ô/°6Ò9Ð9Ø˜˜(˜”| Q x y y¤\Ð1Ð1Ø˜QÑˆMð ˜hÒ&Ð&ð
 ˆa���Œeˆ8€Or!   c                 óà   — dx}}|D ]P}t          |t          ¦  «        rd}Œt          |t          ¦  «        rd}Œ2t          | › d|j        j        ›�¦  «        d ‚|r|rt          d¦  «        d ‚d S d S )NFTz;() argument must be str, bytes, or os.PathLike object, not z.Can't mix strings and bytes in path components)r+   ÚstrÚbytesÚ	TypeErrorÚ	__class__Ú__name__)ÚfuncnameÚargsÚhasstrÚhasbytesr   s        r   Ú_check_arg_typesrX   �   sÅ   € ØÐ€FˆXØð [ð [ˆÝ�a�ÑÔð 	[ØˆFˆFÝ˜�5Ñ!Ô!ð 	[ØˆHˆHå˜xð Pð PØ78´{Ô7KðPð Pñ Qô QØVZð[àð T�(ð TÝÐHÑIÔIÈtÐSðTð Tð Tð Tr!   )Ú__doc__r   r   Ú__all__r   r
   r	   r   r   r   r   r   r   r   r   rM   rX   © r!   r   ú<module>r\      s  ððð ð
 
€	€	€	Ø €€€ðð ð €ðð ð ð$ð $ð $ð$ð $ð $ð%ð %ð %ð
&ð &ð &ð
&ð &ð &ð
&ð &ð &ðð ð ð$$ð $ð $ðð ð ðð ð ðð ð ð.Tð Tð Tð Tð Tr!   