o
    ̳i                     @   sp  d Z ddl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ZdZd	ZdZdZdZdZed
dG dd dZed
dG dd deZed
dG dd deZed
dG dd deZed
dG dd deZG dd deZG dd deZdedefddZdedefddZdedefd d!Zdedefd"d#Zdedefd$d%Zdedefd&d'ZdS )(z$Functions to parse resource handles.    N)asdict	dataclass)get_endpointget_env)ModelFramework)to_enum         T)frozenc                   @   s    e Zd ZejdefddZdS )ResourceHandlereturnc                 C   s   dS )z(Returns URL to the resource detail page.N selfr   r   D/home/ubuntu/.local/lib/python3.10/site-packages/kagglehub/handle.pyto_url   s   zResourceHandle.to_urlN)__name__
__module____qualname__abcabstractmethodstrr   r   r   r   r   r      s    r   c                   @   s   e Zd ZU eed< eed< eed< eed< edB ed< defdd	Zdedd fd
dZde	fddZ
defddZdefddZdS )ModelHandleownermodel	framework	variationNversionr   c                 C      | j d uo	| j dkS Nr   r   r   r   r   r   is_versioned&      zModelHandle.is_versionedc                 C   s   t | j| j| j| j|dS )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   with_version)   s   zModelHandle.with_versionc                 C   s   t t| jS N)r   r   r   r   r   r   r   framework_enum.   s   zModelHandle.framework_enumc                 C   s>   | j  d| j d| j d| j }|  r| d| j S |S )N/)r   r   r   r   r"   r   r   
handle_strr   r   r   __str__1   s   "zModelHandle.__str__c                 C   sj   t t }|  r!| d| j d| j d| j d| j d| j S | d| j d| j d| j d| j 	S )Nz/models/r)   )r   r   r"   r   r   r   r   r   )r   endpointr   r   r   r   7   s   
0(zModelHandle.to_url)r   r   r   r   __annotations__intboolr"   r&   r   r(   r,   r   r   r   r   r   r      s   
 r   c                   @   j   e Zd ZU eed< eed< dZedB ed< defddZdedd fdd	Z	defd
dZ
defddZdS )DatasetHandler   datasetNr   r   c                 C   r   r    r!   r   r   r   r   r"   E   r#   zDatasetHandle.is_versionedc                 C      t | j| j|dS )Nr   r3   r   )r2   r   r3   r%   r   r   r   r&   H      zDatasetHandle.with_versionc                 C   .   | j  d| j }|  r| d| j S |S Nr)   
/versions/)r   r3   r"   r   r*   r   r   r   r,   K      zDatasetHandle.__str__c                 C   >   t t }| d| j d| j }|  r| d| j S |S )Nz
/datasets/r)   r9   )r   r   r   r3   r"   r   r   r-   base_urlr   r   r   r   Q   
   
zDatasetHandle.to_urlr   r   r   r   r.   r   r/   r0   r"   r&   r,   r   r   r   r   r   r2   ?      
 r2   c                   @   s2   e Zd ZU eed< defddZdefddZdS )CompetitionHandlecompetitionr   c                 C   s   | j  }|S r'   rB   r*   r   r   r   r,   ]   s   zCompetitionHandle.__str__c                 C   s   t t }| d| j }|S )Nz/competitions/)r   r   rB   r<   r   r   r   r   a   s   
zCompetitionHandle.to_urlN)r   r   r   r   r.   r,   r   r   r   r   r   rA   Y   s   
 rA   c                   @   r1   )NotebookHandler   notebookNr   r   c                 C   r   r    r!   r   r   r   r   r"   m   r#   zNotebookHandle.is_versionedc                 C   r4   )Nr   rE   r   )rD   r   rE   r%   r   r   r   r&   p   r6   zNotebookHandle.with_versionc                 C   r7   r8   )r   rE   r"   r   r*   r   r   r   r,   s   r:   zNotebookHandle.__str__c                 C   r;   )Nz/code/r)   r9   )r   r   r   rE   r"   r   r<   r   r   r   r   y   r>   zNotebookHandle.to_urlr?   r   r   r   r   rD   g   r@   rD   c                   @   s   e Zd ZdS )UtilityScriptHandleN)r   r   r   r   r   r   r   rG      s    rG   c                   @   s   e Zd Zdedd fddZdS )PackageHandler   r   c                 C   s   t | }||d< tdi |S )Nr   r   )r   rH   )r   r   kwargsr   r   r   r&      s   zPackageHandle.with_versionN)r   r   r   r/   r&   r   r   r   r   rH      s    rH   handler   c              
   C      |  d}t|tkr7zt|d }W n ty+ } zd|d  }t||d }~ww t|d |d |dS t|tkrHt|d |d d dS d|  }t|)Nr)      Invalid version number: r      r5   zInvalid dataset handle: )splitlenNUM_VERSIONED_DATASET_PARTSr/   
ValueErrorr2   NUM_UNVERSIONED_DATASET_PARTSrJ   partsr   errmsgr   r   r   parse_dataset_handle   s,   


rX   c              
   C   s   |  d}t|tkr=zt|d }W n ty+ } zd|d  }t||d }~ww t|d |d |d |d |dS t|tkrTt|d |d |d |d d dS d	|  }t|)
Nr)   r   rM   r   rN   r	   rL   r$   zInvalid model handle: )rO   rP   NUM_VERSIONED_MODEL_PARTSr/   rR   r   NUM_UNVERSIONED_MODEL_PARTSrT   r   r   r   parse_model_handle   s4   


r[   c                 C   s$   d| v rd|  }t |t| dS )Nr)   zInvalid competition handle: rC   )rR   rA   )rJ   rW   r   r   r   parse_competition_handle   s   

r\   c              
   C   rK   )Nr)   rL   rM   r   rN   rF   zInvalid notebook handle: )rO   rP   NUM_VERSIONED_NOTEBOOK_PARTSr/   rR   rD   NUM_UNVERSIONED_NOTEBOOK_PARTSrT   r   r   r   parse_notebook_handle   s,   


r_   c                 C      t | }tdi t|S Nr   )r_   rG   r   rJ   notebook_handler   r   r   parse_utility_script_handle      rd   c                 C   r`   ra   )r_   rH   r   rb   r   r   r   parse_package_handle   re   rf   ) __doc__r   dataclassesr   r   kagglesdk.kaggle_envr   r   "kagglesdk.models.types.model_enumsr   kagglehub.enumr   rQ   rS   rY   rZ   r]   r^   r   r   r2   rA   rD   rG   rH   r   rX   r[   r\   r_   rd   rf   r   r   r   r   <module>   s>     "