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    _/home/app/PaddleOCR-VL-test/.venv_paddleocr/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 )NZ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NAMEZ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*   Zuntyped_storagexc                 C   s   t |  S r(   )_GET_TENSOR_STORAGEZdata_ptr)r+   r   r   r   _get_storage_base?   s   r-   )typingr   r   r   r   r   r   r"   r   r   r   r%   r!   r&   r'   r*   r   ZTensorr,   Zstorageintr-   r   r   r   r   <module>   s   	