o
    ̳iA<                     @   s  d dl Z d dlZd dlZ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Zd dlZd dlm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 d dlZd dlmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 dZ7dZ8dZ9dZ:dZ;da<dZ=e"j>de"j?de"j@diZAdeBfddZCded fd d!ZDd"ejEddfd#d$ZFeGeHZIdefd%d&ZJ	d=dd'd"ejEd(eBd)e2d*eBdB d+eKdeKfd,d-ZLd"ejEdeKfd.d/ZMd"ejEd(eBd0eNd1eNdB ddf
d2d3ZOd=d"ejEd4e2d*eBdB deKfd5d6ZPd7ZQd8ZRG d9d: d:ZSG d;d< d<ZTdS )>    N)Callable)datetimetimezone)urlparse)KaggleClient)	KaggleEnvget_envis_in_kaggle_notebook)KaggleHttpClient)parse)HTTPBasicAuth)tqdm)delete_from_cacheget_cached_archive_path)get_kaggle_credentials)KaggleDatasetAdapter)"KAGGLE_DATA_PROXY_URL_ENV_VAR_NAMEis_in_colab_notebookread_kaggle_build_datesearch_lib_in_call_stack)BackendErrorColabEnvironmentErrorCredentialErrorDataCorruptionErrorKaggleEnvironmentErrorNotFoundErrorcolab_raise_for_status)CompetitionHandleResourceHandle)get_md5_checksum_from_responseto_b64_digestupdate_hash_from_filei         zAccept-Rangesi  Fz}The X-Goog-Hash header indicated a MD5 checksum of:

  {}

but the actual MD5 checksum of the downloaded contents was:

  {}
hugging_face_data_loaderpandas_data_loaderpolars_data_loaderreturnc            	      C   s  dt j g} dD ]}t|}|dur| |  nq	t D ]9}|jdkr'qt|j}|r:t	|dr:|j
ds;qd|jjv rG|jjd nd}|rX|tv rX| t|   nqt rht }| d|  nt rtd	}td
rwdnd}| d| |  d| S )zxIdentifies the user agent based on available system information.

    Returns:
        str: user agent information.
    z
kagglehub/)	keras_hub	keras_nlpkeras_cvkeras	torchtuneNdataset_load__name__zkagglehub.datasetsadapterzkkb/COLAB_RELEASE_TAGTBE_RUNTIME_ADDRz-managedz
-unmanagedzcolab/ )	kagglehub__version__r   appendinspectstackfunction	getmoduleframehasattrr.   
startswithf_localsADAPTER_TO_USER_AGENT_MAPr	   r   r   osgetenvjoin)	user_agentsliblib_info
frame_infomoduler/   
build_date	colab_tagruntime_suffix rJ   E/home/ubuntu/.local/lib/python3.10/site-packages/kagglehub/clients.pyget_user_agentG   s4   



rL   ).Nc                   C   s   t S N)_check_response_versionrJ   rJ   rJ   rK   get_response_processorn   s   rO   responsec                 C   s\   t rd S | jd}|r*ttj}t|}||kr,tjd| d| d da d S d S d S )NzX-Kaggle-HubVersionzMWarning: Looks like you're using an outdated `kagglehub` version (installed: z4), please consider upgrading to the latest version ()T)	already_printed_version_warningheadersgetr   r3   r4   sysstdoutwrite)rP   latest_version_strcurrent_versionlatest_versionrJ   rJ   rK   rN   r   s"   
rN   c               	   C   sR   t  } t }|tjkrdnd}| st||t dS t||| j| j| jt t	 dS )NTF)envverbose
user_agent)r[   r\   usernamepassword	api_tokenr]   response_processor)
r   r   r   TESTr   rL   r^   keyapi_keyrO   )credentialsr[   r\   rJ   rJ   rK   build_kaggle_client   s$   rf   )extract_auto_compressed_fileout_fileresource_handlecached_pathrg   c             
   C   sB  d| j v rt| j d nd}d}t|trt| ||sdS t| }|r't nd}t| r|rt	j
|rt	j
|}t|| ||krOtd| d dS td| d	||  d
 tj| jdttfdd| did}	td| d| d| d t|	|||| W d   n1 sw   Y  ntd| d t| |||| |rt|}
|
|krt	| tt||
t|j
dd }t| jj
dd }|r| d|krt|rtd| d | d}t	|| t |d}|!|t	j
"| W d   n	1 sw   Y  t	| dS )z
    Issues a call to kaggle api and downloads files. For competition downloads,
    call may return early if local cache is newer than the last time the file was modified.

    Returns:
    bool:  If downloading remote was necessary
    zContent-LengthNr   FzDownload already complete (z bytes).TzResuming download from z bytes (z bytes left)...Rangezbytes=-)streamtimeoutrS   zResuming download to z (/z) bytes left.zDownloading to z...z.zipzExtracting zip of r)#rS   int
isinstancer   _download_neededr   hashlibmd5_is_resumabler?   pathisfilegetsizer!   loggerinforequestsrT   urlDEFAULT_CONNECT_TIMEOUTDEFAULT_READ_TIMEOUT_download_filer    remover   _CHECKSUM_MISMATCH_MSG_TEMPLATEformatr   splitzipfile
is_zipfilerenameZipFileextractdirname)rP   rh   ri   rj   rg   
total_size	size_readexpected_md5_hashhash_objectresumed_responseactual_md5_hashexpected_downloaded_file_nameactual_downloaded_file_namerenamed_auto_compressed_pathfrJ   rJ   rK   download_file   s\   
	


r   c                 C   s   t | jv o| jt  dkS )Nbytes)ACCEPT_RANGE_HTTP_HEADERrS   )rP   rJ   rJ   rK   rw      s   rw   r   r   c           	   	   C   s&  |dkrdnd}|d urgt ||ddddH}t||*}| tD ]}|| |r/|| t||t }|t| q!W d    n1 sHw   Y  W d    d S W d    d S 1 s`w   Y  d S t||}| tD ]}|| |r|| qrW d    d S 1 sw   Y  d S )Nr   abwbBTi   )totalinitialunit
unit_scaleunit_divisor)r   openiter_content
CHUNK_SIZErW   updateminlen)	rP   rh   r   r   r   	open_modeprogress_barr   chunkrJ   rJ   rK   r      s.   

"	

"r   hc           	      C   s   |sdS | j d}|du r$t|| t|}tjtj|dd dS t	| j d dj
tjd}tj|}|rdtjtj|tjd}||k}|rbt|| t|}tjtj|dd dS dS t|| t|}tjtj|dd dS )	z|
    Determine if a download is needed based on timestamp and cached path.

    Returns:
        bool: download needed.
    TzLast-ModifiedN)exist_okz%a, %d %b %Y %H:%M:%S %Z)tzinfo)tzF)rS   rT   r   r   r?   makedirsrx   r   r   strptimereplacer   utcexistsfromtimestampgetmtime)	rP   r   rj   last_modifiedarchive_pathremote_datefile_exists
local_datedownload_neededrJ   rJ   rK   rt     s2   


rt   KAGGLE_USER_SECRETS_TOKENKAGGLE_DATA_PROXY_TOKENc                	   @   sD   e Zd ZdZdddZeeffdedede	e
e
f defd	d
ZdS )KaggleJwtClientz/kaggle-jwt-handler/r'   Nc                 C   s   t t| _| jd u rdt d}t|t t}|d u r'dt }t|t t}|d u r9dt }t|dd| |d| _d S )NThe  should be set.zOA JWT Token is required to call Kaggle, but none found in environment variable zVA Data Proxy Token is required to call Kaggle, but none found in environment variable application/jsonzBearer )Content-typezX-Kaggle-AuthorizationzX-KAGGLE-PROXY-DATA)	r?   r@   r   endpointr   KAGGLE_JWT_TOKEN_ENV_VAR_NAMEr   $KAGGLE_DATA_PROXY_TOKEN_ENV_VAR_NAMErS   )selfmsg	jwt_tokendata_proxy_tokenrJ   rJ   rK   __init__:  s,   


zKaggleJwtClient.__init__request_namedatarn   c                 C   s   | j  tj | }tj|| jtt|d|d6}|	  | }d|vr-d}t
||d s;d|j}t
|d|vrEd}t
||d W  d    S 1 sSw   Y  d S )Nzutf-8)rS   r   rn   wasSuccessfulz+'wasSuccessful' field missing from responsezPOST failed with: resultz$'result' field missing from response)r   r   	BASE_PATHr}   postrS   r   jsondumpsraise_for_statusr   text)r   r   r   rn   r~   rP   json_responser   rJ   rJ   rK   r   U  s*   $zKaggleJwtClient.postr'   N)r.   
__module____qualname__r   r   r   r   strdicttuplefloatr   rJ   rJ   rJ   rK   r   7  s    

r   c                
   @   sl   e Zd ZdZdZdZdZdZdZdZ	ddd	Z
dd
edededB dedB fddZdejjdB fddZdS )ColabClientz/kagglehub/models/is_supportedz /kagglehub/datasets/is_supportedz/kagglehub/models/mountz/kagglehub/datasets/mountr1   r'   Nc                 C   sD   t | j| _| jd u rd| j d}t|t | _ddi| _d S )Nr   r   r   r   )r?   r@   TBE_RUNTIME_ADDR_ENV_VAR_NAMEr   r   r   re   rS   )r   r   rJ   rJ   rK   r   {  s   
zColabClient.__init__r   handle_pathri   c                 C   s   d| j  | }tj|t||  | jttfd$}|j	t
kr#t t|| |jr6| W  d    S W d    d S 1 sAw   Y  d S )Nzhttp://)r   authrS   rn   )r   r}   r   r   r   	_get_authrS   r   r   status_codeHTTP_STATUS_404r   r   r   )r   r   r   ri   r~   rP   rJ   rJ   rK   r     s(   



zColabClient.postc                 C   sB   | j r| j jr| j jrt| j j| j jS | j jrt| j jS d S rM   )re   r^   rc   r   rd   r
   
BearerAuth)r   rJ   rJ   rK   r     s   zColabClient._get_authr   rM   )r.   r   r   IS_SUPPORTED_PATHIS_MODEL_SUPPORTED_PATHIS_DATASET_SUPPORTED_PATH
MOUNT_PATHMODEL_MOUNT_PATHDATASET_MOUNT_PATHr   r   r   r   r   r   r}   r   AuthBaser   rJ   rJ   rJ   rK   r   p  s    
$	r   rM   )Uru   r6   r   loggingr?   rU   r   collections.abcr   r   r   urllib.parser   r}   requests.authkagglesdk.kaggle_clientr   kagglesdk.kaggle_envr   r   r	   kagglesdk.kaggle_http_clientr
   packaging.versionr   r   r   r3   kagglehub.cacher   r   kagglehub.configr   kagglehub.datasets_enumsr   kagglehub.envr   r   r   r   kagglehub.exceptionsr   r   r   r   r   r   r   kagglehub.handler   r   kagglehub.integrityr   r    r!   r   r   r   r   r   rR   r   HUGGING_FACEPANDASPOLARSr>   r   rL   rO   ResponserN   	getLoggerr.   r{   rf   boolr   rw   rr   r   rt   r   r   r   r   rJ   rJ   rJ   rK   <module>   s    $	'

J
"/9