o
    ̳i                     @   s   d dl Z d dlZd dl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 d dlmZ d dlmZ d dlmZ d	Zd
Ze eZG dd dee ZG dd dee ZdededB fddZdededB fddZdS )    N)ColabClient)is_colab_cache_disabled)BackendErrorNotFoundError)DatasetHandleModelHandle)EXTRA_CONSOLE_BLOCK)PackageScope)ResolverCOLAB_CACHE_MOUNT_FOLDERz/kaggle/inputc                   @   `   e Zd ZdedefddZ	ddddded	edB d
edB dedB deeedB f f
ddZ	dS )ModelColabCacheResolverhandlereturnc                 O   sr   t jtjvs	t rdS t  }|j|j|j|jd}t	|}|r#||d< z|
|t j| W dS  ty8   Y dS w )NFownermodel	framework	variationversionT)r   TBE_RUNTIME_ADDR_ENV_VAR_NAMEosenvironr   r   r   r   r   _get_model_versionpostIS_MODEL_SUPPORTED_PATHr   selfr   ___
api_clientdatar    r"   R/home/ubuntu/.local/lib/python3.10/site-packages/kagglehub/colab_cache_resolver.pyis_supported   s"   z$ModelColabCacheResolver.is_supportedNFforce_download
output_dirhpathr&   r'   c                C   s:  |rt jdi td |rt jdi td t }|j|j|j|jd}t|}|r.||d< |	|tj
|}|d u r@d}	t|	d|vrJd}
t|
ttt}| d	|d  }tj|sht d
| d tj|sytd tj|rn|r| d	| }tj|sd| d| d}
t|
||fS ||fS )NRIgnoring `output_dir` argument when running inside the Colab notebook environment.extraVIgnoring `force_download` argument when running inside the Colab notebook environment.r   r   +No response received or response was empty.slug"'slug' field missing from response/Mounting files to ...   'z^' is not present in the model files. You can access the other files of the attached model at ')loggerinfor   r   r   r   r   r   r   r   MODEL_MOUNT_PATH
ValueErrorr   r   getenv%COLAB_CACHE_MOUNT_FOLDER_ENV_VAR_NAME DEFAULT_COLAB_CACHE_MOUNT_FOLDERr)   existstimesleepr   r(   r)   r&   r'   r    r!   r   responseno_responsemsgbase_mount_pathcached_pathcached_filepathr"   r"   r#   _resolve+   sV   
z ModelColabCacheResolver._resolveN)
__name__
__module____qualname__r   boolr$   strtupleintrG   r"   r"   r"   r#   r      s"    r   c                   @   r   )DatasetColabCacheResolverr   r   c                 O   sj   t jtjvs	t rdS t  }|j|jd}t|}|r||d< z||t j	| W dS  t
y4   Y dS w )NFr   datasetr   T)r   r   r   r   r   r   rR   _get_dataset_versionr   IS_DATASET_SUPPORTED_PATHr   r   r"   r"   r#   r$   l   s   z&DatasetColabCacheResolver.is_supportedNFr%   r(   r)   r&   r'   c                C   sH  |rt jdi td |rt jdi td t }|j|jd}t|}|r*||d< ||tj|}|d u r<d}	t	|	d|vrFd}
t
|
t d	|d  d
 ttt}| d|d  }tj|sot d| d tj|std tj|ru|r| d| }tj|sd| d| d}
t	|
||fS ||fS )Nr*   r+   r-   rQ   r   r.   r/   r0   z,Using Colab cache for faster access to the 'z
' dataset.r1   r2   r3   r4   r5   zb' is not present in the dataset files. You can access the other files of the attached dataset at ')r6   r7   r   r   r   rR   rS   r   DATASET_MOUNT_PATHr9   r   r   r:   r;   r<   r)   r=   r>   r?   r@   r"   r"   r#   rG      sT   
z"DatasetColabCacheResolver._resolverH   )
rI   rJ   rK   r   rL   r$   rM   rN   rO   rG   r"   r"   r"   r#   rP   k   s"    rP   r(   r   c                 C   (   |   r| jS t| }|d ur|S d S rH   is_versionedr   r	   get_versionr(   version_from_package_scoper"   r"   r#   r         
r   c                 C   rV   rH   rW   rZ   r"   r"   r#   rS      r\   rS   )loggingr   r>   kagglehub.clientsr   kagglehub.configr   kagglehub.exceptionsr   r   kagglehub.handler   r   kagglehub.loggerr   kagglehub.packagesr	   kagglehub.resolverr
   r;   r<   	getLoggerrI   r6   r   rP   rO   r   rS   r"   r"   r"   r#   <module>   s"    
XV