o
    ̳i,                     @   s  U d dl Z d dlmZ d dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ dZdZdZdZdZd	Zed
edededede	diZee eee eee eee eee eee	 eiZee
edB f Zi Zeed< de
d	edB ddfddZdefddZ de!e j"B ddfddZ#de!e j"B defddZ$de
d	edB defddZ%dede&e
edB f fd d!Z'd	ededB fd"d#Z(dS )$    N)Any)CompetitionHandleDatasetHandleModelHandleNotebookHandlePackageHandleResourceHandleUtilityScriptHandleparse_competition_handleparse_dataset_handleparse_model_handleparse_notebook_handleparse_package_handleparse_utility_script_handlez0.1.0format_versiondatasourcestyperefversionCompetitionDatasetModelNotebookUtilityScriptPackage_accessed_datasourceshandlereturnc                 C   s   |t | < dS )zdRecord that a datasource was accessed.

    Link the user-requested handle to the version retrieved.N)r   )r   r    r   E/home/ubuntu/.local/lib/python3.10/site-packages/kagglehub/tracker.pyregister_datasource_access8   s   r    c                   C   s   t  S N)r   copyr   r   r   r   get_accessed_datasources?   s   r#   filepathc                 C   sZ   t ttdd t D i}t| d}tj||dd W d   dS 1 s&w   Y  dS )zWrite the datasources accessed during this session to a yaml file.

    Args:
        filepath: (str | pathlib.Path) Where to write the yaml file.
    c                 S   s   g | ]	\}}t ||qS r   )_serialize_datasource).0hr   r   r   r   
<listcomp>K   s    zwrite_file.<locals>.<listcomp>wF)	sort_keysN)FORMAT_VERSION_FIELDFORMAT_VERSIONDATASOURCES_FIELDr   itemsopenyamldump)r$   datafr   r   r   
write_fileC   s   "r4   c           	      C   s   t | }t|}W d   n1 sw   Y  |t}|tkr+d| }t|i }|tg D ]}t|\}}|||< q3|S )zRead a yaml file with datasource + version records.

    Args:
        filepath: (str | pathlib.Path) Path of yaml file to read from.
    Returns:
        Dictionary mapping ResourceHandle to version number, parsed from file.
    Nz)Unsupported tracker file format version: )	r/   r0   	safe_loadgetr+   r,   
ValueErrorr-   _deserialize_datasource)	r$   r3   r2   r   msgversioned_datasources
datasourcer'   r   r   r   r   	read_fileR   s   



r<   r'   c                 C   s,   t tt|  tt| i}|d ur||t< |S r!   )DATASOURCE_TYPE_FIELDHANDLE_TYPE_NAMESr   DATASOURCE_REF_FIELDstrDATASOURCE_VERSION_FIELD)r'   r   r2   r   r   r   r%   j   s   r%   r2   c                 C   s0   t | t  }|| t }t| td }||fS r!   )HANDLE_TYPE_PARSERSr=   r?   _parse_versionr6   rA   )r2   parserr'   r   r   r   r   r8   v   s   r8   c                 C   sH   | d u s	t | tr| S t | trzt| W S    Y d|  d}t|)NzInvalid version: 'z'. Expected an integer or None.)
isinstanceintr@   r7   )r   r9   r   r   r   rC   ~   s   

rC   ))pathlibtypingr   r0   kagglehub.handler   r   r   r   r   r   r	   r
   r   r   r   r   r   r,   r+   r-   r=   r?   rA   r>   rB   dictrF   VersionedDatasourcesr   __annotations__r    r#   r@   Pathr4   r<   r%   tupler8   rC   r   r   r   r   <module>   sB   
 <

