a
    kh                     @  sz   d dl mZ ddlmZmZ d dlmZmZmZmZm	Z	 ddddZ
ed	ZG d
d dee ZG dd dZe ZdS )    )annotations   )backends
DriverBase)AnyCallableGenericTypeVarUnionr   returnc                  C  s@   dd t  D } t| dkr6tt|  d|  d| d  S )Nc                 S  s   g | ]}|j  r|j qS  )driverZ	is_active).0xr   r   C/var/www/auris/lib/python3.9/site-packages/triton/runtime/driver.py
<listcomp>	       z"_create_driver.<locals>.<listcomp>   z active drivers (z). There should only be one.r   )r   valueslenRuntimeError)Zactive_driversr   r   r   _create_driver   s    r   Tc                      s~   e Zd ZdddddZdddd	Zd
dddZdd
dd fddZdddddZddddZddddZ	  Z
S )	LazyProxyzCallable[[], T]None)init_fnr   c                 C  s   || _ d | _d S N_init_fn_obj)selfr   r   r   r   __init__   s    zLazyProxy.__init__r   r   c                 C  s   | j d u r|  | _ | j S r   )r    r   r!   r   r   r   _initialize_obj   s    

zLazyProxy._initialize_objr   c                 C  s   t |  |S r   )getattrr$   r!   namer   r   r   __getattr__   s    zLazyProxy.__getattr__str)r'   valuer   c                   s,   |dv rt  || nt|  || d S )Nr   )super__setattr__setattrr$   )r!   r'   r*   	__class__r   r   r,       s    zLazyProxy.__setattr__)r'   r   c                 C  s   t |  | d S r   )delattrr$   r&   r   r   r   __delattr__&   s    zLazyProxy.__delattr__c                 C  s,   | j d u r"d| jj d| j dS t| j S )N<z for z not yet initialized>)r    r/   __name__r   reprr#   r   r   r   __repr__)   s    
zLazyProxy.__repr__c                 C  s   t |  S r   )r)   r$   r#   r   r   r   __str__.   s    zLazyProxy.__str__)r3   
__module____qualname__r"   r$   r(   r,   r1   r5   r6   __classcell__r   r   r.   r   r      s   r   c                   @  s8   e Zd ZddddZdddddZddd	d
ZdS )DriverConfigr   r   c                 C  s   t t| _| j| _d S r   )r   r   defaultactiver#   r   r   r   r"   4   s    
zDriverConfig.__init__r   )r   r   c                 C  s
   || _ d S r   )r<   )r!   r   r   r   r   
set_active8   s    zDriverConfig.set_activec                 C  s   | j | _d S r   )r;   r<   r#   r   r   r   reset_active;   s    zDriverConfig.reset_activeN)r3   r7   r8   r"   r=   r>   r   r   r   r   r:   2   s   r:   N)
__future__r   r   r   typingr   r   r   r	   r
   r   r   r   r:   r   r   r   r   r   <module>   s    