o
     iw                     @   s   U d dl mZmZmZmZmZ d dlZdedefddZdefddZ	G d	d
 d
Z
g aeee
  ed< i aeeee
 f ed< edZdedefddZeejddZedu r\ejjZdejdefddZdS )    )AnyDictListTypeTypeVarNlibrarynamec              	      s>    fdd}z
t t tj W S  ttfy   | Y S w )Nc                     s   t d  d d)NzNo such operator z::zC - did you forget to build xformers with `python setup.py develop`?)RuntimeError)argskwargsr   r    G/home/ubuntu/.local/lib/python3.10/site-packages/xformers/ops/common.pyno_such_operator   s   z&get_operator.<locals>.no_such_operator)getattrtorchopsr	   AttributeError)r   r   r   r   r   r   get_operator   s   r   c                 C   s
   t d| S )Nxformers)r   )r   r   r   r   get_xformers_operator   s   
r   c                   @   s8   e Zd ZU eed< eed< eed< edefddZdS )BaseOperatorOPERATORNAMEOPERATOR_CATEGORYreturnc                 C   s$   | j d u st| j dddkrdS dS )N__name__ r   FT)r   r   clsr   r   r   is_available    s   
zBaseOperator.is_availableN)	r   
__module____qualname__r   __annotations__strclassmethodboolr    r   r   r   r   r      s   
 r   OPERATORS_REGISTRYFUNC_TO_XFORMERS_OPERATORClsTr   r   c                 C   s   t |  | t| j< | S N)r'   appendr(   r   r   r   r   r   register_operator1   s   

r,   untyped_storagexc                 C   s   t |  S r*   )_GET_TENSOR_STORAGEdata_ptr)r.   r   r   r   _get_storage_base?   s   r1   )typingr   r   r   r   r   r   r$   r   r   r   r'   r#   r(   r)   r,   r   Tensorr/   storageintr1   r   r   r   r   <module>   s   	