o
    ĎiO                     @   s   d dl mZmZ d dlmZmZmZmZmZ d dl	m
Z
 ededZG dd dee Zee dZee d	Zee d
Zee dZdS )    )GenericTypeVar)CompetitionHandleDatasetHandleModelHandleNotebookHandleResourceHandle)ResolverT)boundc                   @   sR   e Zd ZdZdeddfddZdee ddfdd	Zde	ee
dB f fd
dZdS )MultiImplRegistryak  Utility class to inject multiple implementations of class.

    Each implementation must implement __call__ and is_supported with the same set of arguments. The registered
    implementations "is_supported" methods are called in reverse order under which they are registered. The first
    to return true is then invoked via __call__ and the result returned.
    namereturnNc                 C   s   || _ g | _d S N)_name_impls)selfr    r   N/home/jeff/fluffinator/venv/lib/python3.10/site-packages/kagglehub/registry.py__init__   s   
zMultiImplRegistry.__init__implc                 C   s   | j | d S r   )r   append)r   r   r   r   r   add_implementation   s   z$MultiImplRegistry.add_implementationc                 O   sl   g }t | jD ]}|j|i |r||i |  S |t|j qd| j d|d|d|}t|)Nz&Missing implementation that supports: z(*z, **z	). Tried )reversedr   is_supportedr   type__name__r   RuntimeError)r   argskwargsfailsr   msgr   r   r   __call__   s   zMultiImplRegistry.__call__)r   
__module____qualname____doc__strr   r	   r
   r   tupleintr"   r   r   r   r   r   	   s
    r   ModelResolverDatasetResolverCompetitionResolverNotebookOutputResolverN)typingr   r   kagglehub.handler   r   r   r   r   kagglehub.resolverr	   r
   r   model_resolverdataset_resolvercompetition_resolvernotebook_output_resolverr   r   r   r   <module>   s    