Ë
    çÍ:jÒ¼  ã            
       óŠ  — d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d dlZd d	lmZmZmZ d d
lmZ d dl m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5  ejl                  dejn                  «      Z8e G d„ d«      «       Z9 G d„ dejt                  «      Z; G d„ dejx                  jz                  «      Z> G d„ dejx                  jz                  «      Z?de@de@fd„ZAde@de@fd „ZBd!e@d"eeC   defd#„ZDd$e;d!e@d%e@d&eEd'e@f
d(„ZFd)„ ZGy)*é    N)Údeque)Ú	dataclassÚfield)Údatetime)Úchain)ÚPath)ÚAnyÚDictÚIteratorÚListÚNoReturnÚOptionalÚTupleÚUnion)ÚquoteÚunquote)Ú_DEFAULT_CALLBACKÚNoOpCallbackÚTqdmCallback)Ú
isfilelike)ÚResponseé   )Ú	constants)ÚCommitOperationCopyÚCommitOperationDelete)ÚEntryNotFoundErrorÚRepositoryNotFoundErrorÚRevisionNotFoundError)Ú
hf_hub_urlÚhttp_get)ÚHfApiÚLastCommitInfoÚRepoFile)ÚHFValidationErrorÚhf_raise_for_statusÚhttp_backoffzy
    (^refs\/convert\/\w+)     # `refs/convert/parquet` revisions
    |
    (^refs\/pr\/\d+)          # PR revisions
    c                   ój   — e Zd ZU dZeed<   eed<   eed<   eed<    edd¬«      Zee   ed	<   d
efd„Z	y)ÚHfFileSystemResolvedPathzUData structure containing information about a resolved Hugging Face file system path.Ú	repo_typeÚrepo_idÚrevisionÚpath_in_repoNF)ÚdefaultÚreprÚ_raw_revisionÚreturnc                 óÈ  — t         j                  j                  | j                  d«      | j                  z   }| j
                  r-|› d| j
                  › d| j                  › �j                  d«      S | j                  t         j                  k7  r6|› dt        | j                  «      › d| j                  › �j                  d«      S |› d| j                  › �j                  d«      S )NÚ ú@ú/)r   ÚREPO_TYPES_URL_PREFIXESÚgetr)   r*   r/   r,   Úrstripr+   ÚDEFAULT_REVISIONÚsafe_revision)ÚselfÚ	repo_paths     ús/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/huggingface_hub/hf_file_system.pyÚ	unresolvez"HfFileSystemResolvedPath.unresolve0   sÍ   € Ü×5Ñ5×9Ñ9¸$¿.¹.È"ÓMÐPT×P\ÑP\Ñ\ˆ	Ø×ÒØ�[  $×"4Ñ"4Ð!5°Q°t×7HÑ7HÐ6IÐJ×QÑQÐRUÓVÐVØ�]‰]œi×8Ñ8Ò8Ø�[ ¤-°·±Ó">Ð!?¸qÀ×ARÑARÐ@SÐT×[Ñ[Ð\_Ó`Ð`à�[  $×"3Ñ"3Ð!4Ð5×<Ñ<¸SÓAÐAó    )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r/   r   r=   © r>   r<   r(   r(   $   s?   … á_àƒNØƒLØƒMØÓñ $)°¸EÔ#B€M�8˜C‘=ÓBðB˜3ô Br>   r(   c                   ó  ‡ — e Zd ZdZdZdZddddœdee   dee	edf   dee
   fˆ fd	„Zd
ededee   dee	ee   f   fd„Zd/dedee   defd„Zd/dee   ddfd„Z	 	 	 d0dededee   dee
   ddf
d„Zd/dedee   ddfd„Z	 	 	 d1dede	dee
   dee   ddf
d„Z	 d2dede	de	dee   deeeeeef   f      f
d„Z	 	 	 	 	 d3dede	de	dee   de	dee
   fd„Zdedeeeee   ee   f      fˆ fd„Zdedee   fˆ fd„Z	 	 	 	 	 d4dedee
   d e	de	de	dee   deee   eeeeef   f   f   fd!„Zd/d"ed#edee   ddfd$„Zdedefd%„Z d5dede	dee   deeef   fd&„Z!d'„ Z"d(„ Z#d)„ Z$dedefd*„Z%e&dfd6ˆ fd+„Z'e(d,„ «       Z)d-„ Z*d.„ Z+ˆ xZ,S )7ÚHfFileSystema%  
    Access a remote Hugging Face Hub repository as if were a local file system.

    > [!WARNING]
    > [`HfFileSystem`] provides fsspec compatibility, which is useful for libraries that require it (e.g., reading
    >     Hugging Face datasets directly with `pandas`). However, it introduces additional overhead due to this compatibility
    >     layer. For better performance and reliability, it's recommended to use `HfApi` methods when possible.

    Args:
        token (`str` or `bool`, *optional*):
            A valid user access token (string). Defaults to the locally saved
            token, which is the recommended method for authentication (see
            https://huggingface.co/docs/huggingface_hub/quick-start#authentication).
            To disable authentication, pass `False`.
        endpoint (`str`, *optional*):
            Endpoint of the Hub. Defaults to <https://huggingface.co>.
    Usage:

    ```python
    >>> from huggingface_hub import HfFileSystem

    >>> fs = HfFileSystem()

    >>> # List files
    >>> fs.glob("my-username/my-model/*.bin")
    ['my-username/my-model/pytorch_model.bin']
    >>> fs.ls("datasets/my-username/my-dataset", detail=False)
    ['datasets/my-username/my-dataset/.gitattributes', 'datasets/my-username/my-dataset/README.md', 'datasets/my-username/my-dataset/data.json']

    >>> # Read/write files
    >>> with fs.open("my-username/my-model/pytorch_model.bin") as f:
    ...     data = f.read()
    >>> with fs.open("my-username/my-model/pytorch_model.bin", "wb") as f:
    ...     f.write(data)
    ```
    r2   ÚhfN)ÚendpointÚtokenÚ
block_sizerI   rJ   rK   c                ó²   •— t        ‰| �  |i |¤Ž |xs t        j                  | _        || _        t        ||¬«      | _        || _        i | _	        i | _
        y )N)rI   rJ   )ÚsuperÚ__init__r   ÚENDPOINTrI   rJ   r!   Ú_apirK   Ú_repo_and_revision_exists_cacheÚdircache)r:   rI   rJ   rK   ÚargsÚstorage_optionsÚ	__class__s         €r<   rN   zHfFileSystem.__init__c   s[   ø€ ô 	‰Ñ˜$Ð2 /Ò2Ø Ò6¤I×$6Ñ$6ˆŒØˆŒ
Ü 8°5Ô9ˆŒ	Ø$ˆŒð ð 	Ô,ð :<ˆ�r>   r)   r*   r+   r0   c                 óâ  — |||f| j                   vrR	 | j                  j                  |||t        j                  ¬«       d| j                   |||f<   d| j                   ||d f<   | j                   |||f   S # t
        t        f$ r2}d|f| j                   |||f<   d|f| j                   ||d f<   Y d }~ŒNd }~wt        $ r0}d|f| j                   |||f<   d| j                   ||d f<   Y d }~Œ…d }~ww xY w)N)r+   r)   Útimeout)TNF)rQ   rP   Ú	repo_infor   ÚHF_HUB_ETAG_TIMEOUTr   r$   r   )r:   r)   r*   r+   Úes        r<   Ú_repo_and_revision_existz%HfFileSystem._repo_and_revision_existy   s!  € ð �w Ð)°×1UÑ1UÑUð^Ø—	‘	×#Ñ#Ø h¸)ÌY×MjÑMjð $ô ð Xb�×4Ñ4°iÀÈ(Ð5SÑTØS]�×4Ñ4°iÀÈ$Ð5OÑPØ×3Ñ3°YÀÈÐ4RÑSÐSøô ,Ô->Ð?ò \ØW\Ð^_ÐW_�×4Ñ4°iÀÈ(Ð5SÑTØSXÐZ[ÐS[�×4Ñ4°iÀÈ$Ð5OÖPûÜ(ò ^ØW\Ð^_ÐW_�×4Ñ4°iÀÈ(Ð5SÑTØS]�×4Ñ4°iÀÈ$Ð5OÖPûð^ús#   “-A6 Á6C.Â(B2Â2C.Â>&C)Ã)C.Úpathc                 ó  — dt         t           dt         t           dt         t           fd„}| j                  |«      }|st        d«      ‚|j	                  d«      d   dz   t
        j                  j                  «       v r8d|vrt        d«      ‚|j	                  dd«      \  }}t
        j                  |   }nt
        j                  }|j                  d«      dkD  �r¶d	|v rË|j	                  d	d«      \  }}d|v rwt        j                  |«      }|�J|d
|j                  «       fv r6t        j                  d|«      j                  d«      }|j                  «       }n|j	                  dd«      \  }}nd} |t!        |«      |«      }| j#                  |||«      \  }	}
|	�sJt%        ||
«       �n<d
}dj'                  |j	                  d«      d
d «      }dj'                  |j	                  d«      dd
 «      }|j	                  d«      d   }dj'                  |j	                  d«      dd
 «      }|}|}| j#                  |||«      \  }	}
|	s¡t)        |
t*        t,        f«      r)|}|}| j#                  |||«      \  }	}|	sot%        ||
«       nbt%        ||
«       nU|}d}d	|v r(|j	                  d	d«      \  }} |t!        |«      |«      }nd
}| j#                  |||«      \  }	}|	st        d«      ‚|�|nt
        j.                  }t1        |||||¬«      S )a€  
        Resolve a Hugging Face file system path into its components.

        Args:
            path (`str`):
                Path to resolve.
            revision (`str`, *optional*):
                The revision of the repo to resolve. Defaults to the revision specified in the path.

        Returns:
            [`HfFileSystemResolvedPath`]: Resolved path information containing `repo_type`, `repo_id`, `revision` and `path_in_repo`.

        Raises:
            `ValueError`:
                If path contains conflicting revision information.
            `NotImplementedError`:
                If trying to list repositories.
        Úrevision_in_pathr+   r0   c                 óD   — |�| �| |k7  rt        d| › d|› d�«      ‚|S | }|S )NzRevision specified in path ("z ") and in `revision` argument ("z") are not the same.)Ú
ValueError)r^   r+   s     r<   Ú%_align_revision_in_path_with_revisionzHHfFileSystem.resolve_path.<locals>._align_revision_in_path_with_revision    sU   € ð Ð#Ø#Ð/Ð4DÈÒ4PÜ$Ø7Ð8HÐ7IÐIiÐjrÐisð t-ð -óð ð ˆOð ,�ØˆOr>   z0Access to repositories lists is not implemented.r4   r   r   r3   Nr2   é   )r/   )r   rC   Ú_strip_protocolÚNotImplementedErrorÚsplitr   r5   ÚvaluesÚREPO_TYPES_MAPPINGÚREPO_TYPE_MODELÚcountÚSPECIAL_REFS_REVISION_REGEXÚsearchÚgroupÚsubÚlstripr   r[   Ú_raise_file_not_foundÚjoinÚ
isinstancer   r$   r8   r(   )r:   r\   r+   ra   r)   r*   r^   Úmatchr,   Úrepo_and_revision_existÚerrÚrepo_id_with_namespaceÚpath_in_repo_with_namespaceÚrepo_id_without_namespaceÚpath_in_repo_without_namespaceÚ_s                   r<   Úresolve_pathzHfFileSystem.resolve_pathŒ   s  € ð(	Ü&¤s™mð	Ü7?Ä±}ð	ä”c‰]ó	ð ×#Ñ# DÓ)ˆÙä%Ð&XÓYÐYØ�Z‰Z˜‹_˜QÑ #Ñ%¬×)JÑ)J×)QÑ)QÓ)SÑSØ˜$‰ä)Ð*\Ó]Ð]Ø"Ÿj™j¨¨aÓ0‰OˆI�tÜ!×4Ñ4°YÑ?‰Iä!×1Ñ1ˆIØ�:‰:�c‹?˜QÓØ�d‰{Ø,0¯J©J°s¸AÓ,>Ñ)�Ð)ØÐ*Ñ*Ü7×>Ñ>Ð?OÓP�EØÐ(¨X¸$ÀÇÁÃÐ9NÑ-Nä'B×'FÑ'FÀrÐK[Ó'\×'cÑ'cÐdgÓ'h˜Ø+0¯;©;«=Ñ(à9I×9OÑ9OÐPSÐUVÓ9WÑ6Ð(©,à#%�LÙ@ÄÐIYÓAZÐ\dÓe�Ø/3×/LÑ/LÈYÐX_ÐaiÓ/jÑ,Ð'¨Ú.Ü)¨$°Ö4à#'Ð Ø),¯©°$·*±*¸S³/À"À1Ð2EÓ)FÐ&Ø.1¯h©h°t·z±zÀ#³ÀqÀrÐ7JÓ.KÐ+Ø,0¯J©J°s«O¸AÑ,>Ð)Ø14·±¸$¿*¹*ÀS»/È!È"Ð:MÓ1NÐ.Ø0�Ø:�Ø/3×/LÑ/LÈYÐX_ÐaiÓ/jÑ,Ð'¨Ù.Ü! #Ô(?ÔARÐ'SÔTØ";˜Ø'E˜Ø59×5RÑ5RÐS\Ð^eÐgoÓ5pÑ2Ð/°Ù6Ü1°$¸Õ<ä-¨d°CÕ8àˆGØˆLØ�d‰{Ø,0¯J©J°s¸AÓ,>Ñ)�Ð)Ù@ÄÐIYÓAZÐ\dÓe‘à#'Ð Ø)-×)FÑ)FÀyÐRYÐ[cÓ)dÑ&Ð# QÙ*Ü)Ð*\Ó]Ð]à'Ð3‘8¼×9SÑ9SˆÜ'¨	°7¸HÀlÐbrÔsÐsr>   c                 ó  — |s5| j                   j                  «        | j                  j                  «        y| j                  |«      }|j	                  «       }|r0| j                   j                  |d«       | j                  |«      }|rŒ0|j                  sq| j                  j                  |j                  |j                  dfd«       | j                  j                  |j                  |j                  |j                  fd«       yy)ac  
        Clear the cache for a given path.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.invalidate_cache).

        Args:
            path (`str`, *optional*):
                Path to clear from cache. If not provided, clear the entire cache.

        N)rR   ÚclearrQ   rz   r=   ÚpopÚ_parentr,   r)   r*   r+   )r:   r\   Úresolved_paths      r<   Úinvalidate_cachezHfFileSystem.invalidate_cacheë   sà   € ñ Ø�M‰M×ÑÔ!Ø×0Ñ0×6Ñ6Õ8à ×-Ñ-¨dÓ3ˆMØ ×*Ñ*Ó,ˆDÙØ—‘×!Ñ! $¨Ô-Ø—|‘| DÓ)�ò ð
 !×-Ò-Ø×4Ñ4×8Ñ8¸-×:QÑ:QÐS`×ShÑShÐjnÐ9oÐquÔvØ×4Ñ4×8Ñ8Ø"×,Ñ,¨m×.CÑ.CÀ]×E[ÑE[Ð\Ð^bõð .r>   ÚmodeÚHfFileSystemFilec                 ó˜   — |�|n| j                   }|�||d<   d|v rt        d«      ‚|dk(  rt        | |f||dœ|¤ŽS t        | |f||dœ|¤ŽS )NrK   Úaz/Appending to remote files is not yet supported.r   )r�   r+   )rK   rd   ÚHfFileSystemStreamFiler‚   )r:   r\   r�   r+   rK   Úkwargss         r<   Ú_openzHfFileSystem._open  sr   € ð $.Ð#9‘Z¸t¿¹ˆ
ØÐ!Ø#-ˆF�<Ñ Ø�$‰;Ü%Ð&WÓXÐXØ˜Š?Ü)¨$°Ð]¸4È(Ñ]ÐV\Ñ]Ð]ä# D¨$ÐW°TÀHÑWÐPVÑWÐWr>   c                 óN  — | j                  ||¬«      }| j                  j                  |j                  |j                  | j
                  |j                  |j                  |j                  d«      |j                  d«      ¬«       | j                  |j                  «       ¬«       y )N©r+   Úcommit_messageÚcommit_description)r,   r*   rJ   r)   r+   rŠ   r‹   ©r\   )rz   rP   Údelete_filer,   r*   rJ   r)   r+   r6   r€   r=   )r:   r\   r+   r†   r   s        r<   Ú_rmzHfFileSystem._rm  s�   € Ø×)Ñ)¨$¸Ð)ÓBˆØ�	‰	×ÑØ&×3Ñ3Ø!×)Ñ)Ø—*‘*Ø#×-Ñ-Ø"×+Ñ+Ø!Ÿ:™:Ð&6Ó7Ø%Ÿz™zÐ*>Ó?ð 	ô 	
ð 	×Ñ =×#:Ñ#:Ó#<ÐÕ=r>   Ú	recursiveÚmaxdepthc                 óX  — | j                  ||¬«      }| j                  ||||¬«      }|D �cg c]/  }| j                  |«      rŒ| j                  |«      j                  ‘Œ1 }}|D �	cg c]  }	t	        |	¬«      ‘Œ }
}	d› d�}||rdndz  }||�d	|› d�ndz  }| j
                  j                  |j                  |j                  | j                  |
|j                  |j                  d
|«      |j                  d«      ¬«       | j                  |j                  «       ¬«       yc c}w c c}	w )aÔ  
        Delete files from a repository.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.rm).

        > [!WARNING]
        > Note: When possible, use `HfApi.delete_file()` for better performance.

        Args:
            path (`str`):
                Path to delete.
            recursive (`bool`, *optional*):
                If True, delete directory and all its contents. Defaults to False.
            maxdepth (`int`, *optional*):
                Maximum number of subdirectories to visit when deleting recursively.
            revision (`str`, *optional*):
                The git revision to delete from.

        r‰   )r�   r�   r+   )r,   zDelete ú zrecursively r2   Nzup to depth rŠ   r‹   )r*   r)   rJ   Ú
operationsr+   rŠ   r‹   rŒ   )rz   Úexpand_pathÚisdirr,   r   rP   Úcreate_commitr*   r)   rJ   r+   r6   r€   r=   )r:   r\   r�   r�   r+   r†   r   ÚpathsÚpaths_in_repor,   r“   rŠ   s               r<   ÚrmzHfFileSystem.rm&  s3  € ð6 ×)Ñ)¨$¸Ð)ÓBˆØ× Ñ  °ÀXÐX`Ð ÓaˆØJOÖhÀ$ÐW[×WaÑWaÐbfÕWg˜×*Ñ*¨4Ó0×=Ó=ÐhˆÐhØ[hÖiÈ<Ô+¸ÖFÐiˆ
ÐiØ" 4 &¨Ð*ˆØ©I™.¸2Ñ=ˆØ¸Ð8L˜L¨¨
°!Ñ4ÐRTÑTˆà�	‰	×ÑØ!×)Ñ)Ø#×-Ñ-Ø—*‘*Ø!Ø"×+Ñ+Ø!Ÿ:™:Ð&6¸ÓGØ%Ÿz™zÐ*>Ó?ð 	 ô 	
ð 	×Ñ =×#:Ñ#:Ó#<ÐÕ=ùò iùÚis   ­D"ÁD"Á'D'ÚdetailÚrefreshc                 ó¶  — | j                  ||¬«      }|j                  «       }	  | j                  |f||dœ|¤Ž}|r|S |D �cg c]  }|d   ‘Œ	 c}S # t        $ rx |j                  st        |d«        | j                  | j                  |«      f||dœ|¤Ž}|D �cg c]  }|d   |k(  sŒ|‘Œ nc c}w }}t        |«      dk(  rt        |d«       Y Œ—w xY wc c}w )a×  
        List the contents of a directory.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.ls).

        > [!WARNING]
        > Note: When possible, use `HfApi.list_repo_tree()` for better performance.

        Args:
            path (`str`):
                Path to the directory.
            detail (`bool`, *optional*):
                If True, returns a list of dictionaries containing file information. If False,
                returns a list of file paths. Defaults to True.
            refresh (`bool`, *optional*):
                If True, bypass the cache and fetch the latest data. Defaults to False.
            revision (`str`, *optional*):
                The git revision to list from.

        Returns:
            `List[Union[str, Dict[str, Any]]]`: List of file paths (if detail=False) or list of file information
            dictionaries (if detail=True).
        r‰   )r›   r+   NÚnamer   )rz   r=   Ú_ls_treer   r,   ro   r~   Úlen)	r:   r\   rš   r›   r+   r†   r   ÚoutÚos	            r<   ÚlszHfFileSystem.lsT  së   € ð4 ×)Ñ)¨$¸Ð)ÓBˆØ×&Ñ&Ó(ˆð		2Ø�$—-‘- ÐS¨gÀÑSÈFÑSˆCñ ˆsÐ:°cÖ":° 1 V£9Ò":Ð:øô "ò 	2à ×-Ò-Ü% d¨DÔ1Ø�$—-‘- §¡¨TÓ 2Ða¸GÈhÑaÐZ`ÑaˆCØ!Ö7˜ Q v¡Y°$Ó%6’1Ñ7ùÒ7ˆCÐ7Ü�3‹x˜1Š}Ü% d¨DÔ1ùð	2üò #;s*   ¥A ÁCÁA
CÂB/Â*B/Â."CÃCÚexpand_infoc           
      óR  — | j                  ||¬«      }|j                  «       }t        |j                  |j                  |j
                  d|j                  ¬«      j                  «       }g }	|| j                  v �rX|�sU| j                  |   }
|	j                  |
«       g }|rºd}t        |
D �cg c]  }|d   dk(  sŒ||f‘Œ c}«      }|r’|j                  «       \  }}|�||k  ru|d   | j                  vr|j                  |d   «       nO| j                  |d      }
|	j                  |
«       |j                  |
D �cg c]  }|d   dk(  r|dz   |f‘Œ c}«       |rŒ’g }|r'|	D �cg c]  }|d	   �Œ	| j                  |d   «      ‘Œ }}|r|s|�rC|�r@t        j                  j                  ||z   «      }|j!                  d
«      s||k(  s|t#        ||«      v r|j%                  d
«      n| j                  |«      }|�"|t'        |«      d  j)                  d
«      }||z  }|	D �cg c]  }|d   j+                  |d
z   «      rŒ|‘Œ }	}t-        | j                  «      D ]3  }|j+                  |d
z   «      sŒ| j                  j/                  |d «       Œ5 | j                  j/                  |d «       |	j                  | j1                  ||d|||¬«      «       |	S | j2                  j5                  |j                  |j6                  |||j
                  |j                  ¬«      }|D ]ò  }|d
z   |j                  z   }t9        |t:        «      r=||j<                  d|j>                  |j@                  |jB                  |jD                  dœ}n|dd|jF                  |jB                  dœ}| j                  |d   «      }| j                  jI                  |g «      j                  |«       |t'        |«      d  j)                  d
«      }|�||k  sŒâ|	j                  |«       Œô |	S c c}w c c}w c c}w c c}w )Nr‰   r2   ©r,   r/   rb   ÚtypeÚ	directoryr�   r   Úlast_commitr4   T)r�   r›   r+   r£   r�   )r�   Úexpandr+   r)   Úfile©r�   Úsizer¦   Úblob_idÚlfsr¨   Úsecurityr   ©r�   r¬   r¦   Útree_idr¨   )%rz   r=   r(   r)   r*   r+   r/   rR   Úextendr   ÚpopleftÚappendr~   Úosr\   ÚcommonprefixÚendswithr   r7   rŸ   ri   Ú
startswithÚlistr}   rž   rP   Úlist_repo_treer,   rq   r#   r¬   r­   r®   r¨   r¯   r±   Ú
setdefault)r:   r\   r�   r›   r+   r£   r�   r   Ú	root_pathr    Úcached_path_infosÚdirs_not_in_dircacheÚdepthÚ	path_infoÚdirs_to_visitÚdir_infoÚdirs_not_expandedr¡   Úcommon_prefixÚcommon_pathÚcommon_path_depthÚcached_pathÚtreeÚ
cache_pathÚcache_path_infoÚparent_paths                             r<   rž   zHfFileSystem._ls_tree|  s^  € ð ×)Ñ)¨$¸Ð)ÓBˆØ×&Ñ&Ó(ˆÜ,Ø×#Ñ#Ø×!Ñ!Ø×"Ñ"ØØ'×5Ñ5ô
÷ ‰)‹+ð 	ð ˆØ�4—=‘=Ò ªØ $§¡¨dÑ 3ÐØ�J‰JÐ(Ô)Ø#%Ð Ùð �Ü %Ø9JÖo¨IÈiÐX^ÑN_ÐcnÓNn�e˜YÒ'Òoó!�ñ $Ø&3×&;Ñ&;Ó&=‘O�E˜8ØÐ'¨5°HÒ+<Ø# FÑ+°4·=±=Ñ@Ø0×7Ñ7¸ÀÑ8HÕIà04·±¸hÀvÑ>NÑ0OÐ-ØŸJ™JÐ'8Ô9Ø)×0Ñ0ð 6Gö!"à(1Ø'0°Ñ'8¸KÒ'Gð &+¨Q¡Y°	Ò$:ò!"ôò $ð  !#ÐÙàFIÖ$fÀÈQÈ}ÑM]ÑMe T§\¡\°!°F±)Õ%<Ð$fÐ!Ð$fáÑ2ºÒHYô !#§¡× 4Ñ 4Ð5IÐL]Ñ5]Ó ^�ð %×-Ñ-¨cÔ2Ø$¨	Ò1Ø$¬Ð.BÐDUÓ(VÑVð "×(Ñ(¨Ô-ð Ÿ™ mÓ4ð ð Ð'Ø(3´C¸³I°KÐ(@×(FÑ(FÀsÓ(KÐ%ØÐ 1Ñ1�HØ"%ÖU˜Q¨Q¨v©Y×-AÑ-AÀ+ÐPSÑBSÕ-T’qÐU�ÐUÜ#'¨¯©Ó#6ò =�KØ"×-Ñ-¨k¸CÑ.?Õ@ØŸ™×)Ñ)¨+°tÕ<ð=ð —‘×!Ñ! +¨tÔ4Ø—
‘
Ø—M‘MØ#Ø"+Ø $Ø!)Ø$/Ø!)ð "ó ô	ðX ˆ
ðC —9‘9×+Ñ+Ø×%Ñ%Ø×*Ñ*Ø#Ø"Ø&×/Ñ/Ø'×1Ñ1ð ,ó ˆDð "ò 0�	Ø&¨™_¨y¯~©~Ñ=�
Ü˜i¬Ô2à *Ø )§¡Ø &Ø#,×#4Ñ#4Ø(Ÿ}™}Ø'0×'<Ñ'<Ø$-×$6Ñ$6ñ'‘Oð !+Ø !Ø +Ø#,×#4Ñ#4Ø'0×'<Ñ'<ñ'�Oð #Ÿl™l¨?¸6Ñ+BÓC�Ø—‘×(Ñ(¨°bÓ9×@Ñ@ÀÔQØ"¤3 t£9 ;Ð/×5Ñ5°cÓ:�ØÐ# u°Ó'8Ø—J‘J˜Õ/ð10ð2 ˆ
ùòo pùò!"ùò %gùò" Vs*   Â-PÂ;PÄ<PÅ$
PÅ/PÈ!P$È>P$c              /   ó¨   •K  — | j                  ||j                  d«      ¬«      j                  «       }t        ‰| �  |g|¢­i |¤ŽE d{  –—†  y7 Œ­w)aÁ  
        Return all files below the given path.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.walk).

        Args:
            path (`str`):
                Root path to list files from.

        Returns:
            `Iterator[Tuple[str, List[str], List[str]]]`: An iterator of (path, list of directory names, list of file names) tuples.
        r+   r‰   N)rz   r6   r=   rM   Úwalk)r:   r\   rS   r†   rU   s       €r<   rÍ   zHfFileSystem.walkò  sL   øè ø€ ð × Ñ  °·
±
¸:Ó0FÐ ÓG×QÑQÓSˆÜ‘7‘< Ð6 tÒ6¨vÑ6×6Ò6ús   ƒAAÁ
AÁAc                 ó„   •— | j                  ||j                  d«      ¬«      j                  «       }t        ‰| �  |fi |¤ŽS )ah  
        Find files by glob-matching.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.glob).

        Args:
            path (`str`):
                Path pattern to match.

        Returns:
            `List[str]`: List of paths matching the pattern.
        r+   r‰   )rz   r6   r=   rM   Úglob)r:   r\   r†   rU   s      €r<   rÏ   zHfFileSystem.glob  s@   ø€ ð × Ñ  °·
±
¸:Ó0FÐ ÓG×QÑQÓSˆÜ‰w‰|˜DÑ+ FÑ+Ð+r>   Úwithdirsc                 óX  — |�|dk  rt        d«      ‚| j                  ||¬«      }|j                  «       }	  | j                  |fd||j                  |dœ|¤Ž}	|s|	D �
cg c]  }
|
d   dk7  sŒ|
‘Œ }	}
n/ | j
                  |fd|j                  i|¤Ž}|d   dk(  r|g|	z   n|	}	|	D �
ci c]  }
|
d	   |
“Œ
 }	}
t        |	«      }|s|S |D �ci c]  }||	|   “Œ
 c}S c c}
w c c}
w # t        $ r8 	  | j
                  |fd|i|¤Žd   d
k(  r|i i}	ni }	n# t        $ r i }	Y nw xY wY Œmw xY wc c}w )aÕ  
        List all files below path.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.find).

        Args:
            path (`str`):
                Root path to list files from.
            maxdepth (`int`, *optional*):
                Maximum depth to descend into subdirectories.
            withdirs (`bool`, *optional*):
                Include directory paths in the output. Defaults to False.
            detail (`bool`, *optional*):
                If True, returns a dict mapping paths to file information. Defaults to False.
            refresh (`bool`, *optional*):
                If True, bypass the cache and fetch the latest data. Defaults to False.
            revision (`str`, *optional*):
                The git revision to list from.

        Returns:
            `Union[List[str], Dict[str, Dict[str, Any]]]`: List of paths or dict of file information.
        r   zmaxdepth must be at least 1r‰   T)r�   r›   r+   r�   r¦   r§   r+   r�   rª   )	r`   rz   r=   rž   r+   Úinfor   ÚFileNotFoundErrorÚsorted)r:   r\   r�   rÐ   rš   r›   r+   r†   r   r    r¡   rÀ   Únamesr�   s                 r<   ÚfindzHfFileSystem.find  sƒ  € ð@ Ð H¨q¢LÜÐ:Ó;Ð;Ø×)Ñ)¨$¸Ð)ÓBˆØ×&Ñ&Ó(ˆð	.Ø�$—-‘-ØðØ $¨gÀ×@VÑ@VÐaiñØmsñˆCñ Ø"%ÖB˜Q¨¨6©°kÓ)A’qÐB�ÑBð &˜DŸI™I dÑV°]×5KÑ5KÐVÈvÑV�	Ø+4°VÑ+<ÀÒ+K�y�k CÒ'ÐQT�Ø),Ö- A�1�V‘9˜a‘<Ð-ˆCÐ-Ü�s“ˆÙØˆLà05Ö6¨�D˜#˜d™)‘OÒ6Ð6ùò Cùò
 .øô! "ò 	ðØ�4—9‘9˜TÑ?¨HÐ?¸Ñ?ÀÑGÈ6ÒQØ ˜*‘Cà�CùÜ$ò Ø’ðüð	üò* 7sM   ·"C# ÁCÁ-CÂ'CÃ	D'Ã#	D$Ã-"DÄD$ÄDÄD$ÄDÄD$Ä#D$Úpath1Úpath2c                 óà  — | j                  ||¬«      }| j                  ||¬«      }|j                  |j                  k(  xr |j                  |j                  k(  }|r“d|› d|› �}| j                  j	                  |j                  |j                  |j
                  |j                  d|«      |j                  dd«      t        |j                  |j                  |j
                  ¬«      g¬«       n³| j                  |d	|j
                  ¬«      5 }	|	j                  «       }
d
d
d
«       d|› d|› �}| j                  j                  
|j                  |j                  | j                  |j                  |j
                  |j                  d|«      |j                  d«      ¬«       | j                  |j                  «       ¬«       | j                  |j                  «       ¬«       y
# 1 sw Y   ŒÆxY w)aš  
        Copy a file within or between repositories.

        > [!WARNING]
        > Note: When possible, use `HfApi.upload_file()` for better performance.

        Args:
            path1 (`str`):
                Source path to copy from.
            path2 (`str`):
                Destination path to copy to.
            revision (`str`, *optional*):
                The git revision to copy from.

        r‰   zCopy z to rŠ   r‹   r2   )Úsrc_path_in_repor,   Úsrc_revision)r*   r)   r+   rŠ   r‹   r“   ÚrbN©Úpath_or_fileobjr,   r*   rJ   r)   r+   rŠ   r‹   rŒ   )rz   r)   r*   rP   r–   r+   r6   r   r,   ÚopenÚreadÚupload_filerJ   r€   r=   )r:   r×   rØ   r+   r†   Úresolved_path1Úresolved_path2Ú	same_reporŠ   ÚfÚcontents              r<   Úcp_filezHfFileSystem.cp_fileQ  sÔ  € ð  ×*Ñ*¨5¸8Ð*ÓDˆØ×*Ñ*¨5¸8Ð*ÓDˆð ×$Ñ$¨×(@Ñ(@Ñ@ÒuÀ^×E[ÑE[Ð_m×_uÑ_uÑEuð 	ñ Ø$ U G¨4°¨wÐ7ˆNØ�I‰I×#Ñ#Ø&×.Ñ.Ø(×2Ñ2Ø'×0Ñ0Ø%Ÿz™zÐ*:¸NÓKØ#)§:¡:Ð.BÀBÓ#Gä'Ø)7×)DÑ)DØ%3×%@Ñ%@Ø%3×%<Ñ%<ôðð $õ ð —‘˜5 $°×1HÑ1H�ÓIð #ÈQØŸ&™&›(�÷#à$ U G¨4°¨wÐ7ˆNØ�I‰I×!Ñ!Ø 'Ø+×8Ñ8Ø&×.Ñ.Ø—j‘jØ(×2Ñ2Ø'×0Ñ0Ø%Ÿz™zÐ*:¸NÓKØ#)§:¡:Ð.BÓ#Cð "ô 	ð 	×Ñ >×#;Ñ#;Ó#=ÐÔ>Ø×Ñ >×#;Ñ#;Ó#=ÐÕ>÷#ð #ús   ÄG$Ç$G-c                 óD   —  | j                   |fi i |¥ddi¥¤Ž}|d   d   S )ai  
        Get the last modified time of a file.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.modified).

        Args:
            path (`str`):
                Path to the file.

        Returns:
            `datetime`: Last commit date of the file.
        r£   Tr¨   Údate©rÒ   )r:   r\   r†   rÒ   s       r<   ÚmodifiedzHfFileSystem.modified‰  s6   € ð ˆt�y‰y˜ÑAÐ!@ FÐ!@¨M¸4Ñ!@ÑAˆØ�MÑ" 6Ñ*Ð*r>   c                 ó2  — | j                  ||¬«      }|j                  «       }|j                  dd«      }|j                  s~|ddddœ}|�r=| j                  j                  |j                  |j                  |j                  ¬«      d	   }i |¥dt        |j                  |j                  |j                  ¬
«      dœ¥}�nÉd}| j                  |«      }	|s|	| j                  vr| j                  |	«       |	| j                  v r8| j                  |	   D �
cg c]  }
|
d   |k(  sŒ|
‘Œ }}
|st!        |d«       |d   }|s|�|�rH|�rE|d   �€?| j                  j#                  |j                  |j                  ||j                  |j                  ¬«      }|st!        |d«       |d   }t%        |j                  |j                  |j                  d|j&                  ¬«      j                  «       }t)        |t*        «      rM|dz   |j,                  z   |j.                  d|j0                  |j2                  |j4                  |j6                  dœ}n,|dz   |j,                  z   dd|j8                  |j4                  dœ}|sdD �ci c]  }|||   “Œ
 }}|€J ‚|S c c}
w c c}w )a   
        Get information about a file or directory.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.info).

        > [!WARNING]
        > Note: When possible, use `HfApi.get_paths_info()` or `HfApi.repo_info()`  for better performance.

        Args:
            path (`str`):
                Path to get info for.
            refresh (`bool`, *optional*):
                If True, bypass the cache and fetch the latest data. Defaults to False.
            revision (`str`, *optional*):
                The git revision to get info from.

        Returns:
            `Dict[str, Any]`: Dictionary containing file information (type, size, commit info, etc.).

        r‰   r£   Fr   r§   N)r�   r¬   r¦   r¨   )r)   r+   éÿÿÿÿ)ÚoidÚtitleré   )r±   r¨   r�   r¨   )r©   r+   r)   r2   r¥   r4   rª   r«   r°   )r�   r¬   r¦   )rz   r=   r6   r,   rP   Úlist_repo_commitsr*   r)   r+   r"   Ú	commit_idrï   Ú
created_atr~   rR   r¢   ro   Úget_paths_infor(   r/   rq   r#   r\   r¬   r­   r®   r¨   r¯   r±   )r:   r\   r›   r+   r†   r   r£   r    r¨   rË   r¡   Úout1Ú
paths_inforÀ   r¼   Úks                   r<   rÒ   zHfFileSystem.info™  s²  € ð* ×)Ñ)¨$¸Ð)ÓBˆØ×&Ñ&Ó(ˆØ—j‘jØ˜5ó
ˆð ×)Ò)ð ØØ#Ø#ñ	ˆCò Ø"Ÿi™i×9Ñ9Ø!×)Ñ)°]×5LÑ5LÐWd×WmÑWmð :ó àñ�ðØðà#Ü#1Ø'×1Ñ1¸×9JÑ9JÐQ\×QgÑQgô$ò’ð ˆCØŸ,™, tÓ,ˆKÙ ;°d·m±mÑ#Cà—‘˜Ô$Ø˜dŸm™mÑ+à#'§=¡=°Ñ#=ÖS˜aÀÀ6ÁÈdÓARšÐS�ÐSÙÜ)¨$°Ô5Ø˜1‘g�Ù˜#˜+ª+º#À#ÀmÑBTÑB\Ø!ŸY™Y×5Ñ5Ø!×)Ñ)Ø!×.Ñ.Ø&Ø*×3Ñ3Ø+×5Ñ5ð 6ó �
ñ "Ü)¨$°Ô5Ø& q™M�	Ü4Ø!×+Ñ+Ø!×)Ñ)Ø!×*Ñ*Ø!#Ø"/×"=Ñ"=ô÷ ‘)“+ð ô ˜i¬Ô2à )¨C¡°)·.±.Ñ @Ø )§¡Ø &Ø#,×#4Ñ#4Ø(Ÿ}™}Ø'0×'<Ñ'<Ø$-×$6Ñ$6ñ‘Cð !*¨C¡°)·.±.Ñ @Ø !Ø +Ø#,×#4Ñ#4Ø'0×'<Ñ'<ñ�Cñ #Ø.FÖG¨˜1˜c !™f™9ÐG�CÐGØˆÐˆØˆ
ùòW TùòR Hs   ÄJÄ!JÉ:Jc                 ó€   — 	 |j                  dd«      r| j                  |«        | j                  |fi |¤Ž y#  Y yxY w)aÁ  
        Check if a file exists.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.exists).

        > [!WARNING]
        > Note: When possible, use `HfApi.file_exists()` for better performance.

        Args:
            path (`str`):
                Path to check.

        Returns:
            `bool`: True if file exists, False otherwise.
        r›   FT)r6   r€   rÒ   )r:   r\   r†   s      r<   ÚexistszHfFileSystem.existsû  sC   € ð 	Ø�z‰z˜) UÔ+Ø×%Ñ% dÔ+àˆD�I‰I�dÑ%˜fÒ%Øøð	Ùús   ‚69 ¹=c                 óP   — 	 | j                  |«      d   dk(  S # t        $ r Y yw xY w)ai  
        Check if a path is a directory.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.isdir).

        Args:
            path (`str`):
                Path to check.

        Returns:
            `bool`: True if path is a directory, False otherwise.
        r¦   r§   F)rÒ   ÚOSError©r:   r\   s     r<   r•   zHfFileSystem.isdir  s1   € ð	Ø—9‘9˜T“? 6Ñ*¨kÑ9Ð9øÜò 	Ùð	ús   ‚ ™	%¤%c                 ó@   — 	 | j                  |«      d   dk(  S #  Y yxY w)a`  
        Check if a path is a file.

        For more details, refer to [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.isfile).

        Args:
            path (`str`):
                Path to check.

        Returns:
            `bool`: True if path is a file, False otherwise.
        r¦   rª   Frê   rû   s     r<   ÚisfilezHfFileSystem.isfile&  s)   € ð	Ø—9‘9˜T“? 6Ñ*¨fÑ4Ð4øð	Ùús   ‚ ™c                 óô   — | j                  |«      }t        |j                  |j                  |j                  |j
                  | j                  ¬«      }| j                  |«      r|j                  ddd«      }|S )zÝ
        Get the HTTP URL of the given path.

        Args:
            path (`str`):
                Path to get URL for.

        Returns:
            `str`: HTTP URL to access the file or directory on the Hub.
        )r)   r+   rI   z	/resolve/z/tree/r   )	rz   r   r*   r,   r)   r+   rI   r•   Úreplace)r:   r\   r   Úurls       r<   r   zHfFileSystem.url8  sn   € ð ×)Ñ)¨$Ó/ˆÜØ×!Ñ!Ø×&Ñ&Ø#×-Ñ-Ø"×+Ñ+Ø—]‘]ô
ˆð �:‰:�dÔØ—+‘+˜k¨8°QÓ7ˆCØˆ
r>   c                 ó  •— |j                  d«      }t        |j                  «       «      dhz
  }t        |t        t
        f«      rt        |«      dkD  rt        ‰| �   ||f||dœ|¤ŽS t        |«      r|}n)| j                  |«      rt        j                  |d¬«       yt        |t        t        f«      r4t        j                  t        j                  j!                  |«      d¬«       d}|€t#        |d«      }d}|j%                  «       }	| j'                  ||¬	«      }
| j)                  ||¬	«      d
   }|j+                  |«       	 t-        t/        |
j0                  |
j2                  |
j4                  |
j6                  | j8                  ¬«      |||d| j:                  j=                  «       t        |t
        «      r|j>                  nd¬«       |jA                  |	«       |r|jC                  «        yy# |r|jC                  «        w w xY w)aC  
        Copy single remote file to local.

        > [!WARNING]
        > Note: When possible, use `HfApi.hf_hub_download()` for better performance.

        Args:
            rpath (`str`):
                Remote path to download from.
            lpath (`str`):
                Local path to download to.
            callback (`Callback`, *optional*):
                Optional callback to track download progress. Defaults to no callback.
            outfile (`IO`, *optional*):
                Optional file-like object to write to. If provided, `lpath` is ignored.

        r+   r   )ÚcallbackÚoutfileT)Úexist_okNFÚwbr‰   r¬   ©r*   r+   Úfilenamer)   rI   )r   Ú	temp_fileÚdisplayed_filenameÚexpected_sizeÚresume_sizeÚheadersÚ	_tqdm_bar)"r6   ÚsetÚkeysrq   r   r   rŸ   rM   Úget_filer   r•   rµ   ÚmakedirsrC   r   r\   Údirnamerß   Útellrz   rÒ   Úset_sizer    r   r*   r+   r,   r)   rI   rP   Ú_build_hf_headersÚtqdmÚseekÚclose)r:   ÚrpathÚlpathr  r  r†   r+   Úunhandled_kwargsÚ
close_fileÚinitial_posÚresolve_remote_pathr
  rU   s               €r<   r  zHfFileSystem.get_fileO  sÇ  ø€ ð$ —:‘:˜jÓ)ˆÜ˜vŸ{™{›}Ó-°°Ñ<ÐÜ˜(¤\´<Ð$@ÔAÄSÐIYÓEZÐ]^ÒE^ô ‘7Ñ# E¨5Ð_¸8ÈWÑ_ÐX^Ñ_Ð_ô �eÔØ‰GØ�Z‰Z˜ÔÜ�K‰K˜¨Õ-Øä�eœc¤4˜[Ô)Ü�K‰KœŸ™Ÿ™¨Ó.¸Õ>ð ˆ
Øˆ?Ü˜5 $Ó'ˆGØˆJØ—l‘l“nˆð #×/Ñ/°ÀÐ/ÓIÐØŸ	™	 %°(˜	Ó;¸FÑCˆØ×Ñ˜-Ô(ð	 ÜÜØ/×7Ñ7Ø0×9Ñ9Ø0×=Ñ=Ø1×;Ñ;Ø!Ÿ]™]ôð "Ø#(Ø+ØØŸ	™	×3Ñ3Ó5Ü+5°hÄÔ+M˜(Ÿ-š-ÐSWõð �L‰L˜Ô%ñ Ø—‘•ð ø‰zØ—‘•ð ús   ÅBG1 Ç1Hc                 ó   — t        d«      ‚)z½A context within which files are committed together upon exit

        Requires the file class to implement `.commit()` and `.discard()`
        for the normal and exception cases.
        ú(Transactional commits are not supported.©rd   ©r:   s    r<   ÚtransactionzHfFileSystem.transaction“  s   € ô "Ð"LÓMÐMr>   c                 ó   — t        d«      ‚)z@Begin write transaction for deferring files, non-context versionr   r!  r"  s    r<   Ústart_transactionzHfFileSystem.start_transactionž  s   € ô "Ð"LÓMÐMr>   c                 ó‚   — t         t        | «      | j                  | j                  | j                  | j
                  dœffS )N)rR   rQ   )Úmake_instancer¦   Ústorage_argsrT   rR   rQ   r"  s    r<   Ú
__reduce__zHfFileSystem.__reduce__¤  sB   € äÜ�‹JØ×ÑØ× Ñ à ŸM™MØ37×3WÑ3Wñð	
ð 
ð 	
r>   ©N)rÜ   NN)FNN)TFN)FFNFN)NFFFN)FN©r0   N)-r?   r@   rA   rB   Úroot_markerÚprotocolr   rC   r   ÚboolÚintrN   r   Ú	Exceptionr[   r(   rz   r€   r‡   rŽ   r™   r   r
   r	   r¢   rž   r   rÍ   rÏ   rÖ   rç   r   rë   rÒ   rø   r•   rý   r   r   r  Úpropertyr#  r%  r)  Ú__classcell__©rU   s   @r<   rG   rG   :   sÅ  ø„ ñ#ðJ €KØ€Hð
 #'Ø(,Ø$(ò<ð ˜3‘-ð<ð �T˜3 �_Ñ%ð	<ð
 ˜S‘Mõ<ð,TØðTØ'*ðTØ6>¸s±mðTà	ˆt�X˜iÑ(Ð(Ñ	)óTñ&]t ð ]t°¸±ð ]tÐIaó ]tñ~ X¨c¡]ð ¸dó ð> Ø"&Ø$(ñXàðXð ðXð ˜3‘-ð	Xð
 ˜S‘MðXð 
óXñ$>˜ð > x°¡}ð >È$ó >ð   Ø"&Ø"&ñ,>àð,>ð ð,>ð ˜3‘-ð	,>ð
 ˜3‘-ð,>ð 
ó,>ð^ `dñ&;Øð&;Ø!%ð&;Ø7;ð&;ØOWÐX[É}ð&;à	ˆe�C˜˜c 3˜h™Ð'Ñ(Ñ	)ó&;ðV  ØØ"&Ø!Ø"&ñtàðtð ðtð ð	tð
 ˜3‘-ðtð ðtð ˜3‘-ótðl7˜ð 7°(¸5ÀÀdÈ3ÁiÐQUÐVYÑQZÐAZÑ;[Ñ2\õ 7ð ,˜ð ,¨4°©9õ ,ð& #'ØØØØ"&ñ=7àð=7ð ˜3‘-ð=7ð ð	=7ð
 ð=7ð ð=7ð ˜3‘-ð=7ð 
ˆt�C‰y˜$˜s D¨¨c¨¡NÐ2Ñ3Ð3Ñ	4ó=7ñ~6?˜Sð 6?¨ð 6?¸À¹ð 6?Ð[_ó 6?ðp+˜Sð +¨xó +ñ `˜ð ` tð `¸xÈ¹}ð `ÐbfÐgjÐloÐgoÑbpó `òDò2ò$ð$˜ð  ó ð. /@Èö B ðH ñNó ðNòNö

r>   rG   c                   ó„   ‡ — e Zd Zddededee   fˆ fd„Zˆ fd„Zdeded	e	fd
„Z
dd„Zdded	dfd„Zdˆ fd„	Zd	efd„Zˆ xZS )r‚   NÚfsr\   r+   c                 óø   •— 	 |j                  ||¬«      | _        t	        ‰| �  || j                  j                  «       fi |¤Ž |  y # t        $ r)}d|j                  dd«      v rt        |› d�«      |‚‚ d }~ww xY w)Nr‰   Úwr�   r2   úB.
Make sure the repository and revision exist before writing data.)rz   r   rÓ   r6   rM   rN   r=   )r:   r5  r\   r+   r†   rZ   rU   s         €r<   rN   zHfFileSystemFile.__init__²  sŠ   ø€ ð	Ø!#§¡°À Ó!IˆDÔô 	‰Ñ˜˜T×/Ñ/×9Ñ9Ó;ÑF¸vÒFÚøô !ò 	Ø�f—j‘j ¨Ó,Ñ,Ü'Ø�cÐ\Ð]óàðð ûð	ús   ƒA Á	A9Á$A4Á4A9c                 ó:   •— t        | d«      sy t        ‰| �	  «       S ©Nr   ©ÚhasattrrM   Ú__del__©r:   rU   s    €r<   r=  zHfFileSystemFile.__del__¾  ó   ø€ Ü�t˜_Ô-àÜ‰w‰Ó Ð r>   ÚstartÚendr0   c                 ó´  — dd|› d|dz
  › �i| j                   j                  j                  «       ¥}t        | j                  j
                  | j                  j                  | j                  j                  | j                  j                  | j                   j                  ¬«      }t        d||t        j                  ¬«      }t        |«       |j                  S )NÚrangezbytes=ú-r   r  ÚGET)r  rW   )r5  rP   r  r   r   r*   r+   r,   r)   rI   r&   r   ÚHF_HUB_DOWNLOAD_TIMEOUTr%   ræ   )r:   r@  rA  r  r   Úrs         r<   Ú_fetch_rangezHfFileSystemFile._fetch_rangeÄ  s·   € à�v˜e˜W A c¨A¡g YÐ/ð
à�g‰g�l‰l×,Ñ,Ó.ð
ˆô Ø×&Ñ&×.Ñ.Ø×'Ñ'×0Ñ0Ø×'Ñ'×4Ñ4Ø×(Ñ(×2Ñ2Ø—W‘W×%Ñ%ô
ˆô ˜ ¨W¼i×>_Ñ>_Ô`ˆÜ˜AÔØ�y‰yÐr>   c                 ó<   — t        j                  dd¬«      | _        y )Nzhffs-F)ÚprefixÚdelete)ÚtempfileÚNamedTemporaryFiler  r"  s    r<   Ú_initiate_uploadz!HfFileSystemFile._initiate_uploadÔ  s   € Ü!×4Ñ4¸GÈEÔRˆ�r>   Úfinalc                 óH  — | j                   j                  d«       | j                   j                  «       }| j                  j	                  |«       |�rO| j                  j                  «        | j                  j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                   j#                  d«      | j                   j#                  d«      ¬«       t%        j&                  | j                  j                  «       | j                  j)                  | j                  j+                  «       ¬«       y y )Nr   rŠ   r‹   rÝ   rŒ   )Úbufferr  rà   r  Úwriter  r5  rP   rá   r�   r   r,   r*   rJ   r)   r+   r†   r6   rµ   Úremover€   r=   )r:   rO  Úblocks      r<   Ú_upload_chunkzHfFileSystemFile._upload_chunk×  s"  € Ø�‰×Ñ˜ÔØ—‘× Ñ Ó"ˆØ�‰×Ñ˜UÔ#ÚØ�N‰N× Ñ Ô"Ø�G‰G�L‰L×$Ñ$Ø $§¡× 3Ñ 3Ø!×/Ñ/×<Ñ<Ø×*Ñ*×2Ñ2Ø—g‘g—m‘mØ×,Ñ,×6Ñ6Ø×+Ñ+×4Ñ4Ø#Ÿ{™{Ÿ™Ð/?Ó@Ø#'§;¡;§?¡?Ð3GÓ#Hð %ô 	ô �I‰I�d—n‘n×)Ñ)Ô*Ø�G‰G×$Ñ$Ø×'Ñ'×1Ñ1Ó3ð %õ ð r>   c                 óH  •— | j                   dk(  rx|�|dk(  rq| j                  dk(  rb| j                  j                  | j                  dd¬«      5 }|j                  «       }| xj                  t        |«      z  c_        |cddd«       S t        ‰| �  |«      S # 1 sw Y   ŒxY w)a)  Read remote file.

        If `length` is not provided or is -1, the entire file is downloaded and read. On POSIX systems and if
        `hf_transfer` is not enabled, the file is loaded in memory directly. Otherwise, the file is downloaded to a
        temporary file and read from there.
        rÜ   Nrí   r   )rK   )r�   Úlocr5  rß   r\   rà   rŸ   rM   )r:   Úlengthrå   r    rU   s       €r<   rà   zHfFileSystemFile.readì  s�   ø€ ð �9‰9˜Ò & .°F¸b²LÀdÇhÁhÐRSÂmØ—‘—‘˜dŸi™i¨¸!�Ó<ð ÀØ—f‘f“h�Ø—’œC ›HÑ$•Ø÷ñ ô ‰w‰|˜FÓ#Ð#÷	ð ús   Á0BÂB!c                 óL   — | j                   j                  | j                  «      S r*  ©r5  r   r\   r"  s    r<   r   zHfFileSystemFile.urlú  ó   € Ø�w‰w�{‰{˜4Ÿ9™9Ó%Ð%r>   r*  r+  )F©rí   )r?   r@   rA   rG   rC   r   rN   r=  r/  ÚbytesrH  rN  r.  rU  rà   r   r2  r3  s   @r<   r‚   r‚   ±  sj   ø„ ñ
˜<ð 
¨sð 
¸hÀs¹mõ 
ô!ð #ð ¨Cð °Eó ó Sñ 4ð °Dó õ*$ð&�S÷ &r>   r‚   c                   ó„   ‡ — e Zd Z	 	 	 	 ddedededee   dedefˆ fd„Zdded	efd
„Zddefd„Z	defd„Z
ˆ fd„Zd„ Zˆ xZS )r…   r5  r\   r�   r+   rK   Ú
cache_typec                 óÌ  •— |dk7  rt        d|› �«      ‚|dk7  rt        d|› �«      ‚d|v rt        d|› d�«      ‚	 |j                  ||¬«      | _        | j                  j                  «       d dœ| _        t        ‰	| �   || j                  j                  «       f|||dœ|¤Ž d | _	        |  y # t        $ r-}d|j	                  d	d
«      v rt        |› d�«      |‚Y d }~ŒŠd }~ww xY w)Nr   z:HfFileSystemStreamFile only supports block_size=0 but got Únonez?HfFileSystemStreamFile only supports cache_type='none' but got r7  z;HfFileSystemStreamFile only supports reading but got mode='ú'r‰   r�   r2   r8  )r�   r¬   ©r�   rK   r_  )
r`   rz   r   rÓ   r6   r=   ÚdetailsrM   rN   Úresponse)
r:   r5  r\   r�   r+   rK   r_  r†   rZ   rU   s
            €r<   rN   zHfFileSystemStreamFile.__init__ÿ  s  ø€ ð ˜Š?ÜÐYÐZdÐYeÐfÓgÐgØ˜ÒÜÐ^Ð_iÐ^jÐkÓlÐlØ�$‰;ÜÐZÐ[_ÐZ`Ð`aÐbÓcÐcð	Ø!#§¡°À Ó!IˆDÔð !%× 2Ñ 2× <Ñ <Ó >ÈÑMˆŒÜ‰ÑØ�×"Ñ"×,Ñ,Ó.ð	
Ø59ÀjÐ]gñ	
Økqò	
ð -1ˆŒÚøô !ò 	Ø�f—j‘j ¨Ó,Ñ,Ü'Ø�cÐ\Ð]óàðô -ûð	ús   ¼B- Â-	C#Â6#CÃC#rW  Úwhencec                 óX   — |dk(  r|dk(  ry || j                   k(  r|dk(  ry t        d«      ‚)Nr   r   zCannot seek streaming HF file)rW  r`   )r:   rW  rf  s      r<   r  zHfFileSystemStreamFile.seek  s2   € Ø�!Š8˜ !šØØ�$—(‘(Š?˜v¨š{ØÜÐ8Ó9Ð9r>   rX  c                 ól  — |dk\  r|fnd}| j                   €Ît        | j                  j                  | j                  j                  | j                  j
                  | j                  j                  | j                  j                  ¬«      }t        d|| j                  j                  j                  «       dt        j                  ¬«      | _         t        | j                   «       	 d| j                   j                  _         | j                   j                  j"                  |Ž }| xj(                  t+        |«      z  c_        |S # t$        $ �re | j                   j'                  «        t        | j                  j                  | j                  j                  | j                  j
                  | j                  j                  | j                  j                  ¬«      }t        d|dd| j(                  z  i| j                  j                  j                  «       ¥dt        j                  ¬«      | _         t        | j                   «       	 d| j                   j                  _         | j                   j                  j"                  |Ž }n(# t$        $ r | j                   j'                  «        ‚ w xY wY �ŒŽw xY w)	Nr   rE   r  rE  T)r  ÚstreamrW   ÚRangez	bytes=%d-)re  r   r   r*   r+   r,   r)   r5  rI   r&   rP   r  r   rF  r%   ÚrawÚdecode_contentrà   r0  r  rW  rŸ   )r:   rX  Ú	read_argsr   r    s        r<   rà   zHfFileSystemStreamFile.read%  s!  € Ø!'¨1¢�V‘I°"ˆ	Ø�=‰=Ð ÜØ×*Ñ*×2Ñ2Ø×+Ñ+×4Ñ4Ø×+Ñ+×8Ñ8Ø×,Ñ,×6Ñ6ØŸ™×)Ñ)ôˆCô )ØØØŸ™Ÿ™×6Ñ6Ó8ØÜ!×9Ñ9ôˆDŒMô   §¡Ô.ð	Ø/3ˆD�M‰M×ÑÔ,Ø(�$—-‘-×#Ñ#×(Ñ(¨)Ð4ˆCð4 	�Š”C˜“HÑ�Øˆ
øô5 ó 	Ø�M‰M×ÑÔ!ô Ø×*Ñ*×2Ñ2Ø×+Ñ+×4Ñ4Ø×+Ñ+×8Ñ8Ø×,Ñ,×6Ñ6ØŸ™×)Ñ)ôˆCô )ØØØ  +°·±Ñ"8Ð]¸D¿G¹G¿L¹L×<ZÑ<ZÓ<\Ð]ØÜ!×9Ñ9ôˆDŒMô   §¡Ô.ðØ37�—‘×!Ñ!Ô0Ø,�d—m‘m×'Ñ'×,Ñ,¨iÐ8‘øÜò Ø—‘×#Ñ#Ô%Øðúò ð+	ús+   Ã&>E ÅDJ3É>JÊJ3Ê%J,Ê,J3Ê2J3r0   c                 óL   — | j                   j                  | j                  «      S r*  rZ  r"  s    r<   r   zHfFileSystemStreamFile.urlV  r[  r>   c                 ó:   •— t        | d«      sy t        ‰| �	  «       S r:  r;  r>  s    €r<   r=  zHfFileSystemStreamFile.__del__Y  r?  r>   c                 ó”   — t         | j                  | j                  | j                  | j                  | j
                  j                  ffS r*  )Úreopenr5  r\   r�   Ú	blocksizeÚcacher�   r"  s    r<   r)  z!HfFileSystemStreamFile.__reduce___  s0   € Ü˜Ÿ™ §¡¨D¯I©I°t·~±~ÀtÇzÁzÇÁÐWÐWÐWr>   )rÜ   Nr   ra  )r   r\  )r?   r@   rA   rG   rC   r   r/  rN   r  rà   r   r=  r)  r2  r3  s   @r<   r…   r…   þ  s‹   ø„ ð
 Ø"&ØØ ñàðð ðð ð	ð
 ˜3‘-ðð ðð õñ>:˜ð : Só :ñ/˜3ó /ðb&�Só &ô!öXr>   r…   r+   r0   c                 óF   — t         j                  | «      r| S t        | «      S r*  )rj   rr   Ú
safe_quoter‰   s    r<   r9   r9   c  s    € Ü2×8Ñ8¸ÔBˆ8Ð\Ì
ÐS[ÓH\Ð\r>   Úsc                 ó   — t        | d¬«      S )Nr2   )Úsafe)r   )rv  s    r<   ru  ru  g  s   € Ü�˜ÔÐr>   r\   rt   c                 ó    — | }t        |t        «      r| › d�}n+t        |t        «      r| › d�}nt        |t        «      r| › d�}t	        |«      |‚)Nz (repository not found)z (revision not found)z (invalid repository id))rq   r   r   r$   rÓ   )r\   rt   Úmsgs      r<   ro   ro   k  s\   € Ø
€CÜ�#Ô.Ô/Ø�Ð-Ð.‰Ü	�CÔ.Ô	/Ø�Ð+Ð,‰Ü	�CÔ*Ô	+Ø�Ð.Ð/ˆÜ
˜CÓ
  cÐ)r>   r5  r�   rK   r_  c                 ó,   — | j                  ||||¬«      S )Nrc  )rß   )r5  r\   r�   rK   r_  s        r<   rq  rq  v  s   € Ø�7‰7�4˜d¨zÀjˆ7ÓQÐQr>   c                 ó`   —  | |i |¤Ž}|j                  «       D ]  \  }}t        |||«       Œ |S r*  )ÚitemsÚsetattr)ÚclsrS   r†   Úinstance_cache_attributes_dictr5  ÚattrÚcached_values          r<   r'  r'  z  s?   € Ù	ˆdÐ	�fÑ	€BØ<×BÑBÓDò (ÑˆˆlÜ��D˜,Õ'ð(à€Ir>   )Hrµ   ÚrerL  Úcollectionsr   Údataclassesr   r   r   Ú	itertoolsr   Úpathlibr   Útypingr	   r
   r   r   r   r   r   r   Úurllib.parser   r   ÚfsspecÚfsspec.callbacksr   r   r   Úfsspec.utilsr   Úrequestsr   r2   r   Ú_commit_apir   r   Úerrorsr   r   r   Úfile_downloadr   r    Úhf_apir!   r"   r#   Úutilsr$   r%   r&   ÚcompileÚVERBOSErj   r(   ÚAbstractFileSystemrG   ÚspecÚAbstractBufferedFiler‚   r…   rC   r9   ru  r0  ro   r/  rq  r'  rE   r>   r<   ú<module>r˜     sU  ðÛ 	Û 	Û Ý ß (Ý Ý Ý ß N× NÓ Nß 'ã ß JÑ JÝ #Ý å ß Cß VÑ Vß /ß 3Ñ 3ß GÑ Gð )˜bŸj™jðð
 ‡J�JóÐ ð ÷Bð Bó ðBô*t
�6×,Ñ,ô t
ônJ&�v—{‘{×7Ñ7ô J&ôZbX˜VŸ[™[×=Ñ=ô bXðJ]˜Cð ] Có ]ð�#ð ˜#ó ð* ð *¨(°9Ñ*=ð *À(ó *ðRˆ|ð R 3ð R¨cð R¸sð RÐPSó Rór>   