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Optional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   E/home/ubuntu/.local/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
   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)use_last_errorAddDllDirectory   )      z Error adding "z" to the DLL directories.git_version_C_hip_Czcpp_lib.jsonr)&	importlibosr   pathdirname__file__namectypessysWinDLLhasattrSetErrorModec_void_pr6   restypeversion_infoadd_dll_directoryWinErrorget_last_errorstrerror	machineryExtensionFileLoaderEXTENSION_SUFFIXES
FileFinderr
   r   	find_specr*   joinopenr   jsonloadopsload_libraryoriginOSErrorr-   )r>   r?   r   lib_dirrD   rE   kernel32with_load_library_flagsprev_error_modereserrloader_details	extfinder	ext_specscpp_lib_jsonfpbuild_metadataexcr   r   r   _register_extensionsU   sR   








rj   _build_metadataXFORMERS_MORE_DETAILSFzWARNING[XFORMERS]: )exc_infoz
  Set z=1 for more details)dataclassesrW   loggingr?   r2   typingr   r   r   r   	getLoggerloggerr+   	dataclassr   	Exceptionr*   r-   rj   _cpp_library_load_exceptionrk   r&   eENV_VAR_FOR_DETAILSenvironr   warningr   _built_with_cudar   r   r   r   <module>   s>   

 
5
