ó
    pyüijñ  ã            
       ó2  • % S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJr  S S	KJrJr  S S
KJrJrJr  S SKJrJr  S SKrS SKrS SKJrJ r J!r!  S SK"J#r#  S SK$J%r%  SSK&J'r'  SSK(J)r)J*r*  SSK+J,r,J-r-J.r.J/r/J0r0  SSK1J2r2J3r3  SSK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  SSK<J=r=J>r>J?r?J@r@  SSKAJBrB  \ " S S5      5       rC\ " S S\C5      5       rD\ " S S\C5      5       rE\F" \RŽ                  5      rH\\IS'    " S S\H5      rJ " S  S!\RŽ                  \JS"9rK " S# S$\R˜                  Rš                  5      rN " S% S&\R˜                  Rš                  5      rOS'\PS(\P4S) jrQS*\PS(\P4S+ jrRS,\PS-\SS-  S(\4S. jrTS/\KS,\PS0\PS1\US2\P4
S3 jrVS4 rW\K" 5       rXg)5é    N)Údeque)ÚIterableÚIterator)Ú	ExitStack)Údeepcopy)Ú	dataclassÚfield)Údatetime)Úchain)ÚPathÚPurePosixPath)ÚAnyÚNoReturnÚUnion)ÚquoteÚunquote)Ú_DEFAULT_CALLBACKÚNoOpCallbackÚTqdmCallback)Úapply_config)Ú
isfilelikeé   )Ú	constants)ÚCommitOperationCopyÚCommitOperationDelete)ÚBucketNotFoundErrorÚEntryNotFoundErrorÚHfHubHTTPErrorÚRepositoryNotFoundErrorÚRevisionNotFoundError)Ú
hf_hub_urlÚhttp_get)ÚSPECIAL_REFS_REVISION_REGEXÚ
BucketFileÚBucketFolderÚHfApiÚLastCommitInfoÚRepoFileÚ
RepoFolder)ÚHFValidationErrorÚhf_raise_for_statusÚhttp_backoffÚhttp_stream_backoff)Úmd5c                   ó<   • \ rS rSr% Sr\\S'   \\S'   S\4S jrSrg)	ÚHfFileSystemResolvedPathé$   z_Top level Data structure containing information about a resolved Hugging Face file system path.ÚrootÚpathÚreturnc                 óV   • U R                    SU R                   3R                  S5      $ )NÚ/)r2   r3   Úrstrip©Úselfs    Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/huggingface_hub/hf_file_system.pyÚ	unresolveÚ"HfFileSystemResolvedPath.unresolve+   s&   € Ø—)‘)�˜A˜dŸi™i˜[Ð)×0Ñ0°Ó5Ð5ó    © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__r;   Ú__static_attributes__r>   r=   r:   r0   r0   $   s   ‡ áià
ƒIØ
ƒIð6˜3÷ 6r=   r0   c                   ó’   • \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   \" SS9r\\S	'   \" SS9r	\\S
'   \" SSS9r
\S-  \S'   S rSrg)Ú"HfFileSystemResolvedRepositoryPathé/   zLData structure containing information about a resolved path in a repository.Ú	repo_typeÚrepo_idÚrevisionÚpath_in_repoF©Úinitr2   r3   N)ÚdefaultÚreprÚ_raw_revisionc                 ól  • [         R                  R                  U R                  S5      U R                  -   nU R
                  (       a  U SU R
                   3U l        ODU R                  [         R                  :w  a   U S[        U R                  5       3U l        OXl        U R                  U l        g )NÚ Ú@)r   ÚREPO_TYPES_URL_PREFIXESÚgetrJ   rK   rR   r2   rL   ÚDEFAULT_REVISIONÚsafe_revisionrM   r3   )r9   Ú	repo_paths     r:   Ú__post_init__Ú0HfFileSystemResolvedRepositoryPath.__post_init__=   sŒ   € Ü×5Ñ5×9Ñ9¸$¿.¹.È"ÓMÐPT×P\ÑP\Ñ\ˆ	Ø××Ø$˜+ Q t×'9Ñ'9Ð&:Ð;ˆD�IØ�]‰]œi×8Ñ8Ó8Ø$˜+ Q¤}°T·]±]Ó'CÐ&DÐEˆD�Ià!ŒIØ×%Ñ%ˆ�	r=   )r3   r2   )r?   r@   rA   rB   rC   rD   rE   r	   r2   r3   rR   r[   rF   r>   r=   r:   rH   rH   /   sT   ‡ áVàƒNØƒLØƒMØÓÙ˜5Ñ!€Dˆ#Ó!Ù˜5Ñ!€Dˆ#Ó!ñ !&¨d¸Ñ ?€M�3˜‘:Ó?õ&r=   rH   c                   ó@   • \ rS rSr% Sr\\S'   \" SS9r\\S'   S r	Sr
g	)
ÚHfFileSystemResolvedBucketPathéH   zHData structure containing information about a resolved path in a bucket.Ú	bucket_idFrN   r2   c                 ó,   • SU R                   -   U l        g )Nzbuckets/)r`   r2   r8   s    r:   r[   Ú,HfFileSystemResolvedBucketPath.__post_init__O   s   € Ø §¡Ñ/ˆ�	r=   )r2   N)r?   r@   rA   rB   rC   rD   rE   r	   r2   r[   rF   r>   r=   r:   r^   r^   H   s   ‡ áRàƒNÙ˜5Ñ!€Dˆ#Ó!õ0r=   r^   Ú_cached_basec                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )Ú_CachedéW   aÆ  
Metaclass for caching HfFileSystem instances according to the args.

This creates an additional reference to the filesystem, which prevents the
filesystem from being garbage collected when all *user* references go away.
A call to the :meth:`AbstractFileSystem.clear_instance_cache` must *also*
be made for a filesystem instance to be garbage collected.

This is a slightly modified version of `fsspec.spec._Cached` to improve it.
In particular in `_tokenize` the pid isn't taken into account for the
`fs_token` used to identify cached instances. The `fs_token` logic is also
robust to defaults values and the order of the args. Finally new instances
reuse the states from sister instances in the main thread.
c                 ó4   >• [         TU ]  " U0 UD6  0 U l        g ©N)ÚsuperÚ__init__Ú_cache)ÚclsÚargsÚkwargsÚ	__class__s      €r:   rj   Ú_Cached.__init__g   s   ø€ ä‰Ò˜$Ð) &Ò)ð ˆ�
r=   c                 óö  • [        X5      nUR                  SS5      nU R                  " U [        R                  " 5       /UQ70 UD6nU R                  " U [        R
                  " 5       R                  /UQ70 UD6nU(       d5  U R                  (       a$  X@R                  ;   a  X@l	        U R                  U   $ [        R                  " U /UQ70 UD6nU(       db  U R                  (       aQ  XPR                  ;   aB  U R                  U   R                  5       nUR                  5        H  u  p‰[        XhU	5        M     XFl        Xl        X&l        U R                  (       a  U(       d  X@l	        X`R                  U'   U$ )NÚskip_instance_cacheF)r   ÚpopÚ	_tokenizeÚ	threadingÚ	get_identÚmain_threadÚidentÚcachablerk   Ú_latestÚtypeÚ__call__Ú_get_instance_stateÚitemsÚsetattrÚ
_fs_token_Ústorage_argsÚstorage_options)
rl   rm   rn   ÚskipÚfs_tokenÚfs_token_main_threadÚobjÚinstance_stateÚattrÚstate_values
             r:   r|   Ú_Cached.__call__o   s*  € ô ˜cÓ*ˆØ�z‰zÐ/°Ó7ˆØ—=’= ¤i×&9Ò&9Ó&;ÐM¸dÒMÀfÑMˆØ"Ÿ}š}¨S´)×2GÒ2GÓ2I×2OÑ2OÐaÐRVÒaÐZ`ÑaÐÞ˜ŸŸ¨·Z±ZÓ)?à"ŒKØ—:‘:˜hÑ'Ð'ô —-’- Ð5 dÒ5¨fÑ5ˆCÞ˜CŸLŸLÐ-AÇZÁZÓ-Oà!$§¡Ð,@Ñ!A×!UÑ!UÓ!W�Ø)7×)=Ñ)=Ö)?Ñ%�DÜ˜C {Ö3ñ *@à%ŒNØ#ÔØ"(ÔØ�|�|¦DØ&”Ø'*—
‘
˜8Ñ$ØˆJr=   r>   )	r?   r@   rA   rB   rC   rj   r|   rF   Ú__classcell__©ro   s   @r:   re   re   W   s   ø† ñõ÷ð r=   re   c                   óà  ^ • \ rS rSrSrSrSrSSSSS.S\S-  S\\-  S-  S	\	S-  S
\S-  4U 4S jjjr
\S\	S\4S j5       rS\S\S\S-  S\\\S-  4   4S jrS\S\\\S-  4   4S jr S8S\S\S-  S\\-  4S jjrS8S\S-  SS4S jjr   S9S\S\S	\	S-  S\S-  S\S   4
S jjrS8S\S\S-  SS4S jjr   S:S\S\S\	S-  S\S-  SS4
S jjr S;S\S\S \S\S-  S\\\\\4   -     4
S! jjr     S<S\S\S \S\S-  S
\S-  S\	S-  4S" jjrS\S#\S\S\\\ -     4S$ jr!S\S\"\\\\   \\   4      4U 4S% jjr#S8S\S\	S-  S\\   4U 4S& jjjr$     S=S\S\	S-  S'\S\S \S\S-  S\\   \\\\\4   4   -  4S( jjr%S8S)\S*\S\S-  SS4S+ jjr&S\S\'4S, jr(S>S\S \S\S-  S\\\4   4S- jjr)S. r*S/ r+S0 r,S\S\4S1 jr-\.S4S?U 4S2 jjjr/\0S3 5       r1S4 r2S5 r3S6 r4S7r5U =r6$ )@ÚHfFileSysteméŒ   a®	  
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.

The file system supports paths for the `hf://` protocol, which follows those URL schemes:

* Models, Datasets and Spaces repositories:

    ```
    hf://<repo-id>[@<revision>]/<path/in/repo>
    hf://datasets/<repo-id>[@<revision>]/<path/in/repo>
    hf://spaces/<repo-id>[@<revision>]/<path/in/repo>
    ```

* Buckets (generic storage):

    ```
    hf://buckets/<bucket-id>/<path/in/bucket>
    ```

Note: when using the [`HfFileSystem`] directly, passing the `hf://` protocol prefix is optional in paths.

Args:
    endpoint (`str`, *optional*):
            Endpoint of the Hub. Defaults to <https://huggingface.co>.
    token (`bool` or `str`, *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`.
    block_size (`int`, *optional*):
        Block size for reading and writing files.
    expand_info (`bool`, *optional*):
        Whether to expand the information of the files.
    **storage_options (`dict`, *optional*):
        Additional options for the filesystem. See [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.__init__).

Usage:

```python
>>> from huggingface_hub import hffs

>>> # List files
>>> hffs.glob("my-username/my-model/*.bin")
['my-username/my-model/pytorch_model.bin']
>>> hffs.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 hffs.open("my-username/my-model/pytorch_model.bin") as f:
...     data = f.read()
>>> with hffs.open("my-username/my-model/pytorch_model.bin", "wb") as f:
...     f.write(data)
```

Specify a token for authentication:
```python
>>> from huggingface_hub import HfFileSystem
>>> hffs = HfFileSystem(token=token)
```
rT   ÚhfN)ÚendpointÚtokenÚ
block_sizeÚexpand_infor‘   r’   r“   r”   c                óÌ   >• [         TU ]  " U0 UD6  U=(       d    [        R                  U l        X l        [        XS9U l        X0l        X@l	        0 U l
        0 U l        0 U l        g )N)r‘   r’   )ri   rj   r   ÚENDPOINTr‘   r’   r&   Ú_apir“   r”   Ú_repo_and_revision_exists_cacheÚ_bucket_exists_cacheÚdircache)r9   r‘   r’   r“   r”   rm   r‚   ro   s          €r:   rj   ÚHfFileSystem.__init__Ò   sb   ø€ ô 	‰Ò˜$Ð2 /Ò2Ø ×6¤I×$6Ñ$6ˆŒØŒ
Ü 8Ñ9ˆŒ	Ø$ŒØ&Ôð rtˆÔ,àNPˆÔ!ð :<ˆ�r=   Úthreading_identr4   c                 ó0  • UR                  S5      =(       d    [        R                  US'   UR                  S5      US'   [        U5       Vs0 s H  oDX4   _M	     nnXX#4n[	        [        U5      R                  5       5      nUR                  5       $ s  snf )zDeterministic token for cachingr‘   r’   )rW   r   r–   Úsortedr.   rD   ÚencodeÚ	hexdigest)rl   rœ   rm   rn   ÚkeyÚtokenize_argsÚhs          r:   rt   ÚHfFileSystem._tokenizeë   s„   € ð $ŸZ™Z¨
Ó3×I´y×7IÑ7IˆˆzÑØ Ÿ*™* WÓ-ˆˆw‰Ü.4°V¬nÓ=ªn s�v‘{Ò"©nˆÐ=à¨tÐ<ˆÜ”�MÓ"×)Ñ)Ó+Ó,ˆØ�{‰{‹}Ðùò	 >s   ÁBrJ   rK   rL   c                 óÒ  • XU4U R                   ;  aL   U R                  R                  X#U[        R                  S9  SU R                   XU4'   SU R                   XS 4'   U R                   XU4   $ ! [
        [        4 a0  nSU4U R                   XU4'   SU4U R                   XS 4'    S nANLS nAf[         a.  nSU4U R                   XU4'   SU R                   XS 4'    S nAN‚S nAff = f)N)rL   rJ   Útimeout©TNF)r˜   r—   Ú	repo_infor   ÚHF_HUB_ETAG_TIMEOUTr   r*   r    )r9   rJ   rK   rL   Úes        r:   Ú_repo_and_revision_existÚ%HfFileSystem._repo_and_revision_exist÷   s  € ð  Ð)°×1UÑ1UÓUð^Ø—	‘	×#Ñ#Ø¸)Ì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#   ”)A0 Á0C&Â &B+Â+C&Â8$C!Ã!C&r`   c                 óä   • XR                   ;  a+   U R                  R                  U5        SU R                   U'   U R                   U   $ ! [         a  nSU4U R                   U'    S nAN/S nAff = f)Nr§   F)r™   r—   Úbucket_infor   )r9   r`   rª   s      r:   Ú_bucket_existsÚHfFileSystem._bucket_exists
  sr   € Ø×5Ñ5Ó5ðBØ—	‘	×%Ñ% iÔ0ð 8B�×)Ñ)¨)Ñ4Ø×(Ñ(¨Ñ3Ð3øô	 'ó @Ø7<¸a°x�×)Ñ)¨)Ö4ûð@ús   ‘A
 Á

A/ÁA*Á*A/r3   c                 ó’  • S[         S-  S[         S-  S[         S-  4S jnU R                  U5      nU(       d  [        S5      eUR                  S5      S   S	:X  at  SR	                  UR                  S5      S
S 5      nSR	                  UR                  S5      SS 5      nU R                  U5      u  pVU(       d  [        X5        [        XAS9$ UR                  S5      S   S-   [        R                  R                  5       ;   a9  SU;  a  [        S5      eUR                  SS
5      u  pq[        R                  U   nO[        R                  nUR                  S5      S:”  Gaé  SSR	                  UR                  S5      SS 5      ;   aÑ  UR                  SS
5      u  p‰SU	;   a{  [        R                  " U	5      n
U
bM  USU
R!                  5       4;   a7  [        R"                  " SU	5      R%                  S5      nU
R!                  5       n	OU	R                  SS
5      u  p›OSnU" ['        U	5      U5      nU R)                  XxU5      u  pÆU(       d  [        X5        GOKSn	SR	                  UR                  S5      SS 5      nSR	                  UR                  S5      SS 5      nUR                  S5      S   nSR	                  UR                  S5      S
S 5      nUnUnU R)                  XxU5      u  pÆU(       dR  [+        U[,        [.        45      (       a,  UnUnU R)                  XxU5      u  nnU(       d  [        X5        Of[        X5        OZUnSnSU;   a'  UR                  SS
5      u  p‰U" ['        U	5      U5      nOSn	U R)                  XxU5      u  nnU(       d  [        S5      eUb  UO[        R0                  n[3        XxX+U	S9$ )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_pathNrL   r4   c                 óH   • Ub  U b  X:w  a  [        SU  SU S35      eU$ U nU$ )NzRevision specified in path ("z ") and in `revision` argument ("z") are not the same.)Ú
ValueError)r²   rL   s     r:   Ú%_align_revision_in_path_with_revisionÚHHfFileSystem.resolve_path.<locals>._align_revision_in_path_with_revision*  sQ   € ØÑ#Ø#Ñ/Ð4DÓ4PÜ$Ø7Ð8HÐ7IÐIiÐjrÐisð t-ð -óð ð ˆOð ,�ØˆOr=   z<Access to buckets and repositories lists is not implemented.r6   r   Úbucketsr   é   )r`   r3   z0Access to repositories lists is not implemented.rU   é   rT   )rR   )rD   Ú_strip_protocolÚNotImplementedErrorÚsplitÚjoinr¯   Ú_raise_file_not_foundr^   r   rV   ÚvaluesÚREPO_TYPES_MAPPINGÚREPO_TYPE_MODELÚcountr#   ÚsearchÚgroupÚsubÚlstripr   r«   Ú
isinstancer   r*   rX   rH   )r9   r3   rL   rµ   r`   Úbucket_existsÚerrrJ   rK   r²   ÚmatchrM   Úrepo_and_revision_existÚrepo_id_with_namespaceÚpath_in_repo_with_namespaceÚrepo_id_without_namespaceÚpath_in_repo_without_namespaceÚ_s                     r:   Úresolve_pathÚHfFileSystem.resolve_path  s•  € ð,		ÄCÈ$ÁJð 		ÔZ]Ð`dÑZdð 		ÔilÐosÑisô 		ð ×#Ñ# DÓ)ˆÞä%Ð&dÓeÐeØ�Z‰Z˜‹_˜QÑ 9Ó,ØŸ™ §¡¨C£°°1Ð!5Ó6ˆIØ—8‘8˜DŸJ™J s›O¨A¨BÐ/Ó0ˆDØ!%×!4Ñ!4°YÓ!?ÑˆMÞ Ü% dÔ0Ü1¸IÑQÐQØ�Z‰Z˜‹_˜QÑ #Ñ%¬×)JÑ)J×)QÑ)QÓ)SÓSØ˜$‹ä)Ð*\Ó]Ð]Ø"Ÿj™j¨¨aÓ0‰OˆIÜ!×4Ñ4°YÑ?‰Iä!×1Ñ1ˆIØ�:‰:�c‹?˜QÔØ�c—h‘h˜tŸz™z¨#›¨r°Ð2Ó3Ó3Ø,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Ð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ÐaiÓ/jÑ,Ð'Þ.Ü! #Ô(?ÔARÐ'S×TÑTØ";˜Ø'E˜Ø59×5RÑ5RÐS\ÐgoÓ5pÑ2Ð/°Þ6Ü1°$Ô<øä-¨dÔ8øàˆGØˆLØ�d‹{Ø,0¯J©J°s¸AÓ,>Ñ)�Ù@ÄÐIYÓAZÐ\dÓe‘à#'Ð Ø)-×)FÑ)FÀyÐ[cÓ)dÑ&Ð# QÞ*Ü)Ð*\Ó]Ð]à'Ñ3‘8¼×9SÑ9SˆÜ1Ø ÐFVñ
ð 	
r=   c                 ó´  • U(       d5  U R                   R                  5         U R                  R                  5         gU R                  U5      nUR	                  5       nU(       a6  U R                   R                  US5        U R                  U5      nU(       a  M6  UR                  (       d­  [        U[        5      (       aq  U R                  R                  UR                  UR                  S4S5        U R                  R                  UR                  UR                  UR                  4S5        gU R                  R                  UR                  S5        gg)a3  
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)rš   Úclearr˜   rÑ   r;   rs   Ú_parentr3   rÇ   rH   rJ   rK   rL   r™   r`   )r9   r3   Úresolved_paths      r:   Úinvalidate_cacheÚHfFileSystem.invalidate_cache|  s  € ö Ø�M‰M×ÑÔ!Ø×0Ñ0×6Ñ6Õ8à ×-Ñ-¨dÓ3ˆMØ ×*Ñ*Ó,ˆDÞØ—‘×!Ñ! $¨Ô-Ø—|‘| DÓ)�÷ �$ð
 !×%×%Ü˜mÔ-O×PÑPØ×8Ñ8×<Ñ<Ø&×0Ñ0°-×2GÑ2GÈÐNÐPTôð ×8Ñ8×<Ñ<Ø&×0Ñ0°-×2GÑ2GÈ×I_ÑI_Ð`Ðbfõð ×-Ñ-×1Ñ1°-×2IÑ2IÈ4ÕPð &r=   Úmode)ÚHfFileSystemFileÚHfFileSystemStreamFilec                 ó˜   • Ub  UOU R                   nUb  X5S'   SU;   a  [        S5      eUS:X  a  [        X4X$S.UD6$ [        X4X$S.UD6$ )Nr“   Úaz/Appending to remote files is not yet supported.r   )rÙ   rL   )r“   r»   rÛ   rÚ   )r9   r3   rÙ   r“   rL   rn   s         r:   Ú_openÚHfFileSystem._open�  sh   € ð $.Ñ#9‘Z¸t¿¹ˆ
ØÑ!Ø#-�<Ñ Ø�$‹;Ü%Ð&WÓXÐXØ˜‹?Ü)¨$Ð]¸4Ñ]ÐV\Ñ]Ð]ä# DÐW°TÑWÐPVÑWÐWr=   c                 óÄ  • U R                  XS9n[        U[        5      (       a0  U R                  R	                  UR
                  UR                  /S9  OoU R                  R                  UR                  UR                  U R                  UR                  UR                  UR                  S5      UR                  S5      S9  U R                  UR                  5       S9  g )N©rL   ©ÚdeleteÚcommit_messageÚcommit_description)rM   rK   r’   rJ   rL   rä   rå   ©r3   )rÑ   rÇ   r^   r—   Úbatch_bucket_filesr`   r3   Údelete_filerM   rK   r’   rJ   rL   rW   r×   r;   )r9   r3   rL   rn   rÖ   s        r:   Ú_rmÚHfFileSystem._rm¯  sÁ   € Ø×)Ñ)¨$Ð)ÐBˆÜ�mÔ%C×DÑDØ�I‰I×(Ñ(¨×)@Ñ)@È-×J\ÑJ\ÐI]Ð(Ò^à�I‰I×!Ñ!Ø*×7Ñ7Ø%×-Ñ-Ø—j‘jØ'×1Ñ1Ø&×/Ñ/Ø%Ÿz™zÐ*:Ó;Ø#)§:¡:Ð.BÓ#Cð "ñ ð 	×Ñ =×#:Ñ#:Ó#<ÐÒ=r=   Ú	recursiveÚmaxdepthc                 óT  • U R                  XS9nU R                  XX4S9n[        U[        5      (       ag  U Vs/ s H5  oR	                  U5      (       a  M  U R                  U5      R
                  PM7     nnU R                  R                  UR                  US9  OáU Vs/ s H5  oR	                  U5      (       a  M  U R                  U5      R
                  PM7     n	nU	 V
s/ s H  n
[        U
S9PM     nn
SW S3nXÂ(       a  SOS-  nXÃb  S
U S3OS-  nU R                  R                  UR                  UR                  U R                  UUR                  UR                  SU5      UR                  S5      S9  U R!                  UR#                  5       S9  g	s  snf s  snf s  sn
f )ad  
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ì   rL   râ   )rM   zDelete Ú zrecursively rT   Nzup to depth rä   rå   )rK   rJ   r’   Ú
operationsrL   rä   rå   ræ   )rÑ   Úexpand_pathrÇ   r^   Úisdirr3   r—   rç   r`   r   Úcreate_commitrK   rJ   r’   rL   rW   r×   r;   )r9   r3   rë   rì   rL   rn   rÖ   Úpathsrã   Úpaths_in_reporM   rï   rä   s                r:   ÚrmÚHfFileSystem.rm¿  s‘  € ð6 ×)Ñ)¨$Ð)ÐBˆØ× Ñ  ÀXÐ ÐaˆÜ�mÔ%C×DÑDÙ?DÓ]ºu°tÏJÉJÐW[×L\Ó2�d×'Ñ'¨Ó-×2Ô2¹uˆFÐ]Ø�I‰I×(Ñ(¨×)@Ñ)@ÈÐ(ÒPáFKÓdÂe¸d×S]ÑS]Ð^b×ScÓ9˜T×.Ñ.¨tÓ4×9Ô9ÁeˆMÐdÙ_lÓmÒ_lÈ|Ô/¸\ÔJÑ_lˆJÐmØ& t f¨AÐ.ˆNØµ	™n¸rÑAˆNØÑ<P ¨X¨J°aÑ8ÐVXÑXˆNà�I‰I×#Ñ#Ø%×-Ñ-Ø'×1Ñ1Ø—j‘jØ%Ø&×/Ñ/Ø%Ÿz™zÐ*:¸NÓKØ#)§:¡:Ð.BÓ#Cð $ñ ð 	×Ñ =×#:Ñ#:Ó#<ÐÒ=ùò% ^ùò eùÚms   ¹FÁFÂ F Â=F Ã"F%ÚdetailÚrefreshc                 óö  • U R                  XS9nUR                  5       n U R                  " U4X4S.UD6nU(       a  U$ U Vs/ s H  oˆS   PM	     sn$ ! [         a•    UR                  (       d  [        US5         U R                  " U R                  U5      4X4S.UD6nO! [         a    / n Of = fU Vs/ s H  oˆS   U:X  d  M  UPM     Os  snf nn[        U5      S:X  a  [        US5         N¼f = fs  snf )aG  
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ø   rL   NÚnamer   )rÑ   r;   Ú_ls_treer   r3   r¾   rÕ   Úlen)	r9   r3   r÷   rø   rL   rn   rÖ   ÚoutÚos	            r:   ÚlsÚHfFileSystem.lsñ  sû   € ð4 ×)Ñ)¨$Ð)ÐBˆØ×&Ñ&Ó(ˆð	2Ø—-’- ÐS¨gÑSÈFÑSˆCö ˆsÐ:±cÓ":²c° V¤9±cÑ":Ð:øô "ó 
	2à ×%×%Ü% d¨DÔ1ðØ—m’m D§L¡L°Ó$6ÐeÀÑeÐ^dÑe‘øÜ%ó Ø’ðúá!Ó7šc˜ v¡Y°$Ñ%6—1šcùÒ7ˆCÐ7Ü�3‹x˜1‹}Ü% d¨DÔ1ùð
	2üò #;sM   ¡A ÁC6Á'C3Á<$B!Â C3Â!B0Â-C3Â/B0Â0C3Â7CÃCÃ#C3Ã2C3c                 ó|
  • Ub  UOU R                   b  U R                   OSnU R                  XS9nUR                  5       nUR                  nU(       a  UOSn/ n	XR                  ;   GaÂ  U(       Gdº  U R                  U   n
U	R                  U
5        / nU(       aÐ  Sn[        U
 Vs/ s H  oÝS   S:X  d  M  XÍ4PM     sn5      nU(       a   UR                  5       u  pÏUb  XÆ::  a}  US   U R                  ;  a  UR                  US   5        OUU R                  US      n
U	R                  U
5        UR                  U
 Vs/ s H  nUS   S:X  d  M  US-   U4PM     sn5        U(       a  M   / nU(       aA  [        U[        5      (       a,  U	 Vs/ s H  nUS   b  M  U R                  US   5      PM!     nnU(       a  U(       d  U(       Ga_  U(       GaW  [        R                  R                  UU-   5      nUR                  S	5      (       d  UU:X  d  U[!        UU5      ;   a  UR#                  S	5      OU R                  U5      nUb"  U[%        U5      S  R'                  S	5      nUU-  nU	 Vs/ s H#  nUS   R)                  US	-   5      (       a  M!  UPM%     n	n[+        U R                  5       H:  nUR)                  US	-   5      (       d  M  U R                  R-                  US 5        M<     U R                  R-                  US 5        U	R                  U R/                  UUS
UUUS95        U	$ [        U[0        5      (       a&  U R3                  UR4                  UR                  US9nOFU R6                  R9                  UR:                  UR                  UUUR<                  UR>                  S9nU GHu  nUS	-   UR                  -   n[        U[@        5      (       aH  UURB                  SURD                  URF                  URH                  URJ                  URL                  S.nOŠ[        U[N        5      (       a2  UURB                  SURH                  URP                  URR                  S.nOC[        U[T        5      (       a  USSURV                  URJ                  S.nOUSSURR                  S.nU R                  US   5      nU R                  RY                  U/ 5      R                  U5        U[%        U5      S  R'                  S	5      nUb  XÆ::  d  GMd  U	R                  U5        GMx     U	$ s  snf s  snf s  snf s  snf )NFrá   r   r¹   r{   Ú	directoryrú   Úlast_commitr6   T)rë   rø   rL   r”   rì   )Úprefixrë   )rë   ÚexpandrL   rJ   Úfile©rú   Úsizer{   Úblob_idÚlfsÚxet_hashr  Úsecurity)rú   r  r{   r  ÚmtimeÚuploaded_atr   ©rú   r  r{   Útree_idr  )rú   r  r{   r  )-r”   rÑ   r;   r2   rš   Úextendr   ÚpopleftÚappendrÇ   rH   rÕ   Úosr3   ÚcommonprefixÚendswithr   r7   rü   rÂ   Ú
startswithÚlistrs   rû   r^   Ú_list_bucket_tree_with_foldersr`   r—   Úlist_repo_treerK   rL   rJ   r(   r  r	  r
  r  r  r  r$   r  r  r)   r  Ú
setdefault)r9   r3   rë   rø   rL   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û   ÚHfFileSystem._ls_tree  s  € ð 'Ñ2‰KÈT×M]ÑM]ÑMi¸×9IÒ9IÐotð 	ð ×)Ñ)¨$Ð)ÐBˆØ×&Ñ&Ó(ˆØ!×&Ñ&ˆ	Þ(‘8¨aˆàˆØ—=‘=Ô ¯Ø $§¡¨dÑ 3ÐØ�J‰JÐ(Ô)Ø#%Ð Þð �Ü %Ù9JÓoÒ9J¨IÐX^ÑN_ÐcnÑNnÓ'�eÓ'Ñ9JÑoó!�ö $Ø&3×&;Ñ&;Ó&=‘O�EØÑ'¨5Ó+<Ø# FÑ+°4·=±=Ó@Ø0×7Ñ7¸ÀÑ8HÕIà04·±¸hÀvÑ>NÑ0OÐ-ØŸJ™JÐ'8Ô9Ø)×0Ñ0ñ 6Gó!"â5F¨	Ø'0°Ñ'8¸KÑ'Gó %; U¨Q¡Y°	Ó$:Ù5Fñ!"ô÷ $�mð  !#ÐÞœz¨-Ô9[×\Ñ\áFIÓ$fÂcÀÈQÈ}ÑM]Ó%< T§\¡\°!°F±)Ö%<ÁcÐ!Ð$fæÖ2¿×HYô !#§¡× 4Ñ 4Ð5IÐL]Ñ5]Ó ^�ð %×-Ñ-¨c×2Ñ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Ü#'¨¯©Ö#6�KØ"×-Ñ-¨k¸CÑ.?×@Ó@ØŸ™×)Ñ)¨+°tÖ<ñ $7ð —‘×!Ñ! +¨tÔ4Ø—
‘
Ø—M‘MØ#Ø"+Ø $Ø!)Ø$/Ø!)ð "ð ô	ðJ ˆ
ôs ˜-Ô)G×HÑHØ×:Ñ:Ø!×+Ñ+Ø(×-Ñ-Ø'ð ;ð ‘ð —y‘y×/Ñ/Ø!×)Ñ)Ø!×&Ñ&Ø'Ø&Ø*×3Ñ3Ø+×5Ñ5ð 0ð �ô "�	Ø&¨™_¨y¯~©~Ñ=�
Ü˜i¬×2Ñ2à *Ø )§¡Ø &Ø#,×#4Ñ#4Ø(Ÿ}™}Ø$-×$6Ñ$6Ø'0×'<Ñ'<Ø$-×$6Ñ$6ñ	'‘Oô   	¬:×6Ñ6à *Ø )§¡Ø &Ø$-×$6Ñ$6Ø!*§¡Ø'0×'<Ñ'<ñ'‘Oô   	¬:×6Ñ6à *Ø !Ø +Ø#,×#4Ñ#4Ø'0×'<Ñ'<ñ'‘Oð !+Ø !Ø +Ø'0×'<Ñ'<ñ	'�Oð #Ÿl™l¨?¸6Ñ+BÓC�Ø—‘×(Ñ(¨°bÓ9×@Ñ@ÀÔQØ"¤3 t£9 ;Ð/×5Ñ5°cÓ:�ØÑ# uÖ'8Ø—J‘J˜×/ñS "ðT ˆ
ùòa pùò!"ùò %gùò" Vs0   Â%T*Â5T*Ä>T/ÅT/Æ
T4ÆT4É+ T9ÊT9r  c                 ó¬  • U R                   R                  XUS9n0 nU(       a  SUR                  S5      -   OSn/ nU Hù  nUR                  U5        U(       d  M  [	        [        UR                  5      R                  5      SU* S-
    H©  n	[        S[        U	5      UR                  S9n
U
R                  U;  a!  UR                  U
5        X¥U
R                  '   MR  U
R                  c  Ma  XZR                     nUR                  b  UR                  U
R                  :  d  M˜  U
R                  Ul
        M«     Mû     U(       d  [        SU S	U S
35      eU$ )z<Same as `HfApi.list_bucket_tree` but always includes folders)rë   r   r6   r   Nr  )r{   r3   r  zFile not found in bucket 'z': 'Ú')r—   Úlist_bucket_treerÂ   r  r  r   r3   Úparentsr%   rD   r  r   )r9   r`   r  rë   Úbucket_filesÚbucket_foldersÚ	min_depthrý   Úbucket_entryÚparent_bucket_folder_strÚparent_bucket_folderÚbucket_folders               r:   r  Ú+HfFileSystem._list_bucket_tree_with_folders©  sS  € ð —y‘y×1Ñ1°)ÈyÐ1ÐYˆØ24ˆÞ-3�A˜Ÿ™ SÓ)Ò)¸ˆ	Ø/1ˆã(ˆLØ�J‰J�|Ô$ö Ùô -1´¸|×?PÑ?PÓ1Q×1YÑ1YÓ,ZÐ[kÐ^gÐ]gÐjkÑ]kÓ,lÐ(Ü'3Ø$¬3Ð/GÓ+HÐVb×VnÑVnñ(Ð$ð
 (×,Ñ,°NÓBØ—J‘JÐ3Ô4Ø@TÐ#7×#<Ñ#<Ñ=Ùð (×3Ñ3Ó?Ø$2×3LÑ3LÑ$M�MØ$×0Ñ0Ñ8Ø%×1Ñ1Ð4H×4TÑ4TÕTà4H×4TÑ4T˜Ö1ó# -mñ )ö6 Ü$Ð'AÀ)ÀÈDÐQWÐPXÐXYÐ%ZÓ[Ð[Øˆ
r=   c              /   ó¢   >#   • U R                  XR                  S5      S9R                  5       n[        TU ]  " U/UQ70 UD6 Sh  v•N   g N7f)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.
rL   rá   N)rÑ   rW   r;   ri   Úwalk)r9   r3   rm   rn   ro   s       €r:   r:  ÚHfFileSystem.walkÑ  sI   øé € ð × Ñ  ·
±
¸:Ó0FÐ ÐG×QÑQÓSˆÜ‘7’< Ð6 tÒ6¨vÑ6×6Ó6ùs   ƒAAÁAÁAc                 ó‚   >• U R                  XR                  S5      S9R                  5       n[        TU ]  " U4SU0UD6$ )a(  
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.
rL   rá   rì   )rÑ   rW   r;   ri   Úglob)r9   r3   rì   rn   ro   s       €r:   r=  ÚHfFileSystem.globá  sC   ø€ ð × Ñ  ·
±
¸:Ó0FÐ ÐG×QÑQÓSˆÜ‰wŠ|˜DÑ>¨8Ð>°vÑ>Ð>r=   Úwithdirsc                 óP  • Ub  US:  a  [        S5      eU R                  XS9nUR                  5       n U R                  " U4SXRS.UD6n	U(       d  U	 V
s/ s H  oªS   S:w  d  M  U
PM     n	n
O$U R                  " U40 UD6nUS   S:X  a  U/U	-   OU	n	U	 V
s0 s H  oªS   U
_M
     n	n
[        U	5      nU(       d  U$ U Vs0 s H  oÝX�   _M	     sn$ s  sn
f s  sn
f ! [
         a;     U R                  " U4S	U0UD6S   S
:X  a  U0 0n	 N`0 n	 Nd! [         a    0 n	  Nsf = ff = fs  snf )aE  
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ú   rL   r  )r´   rÑ   r;   rû   Úinfor   ÚFileNotFoundErrorrž   )r9   r3   rì   r?  r÷   rø   rL   rn   rÖ   rý   rþ   r   Únamesrú   s                 r:   ÚfindÚHfFileSystem.findñ  s]  € ð@ Ñ H¨q£LÜÐ:Ó;Ð;Ø×)Ñ)¨$Ð)ÐBˆØ×&Ñ&Ó(ˆð	.Ø—-’- Ðc°¸gÑcÐ\bÑcˆCö Ù"%ÓB¢#˜Q¨6©°kÑ)A—q¡#�ÐB�ð !ŸIšI dÑ5¨fÑ5�	Ø+4°VÑ+<ÀÓ+K�y�k CÒ'ÐQT�Ù),Ó-ª A�V‘9˜a’<©ˆCÐ-Ü�s“ˆÞØˆLá05Ó6²¨˜#™)’O±Ñ6Ð6ùò Cùò
 .øô! "ó 	ðØ—9’9˜TÑ?¨HÐ?¸Ñ?ÀÑGÈ6ÓQØ ˜*’Cà’CøÜ$ó Ø“ðúð	üò* 7sG   µC ÁCÁ&CÂCÃ D#Ã
D Ã& DÄDÄDÄD ÄDÄD Úpath1Úpath2c                 ó4  • U R                  XS9nU R                  X#S9n[        U[        5      (       d  [        U[        5      (       a  [        S5      eUR                  UR                  :H  =(       a    UR
                  UR
                  :H  nU(       a�  SU SU 3nU R                  R                  UR
                  UR                  UR                  UR                  SU5      UR                  SS5      [        UR                  UR                  UR                  S9/S	9  O­U R                  US
UR                  S9 n	U	R                  5       n
SSS5        SU SU 3nU R                  R                  W
UR                  UR
                  U R                  UR                  UR                  UR                  SU5      UR                  S5      S9  U R!                  UR#                  5       S9  U R!                  UR#                  5       S9  g! , (       d  f       NÂ= f)aB  
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 from/to buckets is not available yetzCopy z to rä   rå   rT   )Úsrc_path_in_reporM   Úsrc_revision)rK   rJ   rL   rä   rå   rï   ÚrbN©Úpath_or_fileobjrM   rK   r’   rJ   rL   rä   rå   ræ   )rÑ   rÇ   r^   r»   rJ   rK   r—   rò   rL   rW   r   rM   ÚopenÚreadÚupload_filer’   r×   r;   )r9   rF  rG  rL   rn   Úresolved_path1Úresolved_path2Ú	same_reporä   ÚfÚcontents              r:   Úcp_fileÚHfFileSystem.cp_file.  sû  € ð  ×*Ñ*¨5Ð*ÐDˆØ×*Ñ*¨5Ð*ÐDˆÜ�nÔ&D×EÑEÌØÔ:÷J
ñ J
ô &Ð&QÓRÐRð ×$Ñ$¨×(@Ñ(@Ñ@×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ØŸ&™&›(�÷ Jà$ U G¨4°¨wÐ7ˆNØ�I‰I×!Ñ!Ø 'Ø+×8Ñ8Ø&×.Ñ.Ø—j‘jØ(×2Ñ2Ø'×0Ñ0Ø%Ÿz™zÐ*:¸NÓKØ#)§:¡:Ð.BÓ#Cð "ñ 	ð 	×Ñ >×#;Ñ#;Ó#=ÐÑ>Ø×Ñ >×#;Ñ#;Ó#=ÐÒ>÷ JÕIús   Ä<H	È	
Hc                 ó   • U R                   " U40 0 UESS0ED6nSU;   a$  US   c  [        SU S35      eUS   R                  $ SU;   a  US   (       a  US   $ SU;   a  US   (       a  US   $ [        SU S	U S
35      e)a+  
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 modified time of the file.
r”   Tr  z9'modified' is not implemented for repository paths like 'r.  r  r  z'Cannot determined 'modified' for path 'z	' (info: Ú))rA  r»   Údate)r9   r3   rn   rA  s       r:   ÚmodifiedÚHfFileSystem.modifiedj  s±   € ð �yŠy˜ÑAÐ!@ FÐ!@¨M¸4Ñ!@ÑAˆØ˜DÓ Ø�MÑ"Ñ*Ü)Ð,eÐfjÐekÐklÐ*mÓnÐnØ˜Ñ&×+Ñ+Ð+Ø˜‹_  g§Ø˜‘=Ð Ø˜dÓ" t¨M×':Ø˜Ñ&Ð&ä%Ð(OÐPTÈvÐU^Ð_cÐ^dÐdeÐ&fÓgÐgr=   c           	      ó&  • U R                  XS9nUR                  5       nUR                  SU R                  b  U R                  OS5      nUR                  (       dª  USSS.n[        U[        5      (       a  SUS'   [        U[        5      (       as  U(       al  U R                  R                  UR                  UR                  UR                  S	9S
   n0 UES[        UR                  UR                  UR                  S9S.EnGOw[        U[         5      (       ac  U R#                  U5      n	U R%                  X’S9  U R&                  U	    V
s/ s H  oªS   U:X  d  M  U
PM     nn
U(       d  [)        US5        US   nGOÿSnU R#                  U5      n	U(       d   X�R&                  ;  a  U R%                  U	5        X�R&                  ;   aA  U R&                  U	    V
s/ s H  oªS   U:X  d  M  U
PM     nn
U(       d  [)        US5        US   nU(       d  Ub  U(       Gac  U(       Ga[  US   GcT  U R                  R+                  UR                  UR,                  UUR                  UR                  S9nU(       d  [)        US5        US   n[        UR                  UR                  UR                  SUR.                  S9R                  5       n[        U[0        5      (       aX  US-   UR                  -   UR2                  SUR4                  UR6                  UR8                  UR:                  UR<                  S.nO,US-   UR                  -   SSUR>                  UR:                  S.nU(       d  S Vs0 s H  oÿX   _M	     nnUc   eU$ s  sn
f s  sn
f s  snf )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
> (or `HfApi.get_bucket_paths_info()` or `HfApi.bucket_info()` for buckets)

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”   NFr   r  )rú   r  r{   r  )rJ   rL   éÿÿÿÿ)ÚoidÚtitlerZ  )r  r  )rø   rú   )r  rL   rJ   rT   )rM   rR   r6   r  r  r  ) rÑ   r;   rW   r”   r3   rÇ   rH   r—   Úlist_repo_commitsrK   rJ   rL   r'   Ú	commit_idr`  Ú
created_atr^   rÕ   rÿ   rš   r¾   Úget_paths_inforM   rR   r(   r  r	  r
  r  r  r  r  )r9   r3   rø   rL   rn   rÖ   r”   rý   r  r+  rþ   Úout1Ú
paths_infor   r  Úks                   r:   rA  ÚHfFileSystem.infoƒ  s^  € ð, ×)Ñ)¨$Ð)ÐBˆØ×&Ñ&Ó(ˆØ—j‘jØ¨t×/?Ñ/?Ñ/K˜4×+Ò+ÐQVó
ˆð ×!×!ð ØØ#ñˆCô
 ˜-Ô)K×LÑLØ%)��MÑ"Ü˜-Ô)K×LÑLÖQ\Ø"Ÿi™i×9Ñ9Ø!×)Ñ)°]×5LÑ5LÐWd×WmÑWmð :ð àñ�ðØðà#Ü#1Ø'×1Ñ1¸×9JÑ9JÐQ\×QgÑQgñ$ò�ùô ˜Ô'E×FÑFØŸ,™, tÓ,ˆKà�G‰G�KˆGÑ1Ø#Ÿ}™}¨[Ò9ÓOÒ9˜!¸v¹YÈ$Ñ=N—AÑ9ˆDÐOÞÜ% d¨DÔ1Ø�q‘'ŠCàˆCØŸ,™, tÓ,ˆKÞ ;·m±mÓ#Cà—‘˜Ô$ØŸm™mÓ+à#'§=¡=°Ò#=ÓSÒ#=˜aÀ6ÁÈdÑARŸÑ#=�ÐSÞÜ)¨$°Ô5Ø˜1‘g�Þ˜#™+¯+¿#À#ÀmÑBTÒB\Ø!ŸY™Y×5Ñ5Ø!×)Ñ)Ø!×.Ñ.Ø&Ø*×3Ñ3Ø+×5Ñ5ð 6ð �
ö "Ü)¨$°Ô5Ø& q™M�	Ü>Ø!×+Ñ+Ø!×)Ñ)Ø!×*Ñ*Ø!#Ø"/×"=Ñ"=ñ÷ ‘)“+ð ô ˜i¬×2Ñ2à )¨C¡°)·.±.Ñ @Ø )§¡Ø &Ø#,×#4Ñ#4Ø(Ÿ}™}Ø$-×$6Ñ$6Ø'0×'<Ñ'<Ø$-×$6Ñ$6ñ	‘Cð !*¨C¡°)·.±.Ñ @Ø !Ø +Ø#,×#4Ñ#4Ø'0×'<Ñ'<ñ�Cö #Ù.FÓGÒ.F¨˜c™fš9Ñ.F�CÐGØ‰ÐˆØˆ
ùòq Pùò TùòT Hs   ÅNÅNÇN	Ç(N	Í-Nc                 óœ   •  UR                  SS5      (       a  U R                  U5        U R                  " U40 UD6  g! [         a     gf = f)aq  
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)rW   r×   rA  ÚOSError)r9   r3   rn   s      r:   ÚexistsÚHfFileSystem.existsñ  sL   € ð 	Ø�z‰z˜) U×+Ñ+Ø×%Ñ% dÔ+à�IŠI�dÑ%˜fÒ%ØøÜó 	Ùð	ús   ‚;> ¾
AÁ
Ac                 óR   •  U R                  U5      S   S:H  $ ! [         a     gf = f)a)  
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©rA  rj  ©r9   r3   s     r:   rñ   ÚHfFileSystem.isdir
  s1   € ð	Ø—9‘9˜T“? 6Ñ*¨kÑ9Ð9øÜó 	Ùð	úó   ‚ ™
&¥&c                 óR   •  U R                  U5      S   S:H  $ ! [         a     gf = f)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  Frn  ro  s     r:   ÚisfileÚHfFileSystem.isfile  s1   € ð	Ø—9‘9˜T“? 6Ñ*¨fÑ4Ð4øÜó 	Ùð	úrq  c                 ó†  • U R                  U5      n[        U[        5      (       a2  U R                   SUR                   S[        UR                  5       3nO?[        UR                  UR                  UR                  UR                  U R                  S9nU R                  U5      (       a  UR                  SSS5      nU$ )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.
z	/buckets/z	/resolve/)rJ   rL   r‘   z/tree/r   )rÑ   rÇ   r^   r‘   r`   r   r3   r!   rK   rM   rJ   rL   rñ   Úreplace)r9   r3   rÖ   Úurls       r:   rw  ÚHfFileSystem.url.  s­   € ð ×)Ñ)¨$Ó/ˆÜ�mÔ%C×DÑDØ—]‘]�O 9¨]×-DÑ-DÐ,EÀYÌuÐUb×UgÑUgÓOhÐNiÐj‰CäØ×%Ñ%Ø×*Ñ*Ø'×1Ñ1Ø&×/Ñ/ØŸ™ñˆCð �:‰:�d×ÑØ—+‘+˜k¨8°QÓ7ˆCØˆ
r=   c                 óö  >• UR                  S5      n[        UR                  5       5      S1-
  n[        U[        [
        45      (       a  [        U5      S:”  a  [        TU ]   " X4X4S.UD6$ [        U5      (       a  UnO,U R                  U5      (       a  [        R                  " USS9  g[        U[        [        45      (       a2  [        R                  " [        R                  R!                  U5      SS9  SnUc  [#        US5      nSnUR%                  5       n	U R'                  XS	9n
U R)                  XS	9S
   nUR+                  U5         [-        U R/                  U
R1                  5       5      UUUSU R2                  R5                  5       [        U[
        5      (       a  UR6                  OSS9  UR9                  U	5        U(       a  UR;                  5         gg! U(       a  UR;                  5         f f = f)aü  
Copy single remote file to local.

> [!WARNING]
> Note: When possible, use `HfApi.hf_hub_download()` or `HfApi.download_bucket_files` 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.

rL   r   )ÚcallbackÚoutfileT)Úexist_okNFÚwbrá   r  )rw  Ú	temp_fileÚdisplayed_filenameÚexpected_sizeÚresume_sizeÚheadersÚ	_tqdm_bar)rW   ÚsetÚkeysrÇ   r   r   rü   ri   Úget_filer   rñ   r  ÚmakedirsrD   r   r3   ÚdirnamerN  ÚtellrÑ   rA  Úset_sizer"   rw  r;   r—   Ú_build_hf_headersÚtqdmÚseekÚclose)r9   ÚrpathÚlpathrz  r{  rn   rL   Úunhandled_kwargsÚ
close_fileÚinitial_posÚresolve_remote_pathr€  ro   s               €r:   r†  ÚHfFileSystem.get_fileH  s¯  ø€ ð$ —:‘:˜jÓ)ˆÜ˜vŸ{™{›}Ó-°°Ñ<ÐÜ˜(¤\´<Ð$@×AÑAÄSÐIYÓEZÐ]^ÓE^ô ‘7Ò# EÐ_¸8Ñ_ÐX^Ñ_Ð_ô �e×ÑØ‰GØ�Z‰Z˜×ÑÜ�KŠK˜¨Ò-Øä�eœc¤4˜[×)Ñ)Ü�KŠKœŸ™Ÿ™¨Ó.¸Ò>ð ˆ
Ø‰?Ü˜5 $Ó'ˆGØˆJØ—l‘l“nˆð #×/Ñ/°Ð/ÐIÐØŸ	™	 %˜	Ð;¸FÑCˆØ×Ñ˜-Ô(ð	 ÜØ—H‘HÐ0×:Ñ:Ó<Ó=Ø!Ø#(Ø+ØØŸ	™	×3Ñ3Ó5Ü+5°hÄ×+MÑ+M˜(Ÿ-š-ÐSWòð �L‰L˜Ô%ö Ø—‘•ð øŽzØ—‘•ð ús   ÅA6G ÇG8c                 ó   • [        S5      e)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.©r»   r8   s    r:   ÚtransactionÚHfFileSystem.transaction†  s   € ô "Ð"LÓMÐMr=   c                 ó   • [        S5      e)z@Begin write transaction for deferring files, non-context versionr—  r˜  r8   s    r:   Ústart_transactionÚHfFileSystem.start_transaction‘  s   € ô "Ð"LÓMÐMr=   c                 óp   • [         [        U 5      U R                  U R                  U R	                  5       44$ rh   )Úmake_instancer{   r�   r‚   r}   r8   s    r:   Ú
__reduce__ÚHfFileSystem.__reduce__—  s9   € äÜ�‹JØ×ÑØ× Ñ Ø×$Ñ$Ó&ð	
ð 
ð 	
r=   c                 ó€   • [        U R                  5      [        U R                  5      [        U R                  5      S.$ )N)rš   r˜   r™   )r   rš   r˜   r™   r8   s    r:   r}   Ú HfFileSystem._get_instance_state   s4   € ä  §¡Ó/Ü/7¸×8\Ñ8\Ó/]Ü$,¨T×-FÑ-FÓ$Gñ
ð 	
r=   )r—   r™   r˜   r“   rš   r‘   r”   r’   rh   )rK  NN)FNN)TFN)FFNNN)NFFFN)FN©r4   N)7r?   r@   rA   rB   rC   Úroot_markerÚprotocolrD   ÚboolÚintrj   Úclassmethodrt   ÚtupleÚ	Exceptionr«   r¯   rH   r^   rÑ   r×   r   rÞ   ré   rõ   r  Údictr   rÿ   rû   r   r$   r%   r  r   r:  r=  rD  rV  r
   r[  rA  rk  rñ   rs  rw  r   r†  Úpropertyr™  rœ  r   r}   rF   r‹   rŒ   s   @r:   rŽ   rŽ   Œ   s|  ø† ñ@ðD €KØ€Hð
  $Ø#'Ø!%Ø#'ò<ð ˜‘*ð<ð �c‰z˜DÑ ð	<ð
 ˜$‘Jð<ð ˜D‘[÷<ð <ð2 ð	¨ð 	Àó 	ó ð	ðTØðTØ'*ðTØ69¸D±jðTà	ˆt�Y Ñ%Ð%Ñ	&ôTð&4¨ð 4°°d¸IÈÑ<LÐ6LÑ0Mô 4ð 15ñf
Øðf
Ø#&¨¡:ðf
à	+Ð.LÑ	Lõf
ñPQ S¨4¡Zð Q¸4õ QðH Ø!%Ø#ñXàðXð ðXð ˜$‘Jð	Xð
 ˜‘*ðXð 
Ð;Ñ	<õXñ$>˜ð > s¨T¡zð >Àtõ >ð&  Ø#Ø#ñ0>àð0>ð ð0>ð ˜‘*ð	0>ð
 ˜‘*ð0>ð 
õ0>ðf ]añ);Øð);Ø!%ð);Ø7;ð);ØORÐUYÉzð);à	ˆc�D˜˜c˜‘NÑ"Ñ	#õ);ð\  ØØ#Ø#'Ø#ñKàðKð ðKð ð	Kð
 ˜‘*ðKð ˜D‘[ðKð ˜‘*õKðZ&Øð&Ø&)ð&Ø6:ð&à	�*˜|Ñ+Ñ	,ô&ðP7˜ð 7°(¸5ÀÀdÈ3ÁiÐQUÐVYÑQZÐAZÑ;[Ñ2\÷ 7ñ ?˜ð ?¨¨d©
ð ?ÈÈSÉ	÷ ?ð ?ð&  $ØØØØ#ñ;7àð;7ð ˜‘*ð;7ð ð	;7ð
 ð;7ð ð;7ð ˜‘*ð;7ð 
ˆc‰�T˜#˜t C¨ H™~Ð-Ñ.Ñ	.õ;7ñz:?˜Sð :?¨ð :?¸¸d¹
ð :?ÐX\õ :?ðxh˜Sð h¨xô hñ2l˜ð l tð l¸sÀT¹zð lÐ_cÐdgÐilÐdlÑ_mõ lò\ò2ò$ð$˜ð  ô ð4 /@È÷ < ñ < ð| ñNó ðNòNò
÷
ð 
r=   rŽ   )Ú	metaclassc                   ó¢   ^ • \ rS rSrSS\S\S\S-  4U 4S jjjrU 4S jrS\S	\S
\	4S jr
SS jrSS\S
S4S jjrSU 4S jjrS
\4S jrSrU =r$ )rÚ   i¨  NÚfsr3   rL   c                 óö   >•  UR                  X#S9U l        [        TU ]  " XR                  R                  5       40 UD6  U   g ! [         a+  nSUR                  SS5      ;   a  [        U S35      Uee S nAff = f)Nrá   ÚwrÙ   rT   úB.
Make sure the repository and revision exist before writing data.)rÑ   rÖ   rB  rW   ri   rj   r;   )r9   r°  r3   rL   rn   rª   ro   s         €r:   rj   ÚHfFileSystemFile.__init__©  s†   ø€ ð	Ø!#§¡° Ð!IˆDÔô 	‰Ò˜×/Ñ/×9Ñ9Ó;ÑF¸vÒFÚøô !ó 	Ø�f—j‘j ¨Ó,Ó,Ü'Ø�cÐ\Ð]óàðð ûð	ús   ƒA Á
A8Á&A3Á3A8c                 óD   >• [        U S5      (       d  g [        TU ]	  5       $ ©NrÖ   )Úhasattrri   Ú__del__©r9   ro   s    €r:   r¸  ÚHfFileSystemFile.__del__µ  s    ø€ Ü�t˜_×-Ñ-àÜ‰w‰Ó Ð r=   ÚstartÚendr4   c                 óä   • SSU SUS-
   30U R                   R                  R                  5       EnU R                  5       n[	        SXC[
        R                  S9n[        U5        UR                  $ )NÚrangeúbytes=Ú-r   ÚGET©r‚  r¦   )	r°  r—   r‹  rw  r,   r   ÚHF_HUB_DOWNLOAD_TIMEOUTr+   rU  )r9   r»  r¼  r‚  rw  Úrs         r:   Ú_fetch_rangeÚHfFileSystemFile._fetch_range»  sk   € à�v˜e˜W A c¨A¡g YÐ/ð
à�g‰g�l‰l×,Ñ,Ó.ð
ˆð �h‰h‹jˆÜ˜ ¼i×>_Ñ>_Ñ`ˆÜ˜AÔØ�y‰yÐr=   c                 ó8   • [         R                  " SSS9U l        g )Nzhffs-F)r  rã   )ÚtempfileÚNamedTemporaryFiler~  r8   s    r:   Ú_initiate_uploadÚ!HfFileSystemFile._initiate_uploadÅ  s   € Ü!×4Ò4¸GÈEÑRˆ�r=   Úfinalc                 óN  • U R                   R                  S5        U R                   R                  5       nU R                  R	                  U5        U(       GaÍ  U R                  R                  5         [        U R                  [        5      (       ad  U R                  R                  R                  U R                  R                  U R                  R                  U R                  R                  4/S9  OÔU R                  R                  R                  U R                  R                  U R                  R                   U R                  R"                  U R                  R$                  U R                  R&                  U R                  R(                  U R*                  R-                  S5      U R*                  R-                  S5      S9  [.        R0                  " U R                  R                  5        U R                  R3                  U R                  R5                  5       S9  g g )Nr   )Úaddrä   rå   rL  ræ   )Úbufferr�  rO  r~  ÚwriterŽ  rÇ   rÖ   r^   r°  r—   rç   r`   rú   r3   rP  rM   rK   r’   rJ   rL   rn   rW   r  Úremover×   r;   )r9   rÌ  Úblocks      r:   Ú_upload_chunkÚHfFileSystemFile._upload_chunkÈ  s‚  € Ø�‰×Ñ˜ÔØ—‘× Ñ Ó"ˆØ�‰×Ñ˜UÔ#ßØ�N‰N× Ñ Ô"Ü˜$×,Ñ,Ô.L×MÑMØ—‘—‘×/Ñ/Ø×&Ñ&×0Ñ0¸¿¹×8KÑ8KÈT×M_ÑM_×MdÑMdÐ7eÐ6fð 0ò ð —‘—‘×(Ñ(Ø$(§N¡N×$7Ñ$7Ø!%×!3Ñ!3×!@Ñ!@Ø ×.Ñ.×6Ñ6ØŸ'™'Ÿ-™-Ø"×0Ñ0×:Ñ:Ø!×/Ñ/×8Ñ8Ø#'§;¡;§?¡?Ð3CÓ#DØ'+§{¡{§¡Ð7KÓ'Lð )ñ 	ô �IŠI�d—n‘n×)Ñ)Ô*Ø�G‰G×$Ñ$Ø×'Ñ'×1Ñ1Ó3ð %ò ð% r=   c                 óT  >• U R                   S:X  ax  Ub  US:X  ao  U R                  S:X  a_  U R                  R                  U R                  SSS9 nUR                  5       nU =R                  [        U5      -  sl        UsSSS5        $ [        TU ]  U5      $ ! , (       d  f       N= f)zäRead remote file.

If `length` is not provided or is -1, the entire file is downloaded and read. On POSIX systems the file is
loaded in memory directly. Otherwise, the file is downloaded to a temporary file and read from there.
rK  Nr^  r   )r“   )rÙ   Úlocr°  rN  r3   rO  rü   ri   )r9   ÚlengthrT  rý   ro   s       €r:   rO  Ú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   • U R                   R                  U R                  5      $ rh   ©r°  rw  r3   r8   s    r:   rw  ÚHfFileSystemFile.urlï  ó   € Ø�w‰w�{‰{˜4Ÿ9™9Ó%Ð%r=   )rÖ   r~  rh   r¤  )F©r^  )r?   r@   rA   rB   rŽ   rD   rj   r¸  r¨  ÚbytesrÅ  rÊ  r§  rÓ  rO  rw  rF   r‹   rŒ   s   @r:   rÚ   rÚ   ¨  st   ø† ñ
˜<ð 
¨sð 
¸cÀD¹j÷ 
ð 
õ!ð #ð ¨Cð °Eô ôSñ 4ð °Dõ ÷4$ð&�S÷ &ò &r=   rÚ   c                   óÄ   ^ • \ rS rSr    SS\S\S\S\S-  S\S\4U 4S	 jjjrSS
\S\4S jjrSS\4S jjr	SS\
\   S\S\4S jjrS\4S jrU 4S jrS rS rSrU =r$ )rÛ   ió  Nr°  r3   rÙ   rL   r“   Ú
cache_typec                 ó  >• US:w  a  [        SU 35      eUS:w  a  [        SU 35      eSU;   a  [        SU S35      e UR                  X$S9U l        U R                  R                  5       S S.U l        [        T	U ]   " XR                  R                  5       4X5US.UD6  S U l	        U   [        5       U l        S U l        [        5       U l        g ! [         a/  nSUR	                  S	S
5      ;   a  [        U S35      Ue S nAN±S nAff = f)Nr   z:HfFileSystemStreamFile only supports block_size=0 but got Únonez?HfFileSystemStreamFile only supports cache_type='none' but got r²  z;HfFileSystemStreamFile only supports reading but got mode='r.  rá   rÙ   rT   r³  )rú   r  ©rÙ   r“   rà  )r´   rÑ   rÖ   rB  rW   r;   Údetailsri   rj   Úresponser   Ú_exit_stackÚ_stream_iteratorÚ	bytearrayÚ_stream_buffer)
r9   r°  r3   rÙ   rL   r“   rà  rn   rª   ro   s
            €r:   rj   ÚHfFileSystemStreamFile.__init__ô  s1  ø€ ð ˜‹?ÜÐYÐZdÐYeÐfÓgÐgØ˜ÓÜÐ^Ð_iÐ^jÐkÓlÐlØ�$‹;ÜÐZÐ[_ÐZ`Ð`aÐbÓcÐcð	Ø!#§¡° Ð!IˆDÔð !%× 2Ñ 2× <Ñ <Ó >ÈÑMˆŒÜ‰ÒØ×"Ñ"×,Ñ,Ó.ð	
Ø59Ð]gñ	
Økqò	
ð 04ˆŒÙÜ$›;ˆÔà8<ˆÔÜ'›kˆÕøô !ó 	Ø�f—j‘j ¨Ó,Ó,Ü'Ø�cÐ\Ð]óàðô -ûð	ús   Á C Ã
D
Ã%DÄD
rÖ  Úwhencec                 ó^   • US:X  a  US:X  a  g XR                   :X  a  US:X  a  g [        S5      e)Nr   r   zCannot seek streaming HF file)rÖ  r´   )r9   rÖ  rë  s      r:   r�  ÚHfFileSystemStreamFile.seek  s0   € Ø�!‹8˜ !›ØØ—(‘(‹?˜v¨›{ØÜÐ8Ó9Ð9r=   r×  c                 ó˜  • U R                   c  U R                  5         Sn  U R                   b  U R                  c  gU R                  U R                  U5      nU =R                  [        U5      -  sl        U$ ! [         aD    U R                   b  U R                   R                  5         U(       a  e U R                  5         Sn Of = fM«  )z¾Read the remote file.

If the file is already open, we reuse the connection.
Otherwise, open a new connection and read from it.

If reading the stream fails, we retry with a new connection.
FTr=   )rå  Ú_open_connectionrç  Ú_read_from_streamrÖ  rü   r«  rŽ  )r9   r×  Úretried_oncerý   s       r:   rO  ÚHfFileSystemStreamFile.read  s³   € ð �=‰=Ñ Ø×!Ñ!Ô#àˆØð$Ø—=‘=Ñ(¨D×,AÑ,AÑ,IØØ×,Ñ,¨T×-BÑ-BÀFÓK�Ø—’œC ›HÑ$•Ø�
øÜó $Ø—=‘=Ñ,Ø—M‘M×'Ñ'Ô)ÞØà×%Ñ%Ô'Ø#’ð$úñ s   ¢A9 ½;A9 Á9ACÃCÚiteratorr4   c                 ó�  • US:X  a  gUS:  aT  [        U R                  5      nU R                  R                  5         U H  nUR                  U5        M     [	        U5      $ U[        U R                  5      ::  a)  [	        U R                  SU 5      nU R                  SU2	 U$ [        U R                  5      nU R                  R                  5         U Hd  nU[        U5      -
  nU[        U5      :”  a  UR                  U5        M3  UR                  USU 5        U R                  R                  XFS 5          O   [	        U5      $ )z˜Read up to `length` bytes from stream buffer and stream.

If length < 0, read until EOF.

If EOF is reached before length, fewer bytes may be returned.
r   r=   N)rè  ré  rÔ   r  rÞ  rü   )r9   ró  r×  ÚbufÚchunkÚresultÚneeds          r:   rð  Ú(HfFileSystemStreamFile._read_from_stream:  s#  € ð �Q‹;Øà�A‹:Ü˜D×/Ñ/Ó0ˆCØ×Ñ×%Ñ%Ô'Û!�Ø—
‘
˜5Ö!ñ "ä˜“:Ðà”S˜×,Ñ,Ó-Ó-Ü˜4×.Ñ.¨w°Ð7Ó8ˆFØ×#Ñ# G V GÐ,ØˆMä˜×+Ñ+Ó,ˆØ×Ñ×!Ñ!Ô#ÛˆEØœC ›HÑ$ˆDØ”c˜%“jÓ Ø—
‘
˜5Ö!à—
‘
˜5  $˜<Ô(Ø×#Ñ#×*Ñ*¨5°¨<Ô8Ùñ ô �S‹zÐr=   c                 óL   • U R                   R                  U R                  5      $ rh   rÚ  r8   s    r:   rw  ÚHfFileSystemStreamFile.url\  rÜ  r=   c                 óx   >• [        U S5      (       d  g U R                  R                  5         [        TU ]  5       $ r¶  )r·  ræ  rŽ  ri   r¸  r¹  s    €r:   r¸  ÚHfFileSystemStreamFile.__del___  s2   ø€ Ü�t˜_×-Ñ-àØ×Ñ×ÑÔ Ü‰w‰Ó Ð r=   c                 ó”   • [         U R                  U R                  U R                  U R                  U R
                  R                  44$ rh   )Úreopenr°  r3   rÙ   Ú	blocksizeÚcacherú   r8   s    r:   r   Ú!HfFileSystemStreamFile.__reduce__f  s0   € Ü˜Ÿ™ §¡¨D¯I©I°t·~±~ÀtÇzÁzÇÁÐWÐWÐWr=   c           	      ó@  • U R                   R                  5         SU l        U R                  5       nU R                  R
                  R                  5       nU R                  S:”  a  SU R                   S3US'   U R                  R                  [        SUU[        R                  S95      U l         [        U R                  5        U R                  R#                  5       U l        g! [         a,  nUR                  R                   S:X  a  SU l         SnAge SnAff = f)	z%Open a connection to the remote file.Nr   r¿  rÀ  ÚRangerÁ  rÂ  i   )ré  rÔ   rç  rw  r°  r—   r‹  rÖ  ræ  Úenter_contextr-   r   rÃ  rå  r+   r   Ústatus_codeÚ
iter_bytes)r9   rw  r‚  rª   s       r:   rï  Ú'HfFileSystemStreamFile._open_connectioni  sì   € ð 	×Ñ×!Ñ!Ô#Ø $ˆÔà�h‰h‹jˆØ—'‘'—,‘,×0Ñ0Ó2ˆØ�8‰8�a‹<Ø!'¨¯© z°Ð3ˆG�GÑØ×(Ñ(×6Ñ6ÜØØØÜ!×9Ñ9ñ	ó
ˆŒð	Ü §¡Ô.ð !%§¡× 8Ñ 8Ó :ˆÕøô ó 	Ø�z‰z×%Ñ%¨Ó,à $�”ÜØûð	ús   Â2C' Ã'
DÃ1!DÄDÄD)ræ  ré  rç  rä  rÖ   rå  )rK  Nr   râ  )r   rÝ  )r?   r@   rA   rB   rŽ   rD   r¨  rj   r�  rO  r   rÞ  rð  rw  r¸  r   rï  rF   r‹   rŒ   s   @r:   rÛ   rÛ   ó  sº   ø† ð
 Ø#ØØ ñ!*àð!*ð ð!*ð ð	!*ð
 ˜‘*ð!*ð ð!*ð ÷!*ð !*ñF:˜ð : Sõ :ñ$˜3õ $ñ8 ¨(°5©/ð  À3ð  ÐPUõ  ðD&�Sô &õ!òX÷;ð ;r=   rÛ   rL   r4   c                 óR   • [         R                  " U 5      (       a  U $ [        U 5      $ rh   )r#   rÊ   Ú
safe_quoterá   s    r:   rY   rY   ˆ  s#   € Ü2×8Ò8¸×BÑBˆ8Ð\Ì
ÐS[ÓH\Ð\r=   Úsc                 ó   • [        U SS9$ )NrT   )Úsafe)r   )r  s    r:   r
  r
  Œ  s   € Ü�˜ÑÐr=   r3   rÉ   c                 ó¾   • U n[        U[        5      (       a  U  S3nO5[        U[        5      (       a  U  S3nO[        U[        5      (       a  U  S3n[	        U5      Ue)Nz (repository not found)z (revision not found)z (invalid repository id))rÇ   r   r    r*   rB  )r3   rÉ   Úmsgs      r:   r¾   r¾   �  se   € Ø
€CÜ�#Ô.×/Ñ/Ø�Ð-Ð.‰Ü	�CÔ.×	/Ñ	/Ø�Ð+Ð,‰Ü	�CÔ*×	+Ñ	+Ø�Ð.Ð/ˆÜ
˜CÓ
  cÐ)r=   r°  rÙ   r“   rà  c                 ó"   • U R                  XX4S9$ )Nrã  )rN  )r°  r3   rÙ   r“   rà  s        r:   rÿ  rÿ  ›  s   € Ø�7‰7�4¨zˆ7ÐQÐQr=   c                 ó`   • U " U0 UD6nUR                  5        H  u  pV[        XEU5        M     U$ rh   )r~   r   )rl   rm   rn   r‡   r°  rˆ   r‰   s          r:   rŸ  rŸ  Ÿ  s6   € Ù	ˆdÐ	�fÑ	€BØ+×1Ñ1Ö3ÑˆÜ�˜+Ö&ñ 4à€Ir=   )Yr  rÈ  ru   Úcollectionsr   Úcollections.abcr   r   Ú
contextlibr   Úcopyr   Údataclassesr   r	   r
   Ú	itertoolsr   Úpathlibr   r   Útypingr   r   r   Úurllib.parser   r   ÚfsspecÚhttpxÚfsspec.callbacksr   r   r   Úfsspec.configr   Úfsspec.utilsr   rT   r   Ú_commit_apir   r   Úerrorsr   r   r   r   r    Úfile_downloadr!   r"   Úhf_apir#   r$   r%   r&   r'   r(   r)   Úutilsr*   r+   r,   r-   Úutils.insecure_hashlibr.   r0   rH   r^   r{   ÚAbstractFileSystemrc   rE   re   rŽ   ÚspecÚAbstractBufferedFilerÚ   rÛ   rD   rY   r
  r«  r¾   r¨  rÿ  rŸ  Úhffsr>   r=   r:   Ú<module>r*     s«  ðÜ 	Û Û Ý ß .Ý  Ý ß (Ý Ý ß 'ß 'Ñ 'ß 'ã Û ß JÑ JÝ &Ý #å ß C÷õ ÷ 0ß v× vÑ vß \Ó \Ý 'ð ÷6ð 6ó ð6ð ô&Ð)Aó &ó ð&ð0 ô0Ð%=ó 0ó ð0ñ ˜×2Ñ2Ó3€ˆcÓ 3ô2ˆlô 2ôjY
�6×,Ñ,¸ò Y
ôx H&�v—{‘{×7Ñ7ô H&ôVR;˜VŸ[™[×=Ñ=ô R;ðj]˜Cð ] Cô ]ð�#ð ˜#ô ð* ð *¨)°dÑ*:ð *¸xô *ðRˆ|ð R 3ð R¨cð R¸sð RÐPSô Ròñ ƒ~�r=   