o
    h                  
   @   sB  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
Z
dZdedeeef fdd	Zd
d Zdd ZedfdedededdfddZd'ddZe  ddlmZmZ ddlmZ ddlmZ ed ede  ede   ed ed ed ed ed  zSd d!lmZ e
je
d"d"  Z!e
d"d"  Z"e!j#$ % Z&ee!gZ'e"e! Z(e($ Z)e)*  e'+  e!j#$ % Z,e&e,ksJ ed# ed$ e-d  W dS  e.y   e  ed%e/ d& e  e-d  Y dS  e0y  Z1 zee1 e  e-d W Y dZ1[1dS dZ1[1ww )(    N)warn)Tuple)isdir<   command_stringreturnc                    s(   dd   fdd}|| \}}||fS )Nc                 S   s   t dd | D S )Nc                 s   s    | ]
}| d  V  qdS )zUTF-8N)decodestrip).0	to_decode r   K/var/www/html/ai/venv/lib/python3.10/site-packages/bitsandbytes/__main__.py	<genexpr>   s
    
z6execute_and_return.<locals>._decode.<locals>.<genexpr>)tuple)subprocess_err_out_tupler   r   r   _decode   s   z#execute_and_return.<locals>._decodec                    s"    t jt| t jt jd S )N)stdoutstderr)
subprocessPopenshlexsplitPIPEcommunicate)r   r   r   r   &execute_and_return_decoded_std_streams   s   zBexecute_and_return.<locals>.execute_and_return_decoded_std_streamsr   )r   r   std_outstd_errr   r   r   execute_and_return   s   	r   c                 C   s4   d|  d| }t |\}}t|dkrtd|S )Nzfind z -name r   zTSomething when wrong when trying to find file. Maybe you do not have a linux system?)r   lenRuntimeError)folderfilenamecmdouterrr   r   r   find_file_recursive!   s
   r&   c                  C   s2  t d t d t d td dtjv r)ttjd d} t d t|  td tdr>tdd} t d t|  td tt rWtt d} t d	 t|  td t d
 dtjv rtjd  }t|	dD ]$}zt|rt | d t|d} t|  W qn   td|  Y qntd d S )N zBUG REPORT INFORMATIONCONDA_PREFIXz*cuda*sozANACONDA CUDA PATHSz/usr/local/z
/usr/localz/usr/local CUDA PATHSzWORKING DIRECTORY CUDA PATHSzLD_LIBRARY CUDA PATHSLD_LIBRARY_PATH:z CUDA PATHSz Could not read LD_LIBRARY_PATH: )
print_headerprintosenvironr&   r   getcwdr	   setr   )pathslib_pathpathr   r   r   generate_bug_report_information*   s@   



r4   +txtwidthfillerc                 C   s(   | rd|  dnd} t | || d S )N r'   )r,   center)r6   r7   r8   r   r   r   r+   R   s   r+   c                   C   s   t dt d d S )Nz]
Above we output some debug information. Please provide this info when creating an issue via z/issues/new/choose ...
)r,   PACKAGE_GITHUB_URLr   r   r   r   print_debug_infoY   s
   r<      )COMPILED_WITH_CUDAr;   )to_be_ignored)get_compute_capabilitiesOTHERzCOMPILED_WITH_CUDA = zCOMPUTE_CAPABILITIES_PER_GPU = r'   zDEBUG INFO ENDzY
Running a quick check that:
    + library is importable
    + CUDA function is callable
zK
WARNING: Please be sure to sanitize sensible info from any such env vars!
)Adam
   zSUCCESS!zInstallation was successful!z	WARNING: z is currently running as CPU-only!
Therefore, 8-bit optimizers and GPU quantization are unavailable.

If you think that this is so erroneously,
please report an issue!)r   N)2r-   sysr   r   warningsr   typingr   os.pathr   torchHEADER_WIDTHstrr   r&   r4   intr+   r<   r'   r>   r;   cuda_setup.env_varsr?   cuda_setup.mainr@   r,   bitsandbytes.optimrB   nn	Parameterrandcudapadatasumitemp1adamr$   lossbackwardstepp2exitImportError__package__	Exceptioner   r   r   r   <module>   s    	)



