§
    «˜ºh3·  ã            
       ó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j6        dej7        ¦  «        Z8e G d„ d¦  «        ¦   «         Z9 G d„ dej:        ¦  «        Z; G d„ dej<        j=        ¦  «        Z> G d„ dej<        j=        ¦  «        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S ))é    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                   óx   — 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	dS )Ú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        d¦  «        | j        z   }| j        r'|› d| j        › d| j        › �                     d¦  «        S | j        t           j	        k    r4|› dt          | j        ¦  «        › d| j        › �                     d¦  «        S |› d| j        › �                     d¦  «        S )NÚ ú@ú/)r   ÚREPO_TYPES_URL_PREFIXESÚgetr)   r*   r/   r,   Úrstripr+   ÚDEFAULT_REVISIONÚsafe_revision)ÚselfÚ	repo_paths     úf/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/huggingface_hub/hf_file_system.pyÚ	unresolvez"HfFileSystemResolvedPath.unresolve0   sÏ   € ÝÔ5×9Ò9¸$¼.È"ÑMÔMÐPTÔP\Ñ\ˆ	ØÔð 	BØÐJÐJ $Ô"4ÐJÐJ°tÔ7HÐJÐJ×QÒQÐRUÑVÔVÐVØŒ]�iÔ8Ò8Ð8ØÐTÐT¥-°´Ñ">Ô">ÐTÐTÀÔARÐTÐT×[Ò[Ð\_Ñ`Ô`Ð`àÐ5Ð5 $Ô"3Ð5Ð5×<Ò<¸SÑAÔAÐAó    )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r/   r   r=   © r>   r<   r(   r(   $   sŠ   € € € € € € à_Ð_à€N€N�NØ€L€L�LØ€M€M�MØÐÐÑð $) 5°¸EÐ#BÑ#BÔ#B€M�8˜C”=ÐBÐBÑBðB˜3ð Bð Bð Bð Bð Bð Br>   r(   c                   ó¬  ‡ — e Zd ZdZdZdZdddœdee         dee	edf         fˆ fd„Z
d	ed
edee         dee	ee         f         fd„Zd1dedee         defd„Zd1dee         ddfd„Z	 	 	 d2dededee         dee         ddf
d„Zd1dedee         ddfd„Z	 	 	 d3dede	dee         dee         ddf
d„Z	 d4dede	de	dee         deeeeeef         f                  f
d„Z	 	 	 	 d5dede	de	dee         d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	 	 	 	 	 d6d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ˆ fd$„Zd1d%ed&edee         ddfd'„Zdedefd(„Z d7d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d8ˆ fd.„Z'e(d/„ ¦   «         Z)d0„ Z*ˆ xZ+S )9ÚHfFileSystema8  
    Access a remote Hugging Face Hub repository as if were a local file system.

    <Tip warning={true}>

        [`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.

    </Tip>

    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ÚtokenrJ   rK   c                ó¨   •—  t          ¦   «         j        |i |¤Ž |pt          j        | _        || _        t          ||¬¦  «        | _        i | _        d S )NrI   )	ÚsuperÚ__init__r   ÚENDPOINTrJ   rK   r!   Ú_apiÚ_repo_and_revision_exists_cache)r:   rJ   rK   ÚargsÚstorage_optionsÚ	__class__s        €r<   rN   zHfFileSystem.__init__f   s^   ø€ ð 	�‰ŒÔ˜$Ð2 /Ð2Ð2Ð2Ø Ð6¥IÔ$6ˆŒØˆŒ
Ý 8°5Ð9Ñ9Ô9ˆŒ	ð ð 	Ô,Ð,Ð,r>   r)   r*   r+   r0   c                 ó–  — |||f| j         vr®	 | j                             |||t          j        ¬¦  «         d| j         |||f<   d| j         ||d f<   nj# t
          t          f$ r(}d|f| j         |||f<   d|f| j         ||d f<   Y d }~n6d }~wt          $ r&}d|f| j         |||f<   d| j         ||d f<   Y d }~nd }~ww xY w| j         |||f         S )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_existx   sT  € ð �w Ð)°Ô1UÐUÐUð^Ø”	×#Ò#Ø h¸)ÍYÔMjð $ñ ô ð ð Xb�Ô4°iÀÈ(Ð5SÑTØS]�Ô4°iÀÈ$Ð5OÑPÐPøõ ,Õ->Ð?ð \ð \ð \ØW\Ð^_ÐW_�Ô4°iÀÈ(Ð5SÑTØSXÐZ[ÐS[�Ô4°iÀÈ$Ð5OÑPÐPÐPÐPÐPÐPøøøøÝ(ð ^ð ^ð ^ØW\Ð^_ÐW_�Ô4°iÀÈ(Ð5SÑTØS]�Ô4°iÀÈ$Ð5OÑPÐPÐPÐPÐPÐPøøøøð^øøøð Ô3°YÀÈÐ4RÔSÐSs#   Ž(A ÁB8Á"BÂB8ÂB3Â3B8Úpathc                 óh  — dt           t                   dt           t                   dt           t                   fd„}|                      |¦  «        }|st          d¦  «        ‚|                     d¦  «        d         dz   t
          j                             ¦   «         v r?d|vrt          d¦  «        ‚|                     dd¦  «        \  }}t
          j        |         }nt
          j	        }| 
                    d¦  «        dk    �r&d	|v r÷|                     d	d¦  «        \  }}d|v r‘t                               |¦  «        }|�[|d
|                     ¦   «         fv rCt                               d|¦  «                             d¦  «        }|                     ¦   «         }n|                     dd¦  «        \  }}nd} |t!          |¦  «        |¦  «        }|                      |||¦  «        \  }	}
|	st%          ||
¦  «         �n“d
}d                     |                     d¦  «        d
d…         ¦  «        }d                     |                     d¦  «        dd
…         ¦  «        }|                     d¦  «        d         }d                     |                     d¦  «        dd
…         ¦  «        }|}|}|                      |||¦  «        \  }	}
|	s]t)          |
t*          t,          f¦  «        r1|}|}|                      |||¦  «        \  }	}|	st%          ||
¦  «         nyt%          ||
¦  «         nh|}d}d	|v r3|                     d	d¦  «        \  }} |t!          |¦  «        |¦  «        }nd
}|                      |||¦  «        \  }	}|	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                 óL   — |�| �| |k    rt          d| › d|› d�¦  «        ‚n| }|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Ÿ   s^   € ð Ð#Ø#Ð/Ð4DÈÒ4PÐ4PÝ$ð-Ð8Hð -ð -Ðjrð -ð -ð -ñô ð øð
 ,�Øˆ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   rZ   Ú_raise_file_not_foundÚjoinÚ
isinstancer   r$   r8   r(   )r:   r[   r+   r`   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Ñ)Ô)ˆØð 
	2å%Ð&XÑYÔYÐYØ�ZŠZ˜‰_Œ_˜QÔ #Ñ%­Ô)J×)QÒ)QÑ)SÔ)SÐSÐSØ˜$ˆˆå)Ð*\Ñ]Ô]Ð]Ø"Ÿjšj¨¨aÑ0Ô0‰OˆI�tÝ!Ô4°YÔ?ˆIˆIå!Ô1ˆIØ�:Š:�c‰?Œ?˜QÒÑØ�dˆ{ˆ{Ø,0¯JªJ°s¸AÑ,>Ô,>Ñ)�Ð)ØÐ*Ð*Ð*Ý7×>Ò>Ð?OÑPÔP�EØÐ(¨X¸$ÀÇÂÁÄÐ9NÐ-NÐ-Nå'B×'FÒ'FÀrÐK[Ñ'\Ô'\×'cÒ'cÐdgÑ'hÔ'h˜Ø+0¯;ª;©=¬=Ð(Ð(à9I×9OÒ9OÐPSÐUVÑ9WÔ9WÑ6Ð(¨,¨,à#%�LØ@Ð@ÅÐIYÑAZÔAZÐ\dÑeÔe�Ø/3×/LÒ/LÈYÐX_ÐaiÑ/jÔ/jÑ,Ð'¨Ø.ð 5Ý)¨$°Ñ4Ô4Ð4ùà#'Ð Ø),¯ª°$·*²*¸S±/´/À"À1À"Ô2EÑ)FÔ)FÐ&Ø.1¯hªh°t·z²zÀ#±´ÀqÀrÀrÔ7JÑ.KÔ.KÐ+Ø,0¯JªJ°s©O¬O¸AÔ,>Ð)Ø14·²¸$¿*º*ÀS¹/¼/È!È"È"Ô:MÑ1NÔ1NÐ.Ø0�Ø:�Ø/3×/LÒ/LÈYÐX_ÐaiÑ/jÔ/jÑ,Ð'¨Ø.ð 9Ý! #Õ(?ÕARÐ'SÑTÔTð 9Ø";˜Ø'E˜Ø59×5RÒ5RÐS\Ð^eÐgoÑ5pÔ5pÑ2Ð/°Ø6ð =Ý1°$¸Ñ<Ô<Ð<øå-¨d°CÑ8Ô8Ð8øàˆGØˆLØ�dˆ{ˆ{Ø,0¯JªJ°s¸AÑ,>Ô,>Ñ)�Ð)Ø@Ð@ÅÐIYÑAZÔAZÐ\dÑeÔe��à#'Ð Ø)-×)FÒ)FÀyÐRYÐ[cÑ)dÔ)dÑ&Ð# QØ*ð ^Ý)Ð*\Ñ]Ô]Ð]à'Ð3�8�8½Ô9SˆÝ'¨	°7¸HÀlÐbrÐsÑsÔsÐsr>   c                 óè  — |s4| j                              ¦   «          | j                             ¦   «          dS |                      |¦  «        }|                     ¦   «         }|r2| j                              |d¦  «         |                      |¦  «        }|°2|j        sW| j                             |j        |j	        dfd¦  «         | j                             |j        |j	        |j
        fd¦  «         dS dS )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)ÚdircacheÚclearrQ   ry   r=   ÚpopÚ_parentr,   r)   r*   r+   )r:   r[   Úresolved_paths      r<   Úinvalidate_cachezHfFileSystem.invalidate_cacheê   s  € ð ð 	ØŒM×ÒÑ!Ô!Ð!ØÔ0×6Ò6Ñ8Ô8Ð8Ð8Ð8à ×-Ò-¨dÑ3Ô3ˆMØ ×*Ò*Ñ,Ô,ˆDØð *Ø”×!Ò! $¨Ñ-Ô-Ð-Ø—|’| DÑ)Ô)�ð ð *ð
 !Ô-ð ØÔ4×8Ò8¸-Ô:QÐS`ÔShÐjnÐ9oÐquÑvÔvÐvØÔ4×8Ò8Ø"Ô,¨mÔ.CÀ]ÔE[Ð\Ð^bñô ð ð ð ðð r>   ÚrbÚmodeÚ
block_sizeÚHfFileSystemFilec                 ó|   — d|v rt          d¦  «        ‚|dk    rt          | |f|||dœ|¤ŽS t          | |f|||dœ|¤ŽS )NÚaz/Appending to remote files is not yet supported.r   )r‚   r+   rƒ   )rc   ÚHfFileSystemStreamFiler„   )r:   r[   r‚   r+   rƒ   Úkwargss         r<   Ú_openzHfFileSystem._open  sk   € ð �$ˆ;ˆ;Ý%Ð&WÑXÔXÐXØ˜Š?ˆ?Ý)¨$°Ðt¸4È(Ð_iÐtÐtÐmsÐtÐtÐtå# D¨$Ðn°TÀHÐYcÐnÐnÐgmÐnÐnÐnr>   c                 óD  — |                       ||¬¦  «        }| j                             |j        |j        | j        |j        |j        |                     d¦  «        |                     d¦  «        ¬¦  «         |  	                    | 
                    ¦   «         ¬¦  «         d S )N©r+   Úcommit_messageÚcommit_description)r,   r*   rK   r)   r+   rŒ   r�   ©r[   )ry   rP   Údelete_filer,   r*   rK   r)   r+   r6   r€   r=   )r:   r[   r+   rˆ   r   s        r<   Ú_rmzHfFileSystem._rm  s¡   € Ø×)Ò)¨$¸Ð)ÑBÔBˆØŒ	×ÒØ&Ô3Ø!Ô)Ø”*Ø#Ô-Ø"Ô+Ø!Ÿ:š:Ð&6Ñ7Ô7Ø%ŸzšzÐ*>Ñ?Ô?ð 	ñ 	
ô 	
ð 	
ð 	×Ò =×#:Ò#:Ñ#<Ô#<ÐÑ=Ô=Ð=Ð=Ð=r>   FÚ	recursiveÚmaxdepthc                 óÜ  ‡ — ‰                       ||¬¦  «        }‰                      ||||¬¦  «        }ˆ fd„|D ¦   «         }d„ |D ¦   «         }	d|› d�}
|
|rdndz  }
|
|�d
|› d�ndz  }
‰ j                             |j        |j        ‰ j        |	|j        |                     d|
¦  «        |                     d¦  «        ¬¦  «         ‰  	                    | 
                    ¦   «         ¬¦  «         d	S )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).

        <Tip warning={true}>

            Note: When possible, use `HfApi.delete_file()` for better performance.

        </Tip>

        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+   c                 ón   •— g | ]1}‰                      |¦  «        °‰                     |¦  «        j        ‘Œ2S rE   )Úisdirry   r,   )Ú.0r[   r:   s     €r<   ú
<listcomp>z#HfFileSystem.rm.<locals>.<listcomp>B  s?   ø€ ÐhÐhÐhÀ$ÐW[×WaÒWaÐbfÑWgÔWgÐh˜×*Ò*¨4Ñ0Ô0Ô=ÐhÐhÐhr>   c                 ó.   — g | ]}t          |¬ ¦  «        ‘ŒS ))r,   )r   )r–   r,   s     r<   r—   z#HfFileSystem.rm.<locals>.<listcomp>C  s$   € ÐiÐiÐiÈ<Õ+¸ÐFÑFÔFÐiÐiÐir>   zDelete ú zrecursively r2   Nzup to depth rŒ   r�   )r*   r)   rK   Ú
operationsr+   rŒ   r�   rŽ   )ry   Úexpand_pathrP   Úcreate_commitr*   r)   rK   r+   r6   r€   r=   )r:   r[   r‘   r’   r+   rˆ   r   ÚpathsÚpaths_in_reporš   rŒ   s   `          r<   ÚrmzHfFileSystem.rm"  s1  ø€ ð< ×)Ò)¨$¸Ð)ÑBÔBˆØ× Ò  °ÀXÐX`Ð ÑaÔaˆØhÐhÐhÐhÈ%ÐhÑhÔhˆØiÐiÐ[hÐiÑiÔiˆ
Ø* 4Ð*Ð*Ð*ˆØ¨IÐ=˜.˜.¸2Ñ=ˆØ¸Ð8LÐ4¨Ð4Ð4Ð4Ð4ÐRTÑTˆàŒ	×ÒØ!Ô)Ø#Ô-Ø”*Ø!Ø"Ô+Ø!Ÿ:š:Ð&6¸ÑGÔGØ%ŸzšzÐ*>Ñ?Ô?ð 	 ñ 	
ô 	
ð 	
ð 	×Ò =×#:Ò#:Ñ#<Ô#<ÐÑ=Ô=Ð=Ð=Ð=r>   TÚdetailÚrefreshc                 ó˜  ‡— |                       ‰|¬¦  «        }|                     ¦   «         Š	  | j        ‰f||dœ|¤Ž}n|# t          $ ro |j        st          ‰d¦  «          | j        |                      ‰¦  «        f||dœ|¤Ž}ˆfd„|D ¦   «         }t          |¦  «        dk    rt          ‰d¦  «         Y nw xY w|r|nd„ |D ¦   «         S )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).

        <Tip warning={true}>

            Note: When possible, use `HfApi.list_repo_tree()` for better performance.

        </Tip>

        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+   Nc                 ó,   •— g | ]}|d          ‰k    ¯|‘ŒS ©ÚnamerE   ©r–   Úor[   s     €r<   r—   z#HfFileSystem.ls.<locals>.<listcomp>y  s'   ø€ Ð7Ð7Ð7˜ Q v¤Y°$Ò%6Ð%6�1Ð%6Ð%6Ð%6r>   r   c                 ó   — g | ]
}|d          ‘ŒS r¤   rE   ©r–   r§   s     r<   r—   z#HfFileSystem.ls.<locals>.<listcomp>|  s   € Ð":Ð":Ð":° 1 V¤9Ð":Ð":Ð":r>   )ry   r=   Ú_ls_treer   r,   rn   r~   Úlen)r:   r[   r    r¡   r+   rˆ   r   Úouts    `      r<   ÚlszHfFileSystem.lsS  s  ø€ ð: ×)Ò)¨$¸Ð)ÑBÔBˆØ×&Ò&Ñ(Ô(ˆð		2Ø�$”- ÐS¨gÀÐSÐSÈFÐSÐSˆCˆCøÝ!ð 	2ð 	2ð 	2à Ô-ð 2Ý% d¨DÑ1Ô1Ð1Ø�$”- §¢¨TÑ 2Ô 2Ða¸GÈhÐaÐaÐZ`ÐaÐaˆCØ7Ð7Ð7Ð7˜cÐ7Ñ7Ô7ˆCÝ�3‰xŒx˜1Š}ˆ}Ý% d¨DÑ1Ô1Ð1øøð	2øøøð Ð:ˆsˆsÐ":Ð":°cÐ":Ñ":Ô":Ð:s   ®A  Á A6B9Â8B9Úexpand_infoc           	      óÆ  ‡ ‡— ‰                       ||¬¦  «        }|                     ¦   «         }t          |j        |j        |j        d|j        ¬¦  «                             ¦   «         }g }|‰ j        v �rõ|�sò‰ j        |         }	|                     |	¦  «         g }
|r£t          d„ |	D ¦   «         ¦  «        }|rˆ| 
                    ¦   «         }|d         ‰ j        vr|
                     |d         ¦  «         nG‰ j        |d                  }	|                     |	¦  «         |                     d„ |	D ¦   «         ¦  «         |°ˆg }|rˆ fd„|D ¦   «         }|r|
s|�r|�rt          j                             |
|z   ¦  «        }|                     d¦  «        s||k    s|t!          |
|¦  «        v r|                     d¦  «        n‰                      |¦  «        Šˆfd	„|D ¦   «         }‰ j        D ]5}|                     ‰dz   ¦  «        r‰ j                             |d ¦  «         Œ6‰ j                             ‰d ¦  «         |                     ‰                      ‰|d
||¬¦  «        ¦  «         nø‰ j                             |j        |j        |||j        |j        ¬¦  «        }|D ]Á}t3          |t4          ¦  «        r/|dz   |j        z   |j        d|j        |j        |j        |j        dœ}n|dz   |j        z   dd|j         |j        dœ}‰                      |d         ¦  «        }‰ j         !                    |g ¦  «                             |¦  «         |                     |¦  «         ŒÂ|S )Nr‹   r2   ©r,   r/   c                 ó*   — g | ]}|d          dk    ¯|‘ŒS ©ÚtypeÚ	directoryrE   ©r–   Ú	path_infos     r<   r—   z)HfFileSystem._ls_tree.<locals>.<listcomp>™  s(   € ÐfÐfÐf 9ÀYÈvÔEVÐZeÒEeÐEe�YÐEeÐEeÐEer>   r¥   c                 ó*   — g | ]}|d          dk    ¯|‘ŒS r²   rE   rµ   s     r<   r—   z)HfFileSystem._ls_tree.<locals>.<listcomp>£  s)   € ÐnÐnÐn¨9ÈYÐW]ÔM^ÐbmÒMmÐMm˜YÐMmÐMmÐMmr>   c                 óV   •— g | ]%}|d          ­
‰                      |d         ¦  «        ‘Œ&S )Úlast_commitNr¥   )r~   )r–   r§   r:   s     €r<   r—   z)HfFileSystem._ls_tree.<locals>.<listcomp>©  s3   ø€ Ð$fÐ$fÐ$fÀÈQÈ}ÔM]ÐMe T§\¢\°!°F´)Ñ%<Ô%<ÐMeÐMeÐMer>   r4   c                 óP   •— g | ]"}|d                                ‰dz   ¦  «        ° |‘Œ#S )r¥   r4   )Ú
startswith)r–   r§   Úcommon_paths     €r<   r—   z)HfFileSystem._ls_tree.<locals>.<listcomp>·  s6   ø€ ÐUÐUÐU˜Q¨Q¨v¬Y×-AÒ-AÀ+ÐPSÑBSÑ-TÔ-TÐU�qÐUÐUÐUr>   T)r‘   r¡   r+   r®   )r‘   Úexpandr+   r)   Úfile©r¥   Úsizer³   Úblob_idÚlfsr¹   Úsecurityr   r´   ©r¥   rÀ   r³   Útree_idr¹   )"ry   r=   r(   r)   r*   r+   r/   r{   Úextendr   ÚpopleftÚappendÚosr[   ÚcommonprefixÚendswithr   r7   r~   r»   r}   rª   rP   Úlist_repo_treer,   rp   r#   rÀ   rÁ   rÂ   r¹   rÃ   rÅ   Ú
setdefault)r:   r[   r‘   r¡   r+   r®   r   Ú	root_pathr¬   Úcached_path_infosÚdirs_not_in_dircacheÚdirs_to_visitÚdir_infoÚdirs_not_expandedÚcommon_prefixÚcached_pathÚtreer¶   Úcache_path_infoÚparent_pathr¼   s   `                   @r<   rª   zHfFileSystem._ls_tree~  s  øø€ ð ×)Ò)¨$¸Ð)ÑBÔBˆØ×&Ò&Ñ(Ô(ˆÝ,ØÔ#ØÔ!ØÔ"ØØ'Ô5ð
ñ 
ô 
÷ Š)‰+Œ+ð 	ð ˆØ�4”=Ð Ñ ¨Ñ Ø $¤¨dÔ 3ÐØ�JŠJÐ(Ñ)Ô)Ð)Ø#%Ð Øð õ !&ØfÐfÐ0AÐfÑfÔfñ!ô !�ð $ð 	Ø,×4Ò4Ñ6Ô6�HØ Ô'¨t¬}Ð<Ð<Ø,×3Ò3°H¸VÔ4DÑEÔEÐEÐEà,0¬M¸(À6Ô:JÔ,KÐ)ØŸ
š
Ð#4Ñ5Ô5Ð5Ø%×,Ò,ØnÐnÐ8IÐnÑnÔnñô ð ð $ð 	ð !#ÐØð gà$fÐ$fÐ$fÐ$fÀcÐ$fÑ$fÔ$fÐ!àð Ð2ð ¸ñ ÐHYñ õ !#¤× 4Ò 4Ð5IÐL]Ñ5]Ñ ^Ô ^�ð %×-Ò-¨cÑ2Ô2ð5à$¨	Ò1Ð1Ø$­Ð.BÐDUÑ(VÔ(VÐVÐVð "×(Ò(¨Ñ-Ô-Ð-ð Ÿš mÑ4Ô4ð ð VÐUÐUÐU #ÐUÑUÔU�Ø#'¤=ð =ð =�KØ"×-Ò-¨k¸CÑ.?Ñ@Ô@ð =Øœ×)Ò)¨+°tÑ<Ô<Ð<øØ”×!Ò! +¨tÑ4Ô4Ð4Ø—
’
Ø—M’MØ#Ø"+Ø $Ø!)Ø$/ð "ñ ô ñô ð øð ”9×+Ò+ØÔ%ØÔ*Ø#Ø"Ø&Ô/Ø'Ô1ð ,ñ ô ˆDð "ð ,ð ,�	Ý˜i­Ñ2Ô2ð à )¨C¡°)´.Ñ @Ø )¤Ø &Ø#,Ô#4Ø(œ}Ø'0Ô'<Ø$-Ô$6ð'ð '�O�Oð !*¨C¡°)´.Ñ @Ø !Ø +Ø#,Ô#4Ø'0Ô'<ð'ð '�Oð #Ÿlšl¨?¸6Ô+BÑCÔC�Ø”×(Ò(¨°bÑ9Ô9×@Ò@ÀÑQÔQÐQØ—
’
˜?Ñ+Ô+Ð+Ð+Øˆ
r>   c              /   óÊ   •K  — |                       ||                     d¦  «        ¬¦  «                             ¦   «         } t          ¦   «         j        |g|¢R i |¤ŽE d{V —† dS )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)ry   r6   r=   rM   Úwalk)r:   r[   rR   rˆ   rT   s       €r<   rÚ   zHfFileSystem.walkæ  sw   øè è € ð × Ò  °·
²
¸:Ñ0FÔ0FÐ ÑGÔG×QÒQÑSÔSˆØ•5‘7”7”< Ð6 tÐ6Ð6Ð6¨vÐ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r>   c                 ó°   •— |                       ||                     d¦  «        ¬¦  «                             ¦   «         } t          ¦   «         j        |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‹   )ry   r6   r=   rM   Úglob)r:   r[   rˆ   rT   s      €r<   rÜ   zHfFileSystem.globö  sS   ø€ ð × Ò  °·
²
¸:Ñ0FÔ0FÐ ÑGÔG×QÒQÑSÔSˆØ�u‰wŒwŒ|˜DÐ+Ð+ FÐ+Ð+Ð+r>   Úwithdirsc           	      óþ  •‡— |r  t          ¦   «         j        |f|||||dœ|¤ŽS |                      ||¬¦  «        }|                     ¦   «         }	  | j        |fd||j        dœ|¤ŽŠ|sd„ ‰D ¦   «         Šn) | j        |fd|j        i|¤Ž}	|	d         dk    r|	g‰z   n‰Šd	„ ‰D ¦   «         Šn1# t          $ r$  | j        |fd|i|¤Žd         d
k    r|i iŠni ŠY nw xY wt          ‰¦  «        }
|s|
S ˆfd„|
D ¦   «         S )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’   rÝ   r    r¡   r+   r‹   T)r‘   r¡   r+   c                 ó*   — g | ]}|d          dk    ¯|‘ŒS r²   rE   r©   s     r<   r—   z%HfFileSystem.find.<locals>.<listcomp>6  s&   € ÐBÐBÐB˜Q¨¨6¬°kÒ)AÐ)A�qÐ)AÐ)AÐ)Ar>   r+   r³   r´   c                 ó    — i | ]}|d          |“ŒS r¤   rE   r©   s     r<   ú
<dictcomp>z%HfFileSystem.find.<locals>.<dictcomp>;  s   € Ð-Ð-Ð- A�1�V”9˜aÐ-Ð-Ð-r>   r¾   c                 ó"   •— i | ]}|‰|         “ŒS rE   rE   )r–   r¥   r¬   s     €r<   rá   z%HfFileSystem.find.<locals>.<dictcomp>@  s   ø€ Ð6Ð6Ð6¨�D˜#˜dœ)Ð6Ð6Ð6r>   )	rM   Úfindry   r=   rª   r+   Úinfor   Úsorted)r:   r[   r’   rÝ   r    r¡   r+   rˆ   r   r¶   Únamesr¬   rT   s              @€r<   rã   zHfFileSystem.find  s§  øø€ ð@ ð 	Ø•5‘7”7”<ØðØ'°(À6ÐSZÐemðð Øqwðð ð ð ×)Ò)¨$¸Ð)ÑBÔBˆØ×&Ò&Ñ(Ô(ˆð	.Ø�$”- Ðq°¸gÐP]ÔPfÐqÐqÐjpÐqÐqˆCð ð UØBÐB #ÐBÑBÔB��ð &˜DœI dÐVÐV°]Ô5KÐVÈvÐVÐV�	Ø+4°VÔ+<ÀÒ+KÐ+K�y�k CÑ'Ð'ÐQT�Ø-Ð-¨Ð-Ñ-Ô-ˆCˆCøõ "ð 	ð 	ð 	àˆtŒy˜Ð;Ð;¨Ð;°FÐ;Ð;¸FÔCÀvÒMÐMØ˜R�j��à�øøð	øøøõ �s‘”ˆØð 	7ØˆLà6Ð6Ð6Ð6°Ð6Ñ6Ô6Ð6s   ÁB- Â-+CÃCÚpath1Úpath2c                 ó¬  — |                       ||¬¦  «        }|                       ||¬¦  «        }|j        |j        k    o|j        |j        k    }|r€d|› d|› �}| j                             |j        |j        |j        |                     d|¦  «        |                     dd¦  «        t          |j        |j        |j        ¬¦  «        g¬¦  «         n³|  	                    |d	|j        ¬¦  «        5 }	|	 
                    ¦   «         }
d
d
d
¦  «         n# 1 swxY w Y   d|› d|› �}| j                             |
|j        |j        | j        |j        |j        |                     d|¦  «        |                     d¦  «        ¬¦  «         |                      |                     ¦   «         ¬¦  «         |                      |                     ¦   «         ¬¦  «         d
S )aµ  
        Copy a file within or between repositories.

        <Tip warning={true}>

            Note: When possible, use `HfApi.upload_file()` for better performance.

        </Tip>

        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š   r�   N©Úpath_or_fileobjr,   r*   rK   r)   r+   rŒ   r�   rŽ   )ry   r)   r*   rP   rœ   r+   r6   r   r,   ÚopenÚreadÚupload_filerK   r€   r=   )r:   rç   rè   r+   rˆ   Úresolved_path1Úresolved_path2Ú	same_reporŒ   ÚfÚcontents              r<   Úcp_filezHfFileSystem.cp_fileB  s<  € ð& ×*Ò*¨5¸8Ð*ÑDÔDˆØ×*Ò*¨5¸8Ð*ÑDÔDˆð Ô$¨Ô(@Ò@ÐuÀ^ÔE[Ð_mÔ_uÒEuð 	ð ð 	Ø7 UÐ7Ð7°Ð7Ð7ˆNØŒI×#Ò#Ø&Ô.Ø(Ô2Ø'Ô0Ø%ŸzšzÐ*:¸NÑKÔKØ#)§:¢:Ð.BÀBÑ#GÔ#Gå'Ø)7Ô)DØ%3Ô%@Ø%3Ô%<ðñ ô ðð $ñ ô ð ð ð —’˜5 $°Ô1H�ÑIÔIð #ÈQØŸ&š&™(œ(�ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #à7 UÐ7Ð7°Ð7Ð7ˆNØŒI×!Ò!Ø 'Ø+Ô8Ø&Ô.Ø”jØ(Ô2Ø'Ô0Ø%ŸzšzÐ*:¸NÑKÔKØ#)§:¢:Ð.BÑ#CÔ#Cð "ñ 	ô 	ð 	ð 	×Ò >×#;Ò#;Ñ#=Ô#=ÐÑ>Ô>Ð>Ø×Ò >×#;Ò#;Ñ#=Ô#=ÐÑ>Ô>Ð>Ð>Ð>s   Ã.DÄDÄDc                 óF   —  | 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}  s=   € ð ˆtŒy˜ÐAÐAÐ!@ FÐ!@¨M¸4Ð!@Ð!@ÐAÐAˆØ�MÔ" 6Ô*Ð*r>   c                 óf  ‡‡— |                       ‰|¬¦  «        }|                     ¦   «         Š|                     dd¦  «        }|j        se‰ddddœŠ|rZ| j                             |j        |j        |j        ¬¦  «        d	         }i ‰¥dt          |j
        |j        |j        ¬
¦  «        dœ¥Š�n}dŠ|                      ‰¦  «        }|s|| j        vr|                      |¦  «         || j        v r3ˆfd„| j        |         D ¦   «         }	|	st!          ‰d¦  «         |	d         Š|s‰�|�r‰�r ‰d         €ø| j                             |j        |j        ||j        |j        ¬¦  «        }
|
st!          ‰d¦  «         |
d         }t%          |j        |j        |j        d|j        ¬¦  «                             ¦   «         }t)          |t*          ¦  «        r/|dz   |j        z   |j        d|j        |j        |j        |j        dœŠn|dz   |j        z   dd|j        |j        dœŠ|sˆfd„dD ¦   «         Š‰€J ‚‰S )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).

        <Tip warning={true}>

            Note: When possible, use `HfApi.get_paths_info()` or `HfApi.repo_info()`  for better performance.

        </Tip>

        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¹   c                 ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r¤   rE   r¦   s     €r<   r—   z%HfFileSystem.info.<locals>.<listcomp>Å  s'   ø€ ÐSÐSÐS˜aÀÀ6ÄÈdÒARÐAR˜ÐARÐARÐARr>   r¹   )r½   r+   r)   r2   r°   r4   r¾   r¿   rÄ   c                 ó"   •— i | ]}|‰|         “ŒS rE   rE   )r–   Úkr¬   s     €r<   rá   z%HfFileSystem.info.<locals>.<dictcomp>î  s   ø€ ÐGÐGÐG¨˜1˜c !œfÐGÐGÐGr>   )r¥   rÀ   r³   )ry   r=   r6   r,   rP   Úlist_repo_commitsr*   r)   r+   r"   Ú	commit_idrþ   Ú
created_atr~   r{   r­   rn   Úget_paths_infor(   r/   rp   r#   r[   rÀ   rÁ   rÂ   r¹   rÃ   rÅ   )r:   r[   r¡   r+   rˆ   r   r®   r¹   rØ   Úout1Ú
paths_infor¶   rÎ   r¬   s    `           @r<   rä   zHfFileSystem.info�  sæ  øø€ ð0 ×)Ò)¨$¸Ð)ÑBÔBˆØ×&Ò&Ñ(Ô(ˆØ—j’jØ˜5ñ
ô 
ˆð Ô)ð D	Hð ØØ#Ø#ð	ð ˆCð ð 
Ø"œi×9Ò9Ø!Ô)°]Ô5LÐWdÔWmð :ñ ô àô�ðØðà#Ý#1Ø'Ô1¸Ô9JÐQ\ÔQgð$ñ $ô $ðð ð �ùð ˆCØŸ,š, tÑ,Ô,ˆKØð % ;°d´mÐ#CÐ#Cà—’˜Ñ$Ô$Ð$Ø˜dœmÐ+Ð+àSÐSÐSÐS 4¤=°Ô#=ÐSÑSÔS�Øð 6Ý)¨$°Ñ5Ô5Ð5Ø˜1”g�Øð %H˜#˜+¨+™+¸#™+À#ÀmÔBTÐB\Ø!œY×5Ò5Ø!Ô)Ø!Ô.Ø&Ø*Ô3Ø+Ô5ð 6ñ ô �
ð "ð 6Ý)¨$°Ñ5Ô5Ð5Ø& qœM�	Ý4Ø!Ô+Ø!Ô)Ø!Ô*Ø!#Ø"/Ô"=ðñ ô ÷ ’)‘+”+ð õ ˜i­Ñ2Ô2ð à )¨C¡°)´.Ñ @Ø )¤Ø &Ø#,Ô#4Ø(œ}Ø'0Ô'<Ø$-Ô$6ðð �C�Cð !*¨C¡°)´.Ñ @Ø !Ø +Ø#,Ô#4Ø'0Ô'<ðð �Cð #ð HØGÐGÐGÐGÐ.FÐGÑGÔG�CØˆˆˆØˆ
r>   c                 óŠ   — 	 |                      dd¦  «        r|                      |¦  «          | j        |fi |¤Ž dS #  Y dS 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).

        <Tip warning={true}>

            Note: When possible, use `HfApi.file_exists()` for better performance.

        </Tip>

        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ò  s`   € ð&	Ø�zŠz˜) UÑ+Ô+ð ,Ø×%Ò% dÑ+Ô+Ð+àˆDŒI�dÐ%Ð%˜fÐ%Ð%Ð%Ø�4øð	Ø�5�5øøøs	   ‚9= ½Ac                 ód   — 	 |                       |¦  «        d         dk    S # t          $ r Y dS 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  sC   € ð	Ø—9’9˜T‘?”? 6Ô*¨kÒ9Ð9øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚! ¡
/®/c                 óR   — 	 |                       |¦  «        d         dk    S #  Y dS 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   s1   € ð	Ø—9’9˜T‘?”? 6Ô*¨fÒ4Ð4øð	Ø�5�5øøøs   ‚! ¡&c                 óâ   — |                       |¦  «        }t          |j        |j        |j        |j        | j        ¬¦  «        }|                      |¦  «        r|                     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+   rJ   z	/resolve/z/tree/r   )	ry   r   r*   r,   r)   r+   rJ   r•   Úreplace)r:   r[   r   Úurls       r<   r  zHfFileSystem.url2  sx   € ð ×)Ò)¨$Ñ/Ô/ˆÝØÔ!ØÔ&Ø#Ô-Ø"Ô+Ø”]ð
ñ 
ô 
ˆð �:Š:�dÑÔð 	8Ø—+’+˜k¨8°QÑ7Ô7ˆCØˆ
r>   c                 ó”  •— |                      d¦  «        }t          |                     ¦   «         ¦  «        dhz
  }t          |t          t
          f¦  «        rt          |¦  «        dk    r t          ¦   «         j        ||f||dœ|¤ŽS t          |¦  «        r|}n-|  
                    |¦  «        rt          j        |d¬¦  «         dS t          |t          t          f¦  «        r3t          j        t          j                             |¦  «        d¬¦  «         d}|€t#          |d¦  «        }d}|                     ¦   «         }	|                      ||¬	¦  «        }
|                      ||¬	¦  «        d
         }|                     |¦  «         	 t-          t/          |
j        |
j        |
j        |
j        | j        ¬¦  «        |||d| j                             ¦   «         t          |t
          ¦  «        r|j        nd¬¦  «         |                      |	¦  «         |r| !                    ¦   «          dS dS # |r| !                    ¦   «          w w xY w)a^  
        Copy single remote file to local.

        <Tip warning={true}>

            Note: When possible, use `HfApi.hf_hub_download()` for better performance.

        </Tip>

        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)   rJ   )r  Ú	temp_fileÚdisplayed_filenameÚexpected_sizeÚresume_sizeÚheadersÚ	_tqdm_bar)"r6   ÚsetÚkeysrp   r   r   r«   rM   Úget_filer   r•   rÉ   ÚmakedirsrC   r   r[   Údirnamerî   Útellry   rä   Úset_sizer    r   r*   r+   r,   r)   rJ   rP   Ú_build_hf_headersÚtqdmÚseekÚclose)r:   ÚrpathÚlpathr  r  rˆ   r+   Úunhandled_kwargsÚ
close_fileÚinitial_posÚresolve_remote_pathr  rT   s               €r<   r!  zHfFileSystem.get_fileI  s[  ø€ ð* —:’:˜jÑ)Ô)ˆÝ˜vŸ{š{™}œ}Ñ-Ô-°°Ñ<ÐÝ˜(¥\µ<Ð$@ÑAÔAð 	`ÅSÐIYÑEZÔEZÐ]^ÒE^ÐE^ð $•5‘7”7Ô# E¨5Ð_¸8ÈWÐ_Ð_ÐX^Ð_Ð_Ð_õ �eÑÔð 	ØˆGˆGØ�ZŠZ˜ÑÔð 	ÝŒK˜¨Ð-Ñ-Ô-Ð-Ø�4å�e�c¥4˜[Ñ)Ô)ð 	?ÝŒK�œŸš¨Ñ.Ô.¸Ð>Ñ>Ô>Ð>ð ˆ
Øˆ?Ý˜5 $Ñ'Ô'ˆGØˆJØ—l’l‘n”nˆð #×/Ò/°ÀÐ/ÑIÔIÐØŸ	š	 %°(˜	Ñ;Ô;¸FÔCˆØ×Ò˜-Ñ(Ô(Ð(ð	 ÝÝØ/Ô7Ø0Ô9Ø0Ô=Ø1Ô;Ø!œ]ðñ ô ð "Ø#(Ø+ØØœ	×3Ò3Ñ5Ô5Ý+5°hÅÑ+MÔ+MÐW˜(œ-˜-ÐSWðñ ô ð ð �LŠL˜Ñ%Ô%Ð%ð ð  Ø—’‘”���ð ð  øˆzð  Ø—’‘”��ð øøøs   ÆB	H. È.I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.©rc   ©r:   s    r<   ÚtransactionzHfFileSystem.transaction�  s   € õ "Ð"LÑMÔMÐMr>   c                 ó    — t          d¦  «        ‚)z@Begin write transaction for deferring files, non-context versionr1  r2  r3  s    r<   Ústart_transactionzHfFileSystem.start_transaction›  s   € õ "Ð"LÑMÔMÐMr>   ©N)r�   NN)FNN)TFN)FFNF)NFFFN)FN©r0   N),r?   r@   rA   rB   Úroot_markerÚprotocolr   rC   r   ÚboolrN   r   Ú	ExceptionrZ   r(   ry   r€   Úintr‰   r�   rŸ   r   r
   r	   r­   rª   r   rÚ   rÜ   rã   rö   r   rú   rä   r	  r•   r  r  r   r!  Úpropertyr4  r6  Ú__classcell__©rT   s   @r<   rG   rG   :   sƒ  ø€ € € € € ð&ð &ðP €KØ€Hð
 #'Ø(,ð	ð ð ð ˜3”-ðð �T˜3 �_Ô%ð	ð ð ð ð ð ð$TØðTØ'*ðTØ6>¸s´mðTà	ˆt�X˜iÔ(Ð(Ô	)ðTð Tð Tð Tð&]tð ]t ð ]t°¸´ð ]tÐIað ]tð ]tð ]tð ]tð~ð  X¨c¤]ð ¸dð ð ð ð ð> Ø"&Ø$(ðoð oàðoð ðoð ˜3”-ð	oð
 ˜S”Mðoð 
ðoð oð oð oð>ð >˜ð > x°¤}ð >È$ð >ð >ð >ð >ð   Ø"&Ø"&ð/>ð />àð/>ð ð/>ð ˜3”-ð	/>ð
 ˜3”-ð/>ð 
ð/>ð />ð />ð />ðd `dð);ð );Øð);Ø!%ð);Ø7;ð);ØOWÐX[Ì}ð);à	ˆe�C˜˜c 3˜hœÐ'Ô(Ô	)ð);ð );ð );ð );ð\  ØØ"&Ø!ðfð fàðfð ðfð ð	fð
 ˜3”-ðfð ðfð fð fð fðP7˜ð 7°(¸5ÀÀdÈ3ÄiÐQUÐVYÔQZÐAZÔ;[Ô2\ð 7ð 7ð 7ð 7ð 7ð 7ð ,˜ð ,¨4°¬9ð ,ð ,ð ,ð ,ð ,ð ,ð& #'ØØØØ"&ð:7ð :7àð:7ð ˜3”-ð:7ð ð	:7ð
 ð:7ð ð:7ð ˜3”-ð:7ð 
ˆt�CŒy˜$˜s D¨¨c¨¤NÐ2Ô3Ð3Ô	4ð:7ð :7ð :7ð :7ð :7ð :7ðx9?ð 9?˜Sð 9?¨ð 9?¸À¼ð 9?Ð[_ð 9?ð 9?ð 9?ð 9?ðv+˜Sð +¨xð +ð +ð +ð +ð cð c˜ð c tð c¸xÈ¼}ð cÐbfÐgjÐloÐgoÔbpð cð cð cð cðJð ð ð8ð ð ð$ð ð ð$˜ð  ð ð ð ð ð. /@Èð E ð E ð E ð E ð E ð E ð E ðN ðNð Nñ „XðNðNð Nð Nð Nð 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                 ó(  •— 	 |                      ||¬¦  «        | _        n># t          $ r1}d|                     dd¦  «        v rt          |› d�¦  «        |‚‚ d }~ww xY w t	          ¦   «         j        || j                             ¦   «         fi |¤Ž |  d S )Nr‹   Úwr‚   r2   úB.
Make sure the repository and revision exist before writing data.)ry   r   ÚFileNotFoundErrorr6   rM   rN   r=   )r:   rB  r[   r+   rˆ   rY   rT   s         €r<   rN   zHfFileSystemFile.__init__£  s¿   ø€ ð	Ø!#§¢°À Ñ!IÔ!IˆDÔÐøÝ ð 	ð 	ð 	Ø�f—j’j ¨Ñ,Ô,Ð,Ð,Ý'ØÐ]Ð]Ð]ñô àðð øøøøð	øøøð 	�‰ŒÔ˜˜TÔ/×9Ò9Ñ;Ô;ÐFÐF¸vÐFÐFÐFØÐÐÐs   ƒ   
Aª,AÁAc                 óh   •— t          | d¦  «        sd S t          ¦   «                              ¦   «         S ©Nr   ©ÚhasattrrM   Ú__del__©r:   rT   s    €r<   rK  zHfFileSystemFile.__del__¯  ó.   ø€ Ý�t˜_Ñ-Ô-ð 	àˆFÝ‰wŒw�ŠÑ Ô Ð r>   ÚstartÚendr0   c                 óL  — dd|› d|dz
  › �i| j         j                             ¦   «         ¥}t          | j        j        | j        j        | j        j        | j        j        | j         j	        ¬¦  «        }t          d||dt          j        ¬¦  «        }t          |¦  «         |j        S )	NÚrangezbytes=ú-r   r  ÚGET©iô  iö  i÷  iø  )r  Úretry_on_status_codesrV   )rB  rP   r&  r   r   r*   r+   r,   r)   rJ   r&   r   ÚHF_HUB_DOWNLOAD_TIMEOUTr%   rõ   )r:   rN  rO  r  r  Úrs         r<   Ú_fetch_rangezHfFileSystemFile._fetch_rangeµ  s½   € àÐ/˜eÐ/Ð/ c¨A¡gÐ/Ð/ð
àŒgŒl×,Ò,Ñ.Ô.ð
ˆõ ØÔ&Ô.ØÔ'Ô0ØÔ'Ô4ØÔ(Ô2Ø”WÔ%ð
ñ 
ô 
ˆõ ØØØØ"6ÝÔ5ð
ñ 
ô 
ˆõ 	˜AÑÔÐØŒyÐr>   c                 ó<   — t          j        dd¬¦  «        | _        d S )Nzhffs-F)ÚprefixÚdelete)ÚtempfileÚNamedTemporaryFiler  r3  s    r<   Ú_initiate_uploadz!HfFileSystemFile._initiate_uploadË  s   € Ý!Ô4¸GÈEÐRÑRÔRˆŒˆˆr>   FÚfinalc                 ó   — | j                              d¦  «         | j                              ¦   «         }| j                             |¦  «         |rþ| j                             ¦   «          | j        j                             | j        j	        | j
        j        | j
        j        | j        j        | j
        j        | j
        j        | j                             d¦  «        | j                             d¦  «        ¬¦  «         t%          j        | j        j	        ¦  «         | j                             | j
                             ¦   «         ¬¦  «         d S d S )Nr   rŒ   r�   rì   rŽ   )Úbufferr(  rï   r  Úwriter)  rB  rP   rð   r¥   r   r,   r*   rK   r)   r+   rˆ   r6   rÉ   Úremover€   r=   )r:   r_  Úblocks      r<   Ú_upload_chunkzHfFileSystemFile._upload_chunkÎ  s1  € ØŒ×Ò˜ÑÔÐØ”× Ò Ñ"Ô"ˆØŒ×Ò˜UÑ#Ô#Ð#Øð 	ØŒN× Ò Ñ"Ô"Ð"ØŒGŒL×$Ò$Ø $¤Ô 3Ø!Ô/Ô<ØÔ*Ô2Ø”g”mØÔ,Ô6ØÔ+Ô4Ø#œ{ŸšÐ/?Ñ@Ô@Ø#'¤;§?¢?Ð3GÑ#HÔ#Hð %ñ 	ô 	ð 	õ ŒI�d”nÔ)Ñ*Ô*Ð*ØŒG×$Ò$ØÔ'×1Ò1Ñ3Ô3ð %ñ ô ð ð ð ð	ð 	r>   rü   c                 ó\  •— | j         dk    r€|�|dk    rx| j        dk    rm| j                             | j        dd¬¦  «        5 }|                     ¦   «         }| xj        t          |¦  «        z  c_        |cddd¦  «         S # 1 swxY w Y   t          ¦   «                              |¦  «        S )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   )rƒ   )r‚   ÚlocrB  rî   r[   rï   r«   rM   )r:   Úlengthrô   r¬   rT   s       €r<   rï   zHfFileSystemFile.readã  sÚ   ø€ ð Œ9˜ÒÐ & .°F¸b²L°LÀdÄhÐRSÂmÀmØ”—’˜dœi¨¸!�Ñ<Ô<ð ÀØ—f’f‘h”h�Ø�”�C ™HœHÑ$�”Øðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ‰wŒw�|Š|˜FÑ#Ô#Ð#s   Á3BÂBÂ	Bc                 ó@   — | j                              | j        ¦  «        S r7  ©rB  r  r[   r3  s    r<   r  zHfFileSystemFile.urlñ  ó   € ØŒw�{Š{˜4œ9Ñ%Ô%Ð%r>   r7  r8  )F©rü   )r?   r@   rA   rG   rC   r   rN   rK  r=  ÚbytesrX  r^  r;  re  rï   r  r?  r@  s   @r<   r„   r„   ¢  s  ø€ € € € € ð
ð 
˜<ð 
¨sð 
¸hÀs¼mð 
ð 
ð 
ð 
ð 
ð 
ð!ð !ð !ð !ð !ð #ð ¨Cð °Eð ð ð ð ð,Sð Sð Sð 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‡   r�   Nr   ÚnonerB  r[   r‚   r+   rƒ   Ú
cache_typec                 ó  •— |dk    rt          d|› �¦  «        ‚|dk    rt          d|› �¦  «        ‚d|v rt          d|› d�¦  «        ‚	 |                     ||¬¦  «        | _        nB# t          $ r5}d|                     d	d
¦  «        v rt          |› d�¦  «        |‚Y d }~nd }~ww xY w| j                             ¦   «         d dœ| _         t          ¦   «         j        || j                             ¦   «         f|||dœ|¤Ž d | _	        |  d S )Nr   z:HfFileSystemStreamFile only supports block_size=0 but got ro  z?HfFileSystemStreamFile only supports cache_type='none' but got rD  z;HfFileSystemStreamFile only supports reading but got mode='ú'r‹   r‚   r2   rE  )r¥   rÀ   ©r‚   rƒ   rp  )
r_   ry   r   rF  r6   r=   ÚdetailsrM   rN   Úresponse)
r:   rB  r[   r‚   r+   rƒ   rp  rˆ   rY   rT   s
            €r<   rN   zHfFileSystemStreamFile.__init__ö  su  ø€ ð ˜Š?ˆ?ÝÐfÐZdÐfÐfÑgÔgÐgØ˜ÒÐÝÐkÐ_iÐkÐkÑlÔlÐlØ�$ˆ;ˆ;ÝÐbÐ[_ÐbÐbÐbÑcÔcÐcð	Ø!#§¢°À Ñ!IÔ!IˆDÔÐøÝ ð 	ð 	ð 	Ø�f—j’j ¨Ñ,Ô,Ð,Ð,Ý'ØÐ]Ð]Ð]ñô àðð -Ð,Ð,Ð,Ð,øøøøð	øøøð !%Ô 2× <Ò <Ñ >Ô >ÈÐMÐMˆŒØ�‰ŒÔØ�Ô"×,Ò,Ñ.Ô.ð	
Ø59ÀjÐ]gð	
ð 	
Økqð	
ð 	
ð 	
ð -1ˆŒØÐÐÐs   Á
A' Á'
B&Á1+B!Â!B&rg  Úwhencec                 ób   — |dk    r|dk    rd S || j         k    r|dk    rd S t          d¦  «        ‚)Nr   r   zCannot seek streaming HF file)rg  r_   )r:   rg  rv  s      r<   r(  zHfFileSystemStreamFile.seek  s?   € Ø�!Š8ˆ8˜ !š˜ØˆFØ�$”(Š?ˆ?˜v¨š{˜{ØˆFÝÐ8Ñ9Ô9Ð9r>   rü   rh  c           	      óâ  — |dk    r|fnd}| j         €št          | j        j        | j        j        | j        j        | j        j        | j        j        ¬¦  «        }t          d|| j        j
                             ¦   «         ddt          j        ¬¦  «        | _         t          | j         ¦  «         	  | j         j        j        |Ž }�n# t"          $ �r  | j                              ¦   «          t          | j        j        | j        j        | j        j        | j        j        | j        j        ¬¦  «        }t          d|dd	| j        z  i| j        j
                             ¦   «         ¥ddt          j        ¬¦  «        | _         t          | j         ¦  «         	  | j         j        j        |Ž }n(# t"          $ r | j                              ¦   «          ‚ w xY wY nw xY w| xj        t)          |¦  «        z  c_        |S )
Nr   rE   r  rS  rT  T)r  rU  ÚstreamrV   ÚRangez	bytes=%d-)ru  r   r   r*   r+   r,   r)   rB  rJ   r&   rP   r&  r   rV  r%   Úrawrï   r<  r)  rg  r«   )r:   rh  Ú	read_argsr  r¬   s        r<   rï   zHfFileSystemStreamFile.read  s	  € Ø!'¨1¢ �V�I�I°"ˆ	ØŒ=Ð ÝØÔ*Ô2ØÔ+Ô4ØÔ+Ô8ØÔ,Ô6ØœÔ)ðñ ô ˆCõ )ØØØœœ×6Ò6Ñ8Ô8Ø&:ØÝ!Ô9ðñ ô ˆDŒMõ   ¤Ñ.Ô.Ð.ð	Ø(�$”-Ô#Ô(¨)Ð4ˆC‰CøÝð 	ñ 	ð 	ØŒM×ÒÑ!Ô!Ð!õ ØÔ*Ô2ØÔ+Ô4ØÔ+Ô8ØÔ,Ô6ØœÔ)ðñ ô ˆCõ )ØØØ  +°´Ñ"8Ð]¸D¼G¼L×<ZÒ<ZÑ<\Ô<\Ð]Ø&:ØÝ!Ô9ðñ ô ˆDŒMõ   ¤Ñ.Ô.Ð.ðØ,�d”mÔ'Ô,¨iÐ8��øÝð ð ð Ø”×#Ò#Ñ%Ô%Ð%Øðøøøð �ð+	øøøð2 	ˆŒ•C˜‘H”HÑˆŒØˆ
s+   Â.C ÃC
GÆF$Æ#GÆ$%G	Ç	GÇGr0   c                 ó@   — | j                              | j        ¦  «        S r7  rj  r3  s    r<   r  zHfFileSystemStreamFile.urlM  rk  r>   c                 óh   •— t          | d¦  «        sd S t          ¦   «                              ¦   «         S rH  rI  rL  s    €r<   rK  zHfFileSystemStreamFile.__del__P  rM  r>   c                 óZ   — t           | j        | j        | j        | j        | j        j        ffS r7  )ÚreopenrB  r[   r‚   Ú	blocksizeÚcacher¥   r3  s    r<   Ú
__reduce__z!HfFileSystemStreamFile.__reduce__V  s$   € Ý˜œ ¤¨D¬I°t´~ÀtÄzÄÐWÐWÐWr>   )r�   Nr   ro  )r   rl  )r?   r@   rA   rG   rC   r   r=  rN   r(  rï   r  rK  rƒ  r?  r@  s   @r<   r‡   r‡   õ  s   ø€ € € € € ð
 Ø"&ØØ ðð àðð ðð ð	ð
 ˜3”-ðð ðð ðð ð ð ð ð ð>:ð :˜ð : Sð :ð :ð :ð :ð/ð /˜3ð /ð /ð /ð /ðb&�Sð &ð &ð &ð &ð!ð !ð !ð !ð !ðXð Xð Xð Xð Xð Xð Xr>   r‡   r+   r0   c                 óX   — t                                | ¦  «        r| nt          | ¦  «        S r7  )ri   rq   Ú
safe_quoter‹   s    r<   r9   r9   Z  s(   € Ý2×8Ò8¸ÑBÔBÐ\ˆ8ˆ8Í
ÐS[ÑH\ÔH\Ð\r>   Úsc                 ó$   — t          | d¬¦  «        S )Nr2   )Úsafe)r   )r†  s    r<   r…  r…  ^  s   € Ý�˜ÐÑÔÐr>   r[   rs   c                 óÆ   — | }t          |t          ¦  «        r| › d�}n5t          |t          ¦  «        r| › d�}nt          |t          ¦  «        r| › d�}t	          |¦  «        |‚)Nz (repository not found)z (revision not found)z (invalid repository id))rp   r   r   r$   rF  )r[   rs   Úmsgs      r<   rn   rn   b  s~   € Ø
€CÝ�#Õ.Ñ/Ô/ð 0ØÐ.Ð.Ð.ˆˆÝ	�CÕ.Ñ	/Ô	/ð 0ØÐ,Ð,Ð,ˆˆÝ	�CÕ*Ñ	+Ô	+ð 0ØÐ/Ð/Ð/ˆÝ
˜CÑ
 Ô
  cÐ)r>   rB  r‚   rƒ   rp  c                 ó4   — |                       ||||¬¦  «        S )Nrs  )rî   )rB  r[   r‚   rƒ   rp  s        r<   r€  r€  m  s   € Ø�7Š7�4˜d¨zÀjˆ7ÑQÔQÐQr>   )GrÉ   Úrer\  Ú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ÚVERBOSEri   r(   ÚAbstractFileSystemrG   ÚspecÚAbstractBufferedFiler„   r‡   rC   r9   r…  r<  rn   r=  r€  rE   r>   r<   ú<module>r¡     s”  ðØ 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gð )˜bœjðð
 „Jñô Ð ð ðBð Bð Bð Bð Bñ Bô Bñ „ðBð*eNð eNð eNð eNð eN�6Ô,ñ eNô eNð eNðPP&ð P&ð P&ð P&ð P&�v”{Ô7ñ P&ô P&ð P&ðfbXð bXð bXð bXð bX˜Vœ[Ô=ñ bXô bXð bXðJ]˜Cð ] Cð ]ð ]ð ]ð ]ð�#ð ˜#ð ð ð ð ð* ð *¨(°9Ô*=ð *À(ð *ð *ð *ð *ðRˆ|ð R 3ð R¨cð R¸sð RÐPSð Rð Rð Rð Rð Rð Rr>   