o
    K+go                     @   s   d Z ddlZddlZg dZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zd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              	   C   s*   zt |  W dS  ttfy   Y dS w )zDTest whether a path exists.  Returns False for broken symbolic linksFT)osstatOSError
ValueError)path r   =/var/www/html/squashfs-root/usr/lib/python3.10/genericpath.pyr      s   r   c              	   C   4   zt | }W n ttfy   Y dS w t|jS )z%Test whether a path is a regular fileF)r   r   r   r   S_ISREGst_mode)r   str   r   r   r	         r	   c              	   C   r   )z<Return true if the pathname refers to an existing directory.F)r   r   r   r   S_ISDIRr   )sr   r   r   r   r   '   r   r   c                 C      t | jS )z1Return the size of a file, reported by os.stat().)r   r   st_sizefilenamer   r   r   r   0      r   c                 C   r   )zCReturn the last modification time of a file, reported by os.stat().)r   r   st_mtimer   r   r   r   r   5   r   r   c                 C   r   )z=Return the last access time of a file, reported by os.stat().)r   r   st_atimer   r   r   r   r   :   r   r   c                 C   r   )zAReturn the metadata change time of a file, reported by os.stat().)r   r   st_ctimer   r   r   r   r   ?   r   r   c                 C   sl   | sdS t | d ttfstttj| } t| }t| }t|D ]\}}||| kr3|d|   S q!|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cr   r   r   r   E   s   r   c                 C   s   | j |j ko| j|jkS )z5Test whether two stat buffers reference the same file)st_inost_dev)r-   r.   r   r   r   r   W   s   
r   c                 C      t | }t |}t||S )zTest 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   )Zf1Zf2r-   r.   r   r   r   r
   ^   s   


r
   c                 C   r3   )z:Test whether two open file objects reference the same file)r   fstatr   )Zfp1Zfp2r-   r.   r   r   r   r   k   s   


r   c                 C   s   |  |}|r|  |}t||}|  |}||kr@|d }||k r@| ||d  |kr8| d| | |d fS |d7 }||k s"| | dd fS )zSplit 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   )rfindr*   )psepaltsepextsepZsepIndexZaltsepIndexZdotIndexZfilenameIndexr   r   r   	_splitexty   s   



r;   c                 G   sb   d }}|D ]}t |trd}qt |trd}qt|  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__)ZfuncnameargsZhasstrZhasbytesr   r   r   r   _check_arg_types   s   


rB   )__doc__r   r   __all__r   r	   r   r   r   r   r   r   r   r
   r   r;   rB   r   r   r   r   <module>   s"    	