Ë
    ¦Ùbi3	  ã                   óV   — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	  G d„ de«      Zy)	z/Utilities to handle file locking in `datasets`.é    N)ÚFileLock)ÚUnixFileLock)Ú__version__)Úversionc                   ó@   ‡ — e Zd ZdZdZˆ fd„Zededefd„«       Zˆ xZ	S )r   zw
    A `filelock.FileLock` initializer that handles long paths.
    It also uses the current umask for lock files.
    éÿ   c                 ó  •— d|vrbt        j                  t        «      t        j                  d«      k\  r3t        j                  d«      }t        j                  |«       d| z  |d<   | j                  |«      }t        ‰|   |g|¢­i |¤Ž y )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        €úS/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/datasets/utils/_filelock.pyr   zFileLock.__init__!   sv   ø€ ð ˜Ñ¤G§M¡MÔ2CÓ$DÌÏÉÐV^ÓH_Ò$_Ü—H‘H˜U“OˆEÜH‰HUŒOØ" e V™^ˆF6‰NØ×2Ñ2°9Ó=ˆ	Ü‰Ñ˜Ð4 TÒ4¨VÓ4ó    ÚpathÚreturnc                 ó|  — t         j                  j                  t         j                  j                  |«      «      }t         j                  j	                  |«      }| j
                  }t        | t        «      rFt        |t        j                  t         j                  j                  |«      «      j                  «      }t        |«      |kD  rpt         j                  j                  |«      }t        t        |«      «      }|d |t        |«      z
  dz
   dz   |z   dz   }t         j                  j                  ||«      S |S )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   z"FileLock.hash_filename_if_too_long+   sò   € äw‰w‰œrŸw™w×1Ñ1°$Ó7Ó8ˆÜ—7‘7×#Ñ# DÓ)ˆØ!×5Ñ5ÐÜcœ<Ô(Ü"%Ð&9¼2¿:¹:ÄbÇgÁgÇoÁoÐVZÓF[Ó;\×;fÑ;fÓ"gÐÜˆx‹=Ð.Ò.Ü—g‘g—o‘o dÓ+ˆGÜ!¤$ x£.Ó1ˆOàÐIÐ.´°_Ó1EÑEÈÑIÐJÈUÑRÐUdÑdÐgnÑnð ô —7‘7—<‘< ¨Ó6Ð6àˆKr   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r   Úclassmethodr'   r   Ú__classcell__)r   s   @r   r   r      s7   ø„ ñð
 Ðô5ð ð¨Sð °Sò ó ôr   r   )
r2   r   Úfilelockr   Ú	FileLock_r   r   r   Ú	packagingr   © r   r   ú<module>r9      s%   ðñ 6ã 	å *Ý !Ý 5Ý ô!ˆyõ !r   