a
    jhL                     @   s   U d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 ddlmZ ddlmZ ejdkrvd d	lmZ nd d	lmZ ed
eeef dZe
ee ee dddZeddG dd dZeeef dddZe Zeeef ed< dS )    N)	dataclass)TypeTypeVarUnion)
ModuleType   )
DriverBase)BaseBackend)   
   )entry_pointsT)bound)module
base_classreturnc                 C   s   g }t | D ]6}t| |}t|trt||rt|s|| qt|dkrjt	d| d|  d| t|dkrt	d| d|  d| |d S )Nr   zFound 0 concrete subclasses of z in z: r   z Found >1 concrete subclasses of )
dirgetattr
isinstancetype
issubclassinspect
isabstractappendlenRuntimeError)r   r   ret	attr_nameattr r   F/var/www/auris/lib/python3.9/site-packages/triton/backends/__init__.py_find_concrete_subclasses   s    
r!   T)frozenc                   @   s&   e Zd ZU ee ed< ee ed< dS )BackendcompilerdriverN)__name__
__module____qualname__r   r	   __annotations__r   r   r   r   r    r#      s   
r#   )r   c                  C   s^   t  } t jddD ]D}t|j d}t|j d}tt|tt|t	| |j
< q| S )Nztriton.backends)groupz	.compilerz.driver)dictr   select	importlibimport_modulevaluer#   r!   r	   r   name)backendsepr$   r%   r   r   r    _discover_backends%   s    
r3   r1   )r-   r   sysZdataclassesr   typingr   r   r   typesr   r%   r   r$   r	   version_infoimportlib.metadatar   Zimportlib_metadatar   r!   r#   r+   strr3   r1   r)   r   r   r   r    <module>   s    


