o
    Gۂi	                     @   s  U d dl Z 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r?d d	lmZ nd d	lmZ ed
e	eef dZdedee dee fddZeddG dd dZdeeef f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 ]}t| |}t|tr!t||r!t|s!|| qt|dkr5t	d| d|  d| t|dkrHt	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   [/home/ubuntu/maya3_transcribe/venv/lib/python3.10/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#   c                  C   s   t  } tjdd}|dkrOtjt}t|D ]3}tjtj	||s'q|
dr-qtd| d}td| d}tt|tt|t| |< q| S t jdd	D ]"}t|j d}t|j d}tt|tt|t| |j< qV| S )
NTRITON_BACKENDS_IN_TREE 1__ztriton.backends.z	.compilerz.driverztriton.backends)group)dictosenvirongetpathdirname__file__listdirisdirjoin
startswith	importlibimport_moduler#   r!   r	   r   r   selectvaluename)backendsskip_entrypoints_envrootr>   r$   r%   epr   r   r    _discover_backends&   s,   



rC   r?   )r:   r0   r   sysdataclassesr   typingr   r   r   typesr   r%   r   r$   r	   version_infoimportlib.metadatar   importlib_metadatar   r!   r#   r/   strrC   r?   r)   r   r   r   r    <module>   s$   
 
