
    g              
       f   d dl Z 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 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(ZF e jG        e;e jH        )          D ]d\  ZIZJ eKej:        eId          ZLeLKeLjM        DeLjM        ZNeNO                    d*d+          ZNeNO                    d,d-          ZNd.eI d/d0z   eNz   eJ_M        edS )1    N)deque)	dataclassfield)datetime)chain)Path)AnyDict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     Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/huggingface_hub/hf_file_system.py	unresolvez"HfFileSystemResolvedPath.unresolve5   s    599$."MMPTP\\	 	BJJ$"4JJt7HJJQQRU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         __NNNLLLMMM $)5E#B#B#BM8C=BBBB3 B B B B B Br=   r'   c                   V    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 fd!Z 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HfFileSystemaF  
    Access a remote Hugging Face Hub repository as if were a local file system.

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

    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)
    ```
    r1   hfNendpointtokenrI   rJ   c                     t                      j        |i | |pt          j        | _        || _        t          ||          | _        i | _        d S )NrH   )	super__init__r   ENDPOINTrI   rJ   r    _api_repo_and_revision_exists_cache)r9   rI   rJ   argsstorage_options	__class__s        r;   rM   zHfFileSystem.__init__b   s^     	$2/222 6I$6
85999	  	,,,r=   r(   r)   r*   r/   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)rP   rO   	repo_infor   HF_HUB_ETAG_TIMEOUTr   r#   r   )r9   r(   r)   r*   es        r;   _repo_and_revision_existz%HfFileSystem._repo_and_revision_existt   sT    w)1UUU^	##h)YMj $    Xb4i(5STS]4i$5OPP ,->? \ \ \W\^_W_4i(5STSXZ[S[4i$5OPPPPPP( ^ ^ ^W\^_W_4i(5STS]4i$5OPPPPPP^ 3Y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 rt                              |          }|[|d |                                fv rCt                              d
|                              d          }|                                }n|                    dd          \  }}nd
} |t!          |          |          }|                     |||          \  }	}
|	st%          ||
           nd }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 )Nrevision_in_pathr*   r/   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4P4P$-8H - -jr - - -  
 ,Or=   z0Access to repositories lists is not implemented.r3   r   r   r2   r1      )r.   )r   rB   _strip_protocolNotImplementedErrorsplitr   r4   valuesREPO_TYPES_MAPPINGREPO_TYPE_MODELcountSPECIAL_REFS_REVISION_REGEXsearchgroupsublstripr   rY   _raise_file_not_foundjoin
isinstancer   r#   r7   r'   )r9   rZ   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   	&sm	7?}	c]	 	 	 	 ##D)) 
	2%&XYYYZZ__Q#%)J)Q)Q)S)SSS$)*\]]]"jja00OIt!4Y?II!1I::c??Qd{{,0JJsA,>,>))***7>>?OPPE(X$9N-N-N'B'F'FrK['\'\'c'cdg'h'h+0;;==((9I9O9OPSUV9W9W6(,,#%L@@IYAZAZ\dee/3/L/LYX_ai/j/j,'. 5)$444#' ),$**S//"1"2E)F)F&.1hhtzz#qrr7J.K.K+,0JJsOOA,>)14$**S//!"":M1N1N.0:/3/L/LYX_ai/j/j,'. 9!#(?AR'STT 9";'E595R5RS\^ego5p5p2/6 =1$<<<-dC888GLd{{,0JJsA,>,>))@@IYAZAZ\dee#' )-)F)FyRY[c)d)d&#Q* ^)*\]]]'3889S'	7Hlbrssssr=   c                 ,   |s4| j                                          | j                                         d S |                     |                                          }|r4| j                             |d            |                     |          }|2d S d S N)dircacheclearrP   rx   r<   pop_parentr9   rZ   s     r;   invalidate_cachezHfFileSystem.invalidate_cache   s     	*M!!!06688888$$T**4466D *!!$---||D))  * * * * *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   )rb   HfFileSystemStreamFiler   )r9   rZ   r   r*   r   kwargss         r;   _openzHfFileSystem._open   sk     $;;%&WXXX??)$t4(_ittmsttt#D$nTHYcnngmnnnr=   c                 D   |                      ||          }| j                            |j        |j        | j        |j        |j        |                    d          |                    d                     | 	                    |
                                           d S )Nr*   commit_messagecommit_description)r+   r)   rJ   r(   r*   r   r   rZ   )rx   rO   delete_filer+   r)   rJ   r(   r*   r5   r   r<   )r9   rZ   r*   r   resolved_paths        r;   _rmzHfFileSystem._rm   s    ))$)BB	&3!)*#-"+!::&677%zz*>?? 	 	
 	
 	
 	=#:#:#<#<=====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 )Nr   )r   r   r*   c                 n    g | ]1}                     |                              |          j        2S rD   )isdirrx   r+   ).0rZ   r9   s     r;   
<listcomp>z#HfFileSystem.rm.<locals>.<listcomp>  s?    hhh$W[WaWabfWgWgh**400=hhhr=   c                 .    g | ]}t          |           S ))r+   )r   )r   r+   s     r;   r   z#HfFileSystem.rm.<locals>.<listcomp>  s$    iii<+FFFiiir=   zDelete  zrecursively r1   zup to depth r   r   )r)   r(   rJ   
operationsr*   r   r   r   )rx   expand_pathrO   create_commitr)   r(   rJ   r*   r5   r   r<   )r9   rZ   r   r   r*   r   r   pathspaths_in_repor   r   s   `          r;   rmzHfFileSystem.rm   s1    ))$)BB  XX` aahhhh%hhhii[hiii
*4***I=..2=8L44444RTT	!)#-*!"+!::&6GG%zz*>?? 	  	
 	
 	
 	=#:#:#<#<=====r=   Tdetailrefreshc                    |                      |          }|                                d|i|}	  | 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 )z!List the contents of a directory.r   expand_info)r   r*   Nc                 ,    g | ]}|d          k    |S namerD   r   orZ   s     r;   r   z#HfFileSystem.ls.<locals>.<listcomp>"  s'    777QvY$%6%61%6%6%6r=   r   c                     g | ]
}|d          S r   rD   r   r   s     r;   r   z#HfFileSystem.ls.<locals>.<listcomp>%  s    ":":":1V9":":":r=   )rx   r<   _ls_treer   r+   rm   r~   len)r9   rZ   r   r   r*   r   r   outs    `      r;   lszHfFileSystem.ls  s!    ))$)BB&&((262		2$-SgSSFSSCC! 	2 	2 	2 - 2%dD111$-T 2 2aGhaaZ`aaC7777c777C3xx1}}%dD111	2 :ss":":c":":"::s   A A6B?>B?r   c           	                                ||          }|                                }t          |j        |j        |j        d|j                                                  }g }| j        v r|s j        |         }	|                    |	           g }
|rt          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   r1   r+   r.   c                 *    g | ]}|d          dk    |S type	directoryrD   r   	path_infos     r;   r   z)HfFileSystem._ls_tree.<locals>.<listcomp>B  s(    fff9YvEVZeEeEeYEeEeEer=   r   c                 *    g | ]}|d          dk    |S r   rD   r   s     r;   r   z)HfFileSystem._ls_tree.<locals>.<listcomp>L  s)    nnn9YW]M^bmMmMmYMmMmMmr=   c                 V    g | ]%}|d          
                     |d                   &S )last_commitNr   )r~   )r   r   r9   s     r;   r   z)HfFileSystem._ls_tree.<locals>.<listcomp>R  s3    $f$f$fQ}M]MeT\\!F)%<%<MeMeMer=   r3   c                 P    g | ]"}|d                               dz              |#S )r   r3   )
startswith)r   r   common_paths     r;   r   z)HfFileSystem._ls_tree.<locals>.<listcomp>`  s6    UUUQQvY-A-A+PSBS-T-TUqUUUr=   T)r   r   r*   r   )r   expandr*   r(   filer   sizer   blob_idlfsr   securityr   r   r   r   r   tree_idr   )"rx   r<   r'   r(   r)   r*   r.   r{   extendr   popleftappendosrZ   commonprefixendswithr   r6   r~   r   r}   r   rO   list_repo_treer+   ro   r"   r   r   r   r   r   r   
setdefault)r9   rZ   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JJ()))#%   !&ff0Afff! ! $ 	,4466H't}<<,33HV4DEEEE,0M(6:J,K)

#4555%,,nn8Innn   $ 	 !# g$f$f$f$fc$f$f$f! 2  HY  !# 4 45IL]5] ^ ^ %--c225$	11$.BDU(V(VVV "((--- m44  VUUU#UUU#'= = =K"--kC.?@@ =))+t<<<!!+t444

MM#"+ $!)$/ "     9++%*#"&/'1 ,  D " , ,	i22  )C). @ ) &#,#4(}'0'<$-$6' 'OO !*C). @ ! +#,#4'0'<' 'O #ll?6+BCC((b99@@QQQ

?++++
r=   c              /      K   d|                     dd          i|}|                     ||                     d                                                    } t                      j        |g|R i |E d {V  d S Nr   r   Fr*   r   )r5   rx   r<   rL   walk)r9   rZ   rQ   r   rS   s       r;   r   zHfFileSystem.walk  s      He!<!<GG  

:0F0F GGQQSS577<6t666v66666666666r=   c                     d|                     dd          i|}|                     ||                     d                                                    } t                      j        |fi |S r   )r5   rx   r<   rL   glob)r9   rZ   r   rS   s      r;   r   zHfFileSystem.glob  sn    He!<!<GG  

:0F0F GGQQSSuww|D++F+++r=   withdirsc           	      
   |r  t                      j        |f|||||d|S |                     ||          }|                                }d|i|}	  | 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 )N)r   r   r   r   r*   r   r   T)r   r   r*   c                 *    g | ]}|d          dk    |S r   rD   r   s     r;   r   z%HfFileSystem.find.<locals>.<listcomp>  s&    BBBQ6k)A)Aq)A)A)Ar=   r*   r   r   c                      i | ]}|d          |S r   rD   r   s     r;   
<dictcomp>z%HfFileSystem.find.<locals>.<dictcomp>  s    ---A1V9a---r=   r   c                 "    i | ]}||         S rD   rD   )r   r   r   s     r;   r   z%HfFileSystem.find.<locals>.<dictcomp>  s    666D#d)666r=   )	rL   findrx   r<   r   r*   infor   sorted)r9   rZ   r   r   r   r   r*   r   r   r   namesr   rS   s              @r;   r   zHfFileSystem.find  s     	577<'(6SZem qw   ))$)BB&&((262	.$-qgP]PfqqjpqqC  UBB#BBB &DIdVV]5KVvVV	+4V+<+K+KykC''QT-----CC " 	 	 	ty;;;F;;FCvMMRj	 s 	7L66666666s   B3 3+C! C!path1path2c                    |                      ||          }|                      ||          }|j        |j        k    o|j        |j        k    }|rd| 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 )Nr   zCopy z to r   r   r1   )src_path_in_repor+   src_revision)r)   r(   r*   r   r   r   r   path_or_fileobjr+   r)   rJ   r(   r*   r   r   r   )rx   r(   r)   rO   r   r*   r5   r   r+   openreadupload_filerJ   r   r<   )r9   r   r   r*   r   resolved_path1resolved_path2	same_repor   fcontents              r;   cp_filezHfFileSystem.cp_file  s:   **58*DD**58*DD $(@@u^E[_m_uEu 	  	7U7777NI##&.(2'0%zz*:NKK#)::.BB#G#G')7)D%3%@%3%<   $     5$1HII #Q&&((# # # # # # # # # # # # # # #7U7777NI!! '+8&.j(2'0%zz*:NKK#)::.B#C#C " 	 	 	 	>#;#;#=#=>>>>#;#;#=#=>>>>>s   .DDDc                 :     | j         |fi |}|d         d         S )Nr   dater   )r9   rZ   r   r   s       r;   modifiedzHfFileSystem.modified  s+    ty((((M"6**r=   c                 h   |                      |          }|                                |                    dd          }|j        sdddd|rZ| j                            |j        |j        |j                  d         }i d t          |j
        |j        |j        	          d
nd |                               }|s || j        vr|                     |d           || 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 )Nr   r   Tr   r   )r   r   r   )r(   r*   )oidtitler   )r   r   Fr   c                 ,    g | ]}|d          k    |S r   rD   r   s     r;   r   z%HfFileSystem.info.<locals>.<listcomp>  s'    SSSa6dARARARARARr=   r   )r   r*   r(   r1   r   r3   r   r   r   c                 "    i | ]}||         S rD   rD   )r   kr   s     r;   r   z%HfFileSystem.info.<locals>.<dictcomp>8  s    GGG1c!fGGGr=   )rx   r<   r5   r+   rO   list_repo_commitsr)   r(   r*   r!   	commit_idr   
created_atr~   r{   r   rm   get_paths_infor'   r.   ro   r"   rZ   r   r   r   r   r   r   )r9   rZ   r   r*   r   r   r   r   r   out1
paths_infor   r   r   s    `           @r;   r   zHfFileSystem.info  s   ))$)BB&&((jj4
 
 ) C	H # C
  
"i99!)]5LWdWm :  ##1'19JQ\Qg$ $ $   C,,t,,K 8;dm#C#C777dm++SSSS4=#=SSS 6)$5551g %H#+++#+#mBTB\!Y55!)!.&*3+5 6  
 " 6)$555&qM	4!+!)!*!#"/"=   )++  i22  )C). @ ) &#,#4(}'0'<$-$6 CC !*C). @ ! +#,#4'0'< C # HGGGG.FGGGC
r=   c                 @    	  | j         |fi i |ddi dS #  Y dS xY w)z!Is there a file at the given pathr   FTr   )r9   rZ   r   s      r;   existszHfFileSystem.exists<  sF    	DId??>>>>???4	55s    c                 h    	 |                      |d          d         dk    S # t          $ r Y dS w xY w)zIs this entry directory-like?Fr  r   r   )r   OSErrorr   s     r;   r   zHfFileSystem.isdirE  sI    	99Tu955f=LL 	 	 	55	s    # 
11c                 V    	 |                      |d          d         dk    S #  Y dS xY w)zIs this entry file-like?Fr  r   r   r   r   s     r;   isfilezHfFileSystem.isfileL  s7    	99Tu955f=GG	55s    # (c                     |                      |          }t          |j        |j        |j        |j        | j                  }|                     |          r|                    ddd          }|S )z"Get the HTTP URL of the given path)r(   r*   rI   z	/resolve/z/tree/r   )	rx   r   r)   r+   r(   r*   rI   r   replace)r9   rZ   r   urls       r;   r  zHfFileSystem.urlS  sv    ))$//!&#-"+]
 
 
 ::d 	8++k8Q77C
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)z!Copy single remote file to local.r*   r   )callbackoutfileT)exist_okNFwbr   r   r)   r*   filenamer(   rI   )r  	temp_filedisplayed_filenameexpected_sizeresume_sizeheaders	_tqdm_bar)"r5   setkeysro   r   r   r   rL   get_filer   r   r   makedirsrB   r   rZ   dirnamer   tellrx   r   set_sizer   r   r)   r*   r+   r(   rI   rO   _build_hf_headerstqdmseekclose)r9   rpathlpathr  r  r   r*   unhandled_kwargs
close_fileinitial_posresolve_remote_pathr  rS   s               r;   r#  zHfFileSystem.get_filea  sY   ::j))v{{}}--<(\<$@AA 	`SIYEZEZ]^E^E^ $577#E5_8W__X^___ e 	GGZZ 	K----4ec4[)) 	?K..>>>> 
?5$''GJllnn #///II		%(	;;FC-(((	 /7090=1;!]   "#(+	3355+5h+M+MW(--SW    LL%%%      z   s   B	H. .Ic                      t          d          )zA 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.rb   r9   s    r;   transactionzHfFileSystem.transaction  s     ""LMMMr=   c                      t          d          )z@Begin write transaction for deferring files, non-context versionr3  r4  r5  s    r;   start_transactionzHfFileSystem.start_transaction  s     ""LMMMr=   rz   )r   NN)FNN)TFN)FFNT)NFFFN)FNr/   N)+r>   r?   r@   rA   root_markerprotocolr   rB   r   boolrM   r   	ExceptionrY   r'   rx   r   intr   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r  r   r  r  r   r#  propertyr6  r8  __classcell__rS   s   @r;   rF   rF   ?   s3        > KH
 #'(,	   3- T3_%	     $TT'*T6>smT	tXi((	)T T T T&Jt Jt Jt JtIa Jt Jt Jt JtX* *Xc] *d * * * * "&$(o oo o 3-	o
 SMo 
o o o o> > >x} >$ > > > >   "&"&> >> > 3-	>
 3-> 
> > > >8 `d; ;;!%;7;;OWX[};	eCc3h'(	); ; ; ;,  "& f ff f 	f
 3-f f f f fP7 7 7 7 7, , , , , #'"&%7 %7%7 3-%7 	%7
 %7 %7 3-%7 
tCy$sDcN233	4%7 %7 %7 %7 %7 %7N'? '?S '? '? '?[_ '? '? '? '?R+S +x + + + +K K Kt Kx} Kbfgjlogobp K K K KZ            /@ 2  2  2  2  2  2  2 h N N XNN N N N N N Nr=   rF   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fsrZ   r*   c                    	 |                     ||          | _        n># t          $ r1}d|                    dd          v rt          | d          | d }~ww xY w|                    dd          dk    r3|                    | j                                        d          | _         t                      j        || j                                        fi | |  d S )	Nr   wr   r1   B.
Make sure the repository and revision exist before writing data.r   Fr  )	rx   r   FileNotFoundErrorr5   r   r<   detailsrL   rM   )r9   rC  rZ   r*   r   rX   rS   s         r;   rM   zHfFileSystemFile.__init__  s    	!#!I!ID  	 	 	fjj,,,,']]]  	 ::fd##t++774#5#?#?#A#Au7UUDLT/99;;FFvFFFs     
A,AAc                 h    t          | d          sd S t                                                      S Nr   hasattrrL   __del__r9   rS   s    r;   rM  zHfFileSystemFile.__del__  .    t_-- 	Fww   r=   startendr/   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_codesrU   )rC  rO   r(  r   r   r)   r*   r+   r(   rI   r%   r   HF_HUB_DOWNLOAD_TIMEOUTr$   r   )r9   rP  rQ  r  r  rs         r;   _fetch_rangezHfFileSystemFile._fetch_range  s    /e//cAg//
gl,,..
 &.'0'4(2W%
 
 
 "65
 
 
 	Ayr=   c                 <    t          j        dd          | _        d S )Nzhffs-F)prefixdelete)tempfileNamedTemporaryFiler  r5  s    r;   _initiate_uploadz!HfFileSystemFile._initiate_upload  s    !4GE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+  rC  rO   r   r   r   r+   r)   rJ   r(   r*   r   r5   r   remover   r<   )r9   ra  blocks      r;   _upload_chunkzHfFileSystemFile._upload_chunk  s1     ""U### 	N  """GL$$ $ 3!/<*2gm,6+4#{/?@@#';??3G#H#H % 	 	 	 Idn)***G$$'1133 %     	 	r=   r   c                    | j         dk    ra||dk    rY| j        dk    rN| j                            | j        dd          5 }|                                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   locrC  r   rZ   r   rL   )r9   lengthr   rS   s      r;   r   zHfFileSystemFile.read  s     9&.FbLLdhRSmmdi!<<  vvxx                               ww||F###s   A##A'*A'c                 @    | j                             | j                  S rz   rC  r  rZ   r5  s    r;   r  zHfFileSystemFile.url      w{{49%%%r=   rz   r9  )Fr   )r>   r?   r@   rF   rB   r   rM   rM  r>  bytesrZ  r`  r<  rg  r   r  r@  rA  s   @r;   r   r     s        < s hsm      ! ! ! ! !# 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   nonerC  rZ   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 rq  z?HfFileSystemStreamFile only supports cache_type='none' but got rE  z;HfFileSystemStreamFile only supports reading but got mode=''r   r   r1   rF  )r   r   r   r   rr  )
r^   rx   r   rG  r5   r<   rH  rL   rM   response)
r9   rC  rZ   r   r*   r   rr  r   rX   rS   s
            r;   rM   zHfFileSystemStreamFile.__init__  su    ??fZdffgggk_ikklll$;;b[_bbbccc	!#!I!ID  	 	 	fjj,,,,']]]  -,,,,	 !% 2 < < > >MM",,..	
59j]g	
 	
kq	
 	
 	
 -1s   
A' '
B&1+B!!B&ri  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)ri  r^   )r9   ri  rw  s      r;   r*  zHfFileSystemStreamFile.seek  s?    !88!F$(??v{{F8999r=   r   rj  c           	         |dk    r|fnd}| j         | j         j                                        rt          | 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   rD   r  rU  rV  T)r  rW  streamrU   Rangez	bytes=%d-)rv  rawisclosedr   r   r)   r*   r+   r(   rC  rI   r%   rO   r(  r   rX  r$   r   r=  r+  ri  r   )r9   rj  	read_argsr  r   s        r;   r   zHfFileSystemStreamFile.read"  s   !'1VII"	= DM$5$>$>$@$@ *2+4+8,6)  C )6688&:!9  DM  ...	($-#()4CC 	 	 	M!!! *2+4+8,6)  C ) +"8]DGL<Z<Z<\<\]&:!9  DM  ...,dm',i8   ##%%% +	2 	CHH
s+   C" "C
G--GG-%G''G-,G-r/   c                 @    | j                             | j                  S rz   rl  r5  s    r;   r  zHfFileSystemStreamFile.urlS  rm  r=   c                 h    t          | d          sd S t                                                      S rJ  rK  rN  s    r;   rM  zHfFileSystemStreamFile.__del__V  rO  r=   c                 Z    t           | j        | j        | j        | j        | j        j        ffS rz   )reopenrC  rZ   r   	blocksizecacher   r5  s    r;   
__reduce__z!HfFileSystemStreamFile.__reduce__\  s$    DIt~tzWWWr=   )r   Nr   rq  )r   rn  )r>   r?   r@   rF   rB   r   r>  rM   r*  r   r  rM  r  r@  rA  s   @r;   r   r     s        
 "&    	
 3-       >: : :S : : : :/ /3 / / / /b&S & & & &! ! ! ! !X X X X X X Xr=   r   r*   r/   c                 X    t                               |           r| nt          |           S rz   )rh   rp   
safe_quoter   s    r;   r8   r8   `  s(    288BB\88
S[H\H\\r=   sc                 $    t          | d          S )Nr1   )safe)r   )r  s    r;   r  r  d  s    r=   rZ   rr   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))ro   r   r   r#   rG  )rZ   rr   msgs      r;   rm   rm   h  s~    
C#.// 0...	C.	/	/ 0,,,	C*	+	+ 0///
C
 
 c)r=   rC  r   r   rr  c                 4    |                      ||||          S )Nru  )r   )rC  rZ   r   r   rr  s        r;   r  r  s  s    774dzj7QQQr=   )	predicatezParameters
        ----------
zArgs:
zReturns
        -------
zReturn:
z
_Docstring taken from [fsspec documentation](https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem.z)._z

)Pinspectr   rer^  collectionsr   dataclassesr   r   r   	itertoolsr   pathlibr   typingr	   r
   r   r   r   r   r   urllib.parser   r   fsspecfsspec.callbacksr   r   r   fsspec.utilsr   requestsr   r1   r   _commit_apir   r   errorsr   r   r   file_downloadr   r   hf_apir    r!   r"   utilsr#   r$   r%   compileVERBOSErh   r'   AbstractFileSystemrF   specAbstractBufferedFiler   r   rB   r8   r  r=  rm   r>  r  
getmembers
isfunctionr   functiongetattrparentrA   
parent_docr  rD   r=   r;   <module>r     se    				 				        ( ( ( ( ( ( ( (                   D D D D D D D D D D D D D D D D D D ' ' ' ' ' ' ' '  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          )bj
 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Q& Q& Q& Q& Q&v{7 Q& Q& Q&h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
 )g(ASTTT 
 
ND(WV.d;;Ffn8^
''(JIVV
''(DkRR
M DHM M M 	
  	
 
r=   