
    h3	                     V    S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	   " S S\5      rg)	z/Utilities to handle file locking in `datasets`.    N)FileLock)UnixFileLock)__version__)versionc                   L   ^  \ rS rSrSrSrU 4S jr\S\S\4S j5       r	Sr
U =r$ )	r      zk
A `filelock.FileLock` initializer that handles long paths.
It also uses the current umask for lock files.
   c                 *  > SU;  ag  [         R                  " [        5      [         R                  " S5      :  a5  [        R                  " S5      n[        R                  " U5        SU) -  US'   U R                  U5      n[        TU ]  " U/UQ70 UD6  g )Nmodez3.10.0i  )r   parse_filelock_versionosumaskhash_filename_if_too_longsuper__init__)self	lock_fileargskwargsr   	__class__s        R/home/james-whalen/.local/lib/python3.13/site-packages/datasets/utils/_filelock.pyr   FileLock.__init__!   sv     GMM2C$DV^H_$_HHUOEHHUO"eV^F6N229=	4T4V4    pathreturnc                    [         R                  R                  [         R                  R                  U5      5      n[         R                  R	                  U5      nU R
                  n[        U [        5      (       aG  [        U[         R                  " [         R                  R                  U5      5      R                  5      n[        U5      U:  ao  [         R                  R                  U5      n[        [        U5      5      nUS U[        U5      -
  S-
   S-   U-   S-   n[         R                  R                  XF5      $ U$ )N   z...z.lock)r   r   abspath
expanduserbasenameMAX_FILENAME_LENGTH
issubclassr   minstatvfsdirname	f_namemaxlenstrhashjoin)clsr   filenamemax_filename_lengthr&   hashed_filenamenew_filenames          r   r   "FileLock.hash_filename_if_too_long+   s    wwrww11$7877##D)!55c<(("%&92::bggooVZF[;\;f;f"gx=..ggood+G!$x.1OI._1EEIJURUddgnn  77<<66Kr    )__name__
__module____qualname____firstlineno____doc__r"   r   classmethodr)   r   __static_attributes____classcell__)r   s   @r   r   r      s7    
 5 S S  r   r   )
r7   r   filelockr   	FileLock_r   r   r   	packagingr   r2   r   r   <module>r>      s%    6 	 * ! 5 !y !r   