o
    Ďi2                     @   sR  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m	Z	m
Z
mZ dZdZdZdZd	ZG d
d dZd7dededB defddZdedefddZdededB fddZd7dededB ddfddZd7dededB dedB fddZd7dededB defddZd7dededB defddZd7de
dedB defddZd7dededB defdd Zd7de	dedB 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 d7de	dedB defd+d,Z!d7dededB defd-d.Z"d7de
dedB defd/d0Z#d7dededB defd1d2Z$dedefd3d4Z%dedefd5d6Z&dS )8    N)Path)get_cache_folder)CompetitionHandleDatasetHandleModelHandleNotebookHandleResourceHandledatasets	notebookscompetitionsmodels	.completec                   @   s   e Zd ZdZddedB ddfddZddededB defd	d
ZdedefddZddededB defddZ	ddededB dedB fddZ
ddededB ddfddZddededB ddfddZddededB dedB fddZdededB fddZdS )CachezCCache helper that optionally overrides the default cache directory.Noverride_dirreturnc                 C   s
   || _ d S N)_override_dir)selfr    r   K/home/jeff/fluffinator/venv/lib/python3.10/site-packages/kagglehub/cache.py__init__   s   
zCache.__init__handlepathc                 C   s*   | j r|rtj| j |S | j S t||S r   )r   osr   joinget_cached_path)r   r   r   r   r   r   get_path   s   
zCache.get_pathc                 C   s"   | j rtj| j t|S t|S r   )r   r   r   r   _get_override_archive_nameget_cached_archive_path)r   r   r   r   r   get_archive_path   s   zCache.get_archive_pathc                 C   sZ   | j st||S tj| j tt|}|r&|tjj}tj|| dS tj|dS )Nr   zbundle.complete)	r   _get_completion_marker_filepathr   r   r   FILE_COMPLETION_MARKER_FOLDER_get_override_marker_baselstripsep)r   r   r   marker_base	safe_pathr   r   r   r       s   
z%Cache._get_completion_marker_filepathc                 C   s8   |  ||}| ||}tj|rtj|r|S dS )zDReturn path for the requested resource from the cache or output_dir.N)r    r   r   r   exists)r   r   r   marker_path	full_pathr   r   r   load_from_cache-   s    zCache.load_from_cachec                 C   s2   |  ||}tjtj|dd t|  d S )NT)exist_ok)r    r   makedirsr   dirnamer   touchr   r   r   r(   r   r   r   mark_as_complete3   s   zCache.mark_as_completec                 C   s   |  ||}| | d S r   )r    _delete_pathr/   r   r   r   mark_as_incomplete8   s   zCache.mark_as_incompletec                 C   s"   |  || | ||}| |S )z3Delete resource from the cache, even if incomplete.)r2   r   r1   )r   r   r   r)   r   r   r   delete_from_cache<   s   
zCache.delete_from_cachec                 C   s   t j|sd S t j|rt| nt | | jr|S t j|}t	t 
|dkrM|t krMt j|}t | |}t	t 
|dkrM|t ks2|S Nr   )r   r   r'   isdirshutilrmtreeremover   r-   lenlistdirr   rmdir)r   r   curr_dir
parent_dirr   r   r   r1   B   s   

zCache._delete_pathr   )__name__
__module____qualname____doc__strr   r   r   r   r    r*   r0   r2   r3   r1   r   r   r   r   r      s      r   r   r   r   c                 C   \   t | tr
t| |S t | trt| |S t | trt| |S t | tr(t| |S d}t	|NInvalid handle)

isinstancer   _get_model_pathr   _get_dataset_pathr   _get_competition_pathr   _get_notebook_output_path
ValueErrorr   r   msgr   r   r   r   W   s   







r   c                 C   sT   t | tr	t| S t | trt| S t | trt| S t | tr$t| S d}t	|rD   )
rF   r   _get_model_archive_pathr   _get_dataset_archive_pathr   _get_competition_archive_pathr   !_get_notebook_output_archive_pathrK   )r   rM   r   r   r   r   f   s   



r   c                 C   s   t j| rHt j| rt|  nt |  t j| }tt 	|dkrF|t
 krFt j|}t | |}tt 	|dkrF|t
 ks+| S d S r4   )r   r   r'   r5   r6   r7   r8   r-   r9   r:   r   r;   )r   r<   r=   r   r   r   _delete_from_cache_foldert   s   

rR   c                 C   s   t | |}t| d S r   )r    rR   )r   r   r(   r   r   r   r2      s   
r2   c                 C   s   t | | t| |}t|S )a   Delete resource from the cache, even if incomplete.

    Args:
        handle: Resource handle
        path: Optional path to a file within the bundle.

    Returns:
        A string representing the path of the deleted resource or None on cache miss.
    )r2   r   rR   )r   r   model_full_pathr   r   r   r3      s   


r3   c                 C   rC   rD   )
rF   r   &_get_models_completion_marker_filepathr   (_get_datasets_completion_marker_filepathr   ,_get_competitions_completion_marker_filepathr   /_get_notebook_output_completion_marker_filepathrK   rL   r   r   r   r       s   







r    c                 C   sL   t jt t| j| j}|  rt j|dt| j	}|r$t j||S |S )Nversions)
r   r   r   r   DATASETS_CACHE_SUBFOLDERownerdatasetis_versionedrB   versionr   r   	base_pathr   r   r   rH      s   rH   c                 C   sN   t jt t| j| jd}|  rt j|dt| j	}|r%t j||S |S )NoutputrX   )
r   r   r   r   NOTEBOOKS_CACHE_SUBFOLDERrZ   notebookr\   rB   r]   r^   r   r   r   rJ      s   rJ   c                 C   s*   t jt t| j}|rt j||S |S r   r   r   r   r   COMPETITIONS_CACHE_SUBFOLDERcompetitionr^   r   r   r   rI      s   rI   c              
   C   s>   t jt t| j| j| j| jt	| j
}|rt j||S |S r   )r   r   r   r   MODELS_CACHE_SUBFOLDERrZ   model	framework	variationrB   r]   r^   r   r   r   rG      s   
rG   c              
   C   s*   t jt t| j| j| j| j| j	dS N.archive)
r   r   r   r   rf   rZ   rg   rh   ri   r]   r   r   r   r   rN      s   
rN   c                 C   s"   t jt t| j| j| jdS rj   )r   r   r   r   rY   rZ   r[   r]   rl   r   r   r   rO      s   
rO   c                 C   s   t jt t| j dS rj   rc   rl   r   r   r   rP      s
   
rP   c                 C   s   t jt t| j| jdS )Nz!output-{handle.version!s}.archive)r   r   r   r   ra   rZ   rb   rl   r   r   r   rQ      s   rQ   c                 C   s`   |rt jt t| j| j| j| jt	t
| j| d	S t jt t| j| j| j| j| jdS Nr   )r   r   r   r   rf   rZ   rg   rh   ri   r!   rB   r]   r   r   r   r   r   rT      s*   
rT   c              
   C   sP   |rt jt t| j| jtt| j	| dS t jt t| j| j| j	dS rm   )
r   r   r   r   rY   rZ   r[   r!   rB   r]   rn   r   r   r   rU     s"   

rU   c              
   C   sJ   |rt jt t| j| jtd| j| dS t jt t| j| jdS )Noutput-r   z"output-{handle.version!s}.complete)	r   r   r   r   ra   rZ   rb   r!   r]   rn   r   r   r   rW   "  s"   

rW   c                 C   s>   |rt jt tt| j | dS t jt t| j dS rm   )r   r   r   r   rd   r!   re   rn   r   r   r   rV   7  s   
rV   c              	   C   s   t | tr|  r| jnd}tjd| j| j| j	| j
t|S t | tr:|  r+| jnd}tjd| j| jt|S t | trGtjd| jS t | trb|  rS| jnd}tjd| j| jt|S d}t|)Nunknownr   r	   r   r
   rE   )rF   r   r\   r]   r   r   r   rZ   rg   rh   ri   rB   r   r[   r   re   r   rb   rK   r   r]   rM   r   r   r   r"   H  s(   



r"   c                 C   s   t | tr|  r| jnd}|dS t | tr&|  r| jnd}|dS t | tr:|  r2| jnd}d|dS t | trE| j dS d}t|)Nrp   rk   ro   rE   )	rF   r   r\   r]   r   r   r   re   rK   rq   r   r   r   r   `  s   





r   r   )'r   r6   pathlibr   kagglehub.configr   kagglehub.handler   r   r   r   r   rY   ra   rd   rf   r!   r   rB   r   r   rR   r2   r3   r    rH   rJ   rI   rG   rN   rO   rP   rQ   rT   rU   rW   rV   r"   r   r   r   r   r   <module>   s>    H 

