o
    )i^                  
   @   s2  U d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	Z	e
dZdZe jG dd dZG dd deZG d	d
 d
eZdd ZdZdZee ed< ze ZW n6 eefy Z z(dZejedruejde ed nede de d eZW Y dZ[ndZ[ww eduoejduZdS )    N)AnyDictOptionalZxformerszI  Memory-efficient attention, SwiGLU, sparse and more won't be available.c                   @   s   e Zd ZU eeef ed< edee	 fddZ
edee	 fddZedefddZedefd	d
ZedefddZedefddZedeeef fddZdS )
_BuildInfometadatareturnc                 C      | j d d S )Nversioncudar   self r   ]/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/xformers/_cpp_lib.pycuda_version      z_BuildInfo.cuda_versionc                 C   r   )Nr	   hipr   r   r   r   r   hip_version   r   z_BuildInfo.hip_versionc                 C   r   )Nr	   torchr   r   r   r   r   torch_version"   r   z_BuildInfo.torch_versionc                 C   r   )Nr	   pythonr   r   r   r   r   python_version&   r   z_BuildInfo.python_versionc                 C      | j d ddS )Nr	   Zflashz0.0.0r   getr   r   r   r   flash_version*      z_BuildInfo.flash_versionc                 C   r   )Nr	   use_torch_flashFr   r   r   r   r   r   .   r   z_BuildInfo.use_torch_flashc                 C   s
   | j d S )Nenvr   r   r   r   r   	build_env2   s   
z_BuildInfo.build_envN)__name__
__module____qualname__r   strr   __annotations__propertyr   intr   r   r   r   r   boolr   r   r   r   r   r   r      s    
 r   c                   @   s   e Zd ZdefddZdS )xFormersWasNotBuiltExceptionr   c                 C   s   dt  S )NzNeed to compile C++ extensions to use all xFormers features.
    Please install xformers properly (see https://github.com/facebookresearch/xformers#installing-xformers)
)UNAVAILABLE_FEATURES_MSGr   r   r   r   __str__8   s   z$xFormersWasNotBuiltException.__str__N)r    r!   r"   r#   r*   r   r   r   r   r(   7   s    r(   c                   @   s0   e Zd Zdee ddfddZdefddZdS )xFormersInvalidLibException
build_infor   Nc                 C   s
   || _ d S )N)r,   )r   r,   r   r   r   __init__B   s   
z$xFormersInvalidLibException.__init__c                 C   sV   | j d u rd}nd| j j d| j j dtj d| j j dt  d}d| d t S )	Nz@xFormers was built for a different version of PyTorch or Python.z$xFormers was built for:
    PyTorch z with CUDA z (you have z)
    Python  )z)xFormers can't load C++/CUDA extensions. zd
  Please reinstall xformers (see https://github.com/facebookresearch/xformers#installing-xformers)
)r,   r   r   r   __version__r   platformr)   )r   msgr   r   r   r*   E   s*   
z#xFormersInvalidLibException.__str__)r    r!   r"   r   r   r-   r#   r*   r   r   r   r   r+   A   s    r+   c               
   C   s  dd l } dd l}dd l}|jt}|jdkrfdd l}dd l}|j	ddd}t
|d}|d}|r7|j|j_|jdkrB|| n|ra||}	|	d u ra|| }
|
 jd	| d
7  _|
|| | jj| jjf}| j||}|jjrt
|jds|d}n|d}|d u rt |j|d}t|d}tt |}W d    n1 sw   Y  z
|j!"|j# W |S  t$y } zt%||d }~ww )Nr   ntzkernel32.dllT)Zuse_last_errorAddDllDirectory   )      z Error adding "z" to the DLL directories.Zgit_versionZ_C_hipZ_Czcpp_lib.jsonr)&	importlibosr   pathdirname__file__namectypessysZWinDLLhasattrZSetErrorModeZc_void_pr3   restypeversion_infoZadd_dll_directoryZWinErrorZget_last_errorstrerror	machineryExtensionFileLoaderEXTENSION_SUFFIXES
FileFinderr	   r   	find_specr(   joinopenr   jsonloadopsZload_libraryoriginOSErrorr+   )r8   r9   r   lib_dirr>   r?   Zkernel32Zwith_load_library_flagsZprev_error_modereserrloader_detailsZ	extfinderZ	ext_specsZcpp_lib_jsonfpZbuild_metadataexcr   r   r   _register_extensionsU   sR   








rV   _build_metadataZXFORMERS_MORE_DETAILSFzWARNING[XFORMERS]: )exc_infoz
  Set z=1 for more details)dataclassesrK   loggingr9   r0   typingr   r   r   r   	getLoggerloggerr)   	dataclassr   	Exceptionr(   r+   rV   Z_cpp_library_load_exceptionrW   r$   eZENV_VAR_FOR_DETAILSenvironr   warningr   Z_built_with_cudar   r   r   r   <module>   s>   

 
5
