o
    Ni                     @   s   d dl Z d dlmZ d dlZd dlmZ d dlZd dl	Z	ede
fddZede
fddZedd	 Zed
d Zede
fddZed"ddZedd Zedd Zedd Zedd Zedd Zedd Zed#ddZed d! ZdS )$    N)	lru_cachereturnc                   C      t jdd uS )Nbitsandbytes	importlibutil	find_spec r
   r
   E/home/ubuntu/.local/lib/python3.10/site-packages/peft/import_utils.pyis_bnb_available      r   c                  C   s   t  sdS dd l} t| jdS )NFr   
Linear4bit)r   r   hasattrnn)bnbr
   r
   r   is_bnb_4bit_available   s   r   c                  C   sT   t jdd ur(tjd} tjtd}| |krdS td| d|  dd S )N	auto_gptqz0.5.0Tz:Found an incompatible version of auto-gptq. Found version , but only versions above  are supported)r   r   r	   	packagingversionparseimportlib_metadataImportError)AUTOGPTQ_MINIMUM_VERSIONversion_autogptqr
   r
   r   is_auto_gptq_available&   s   r   c                  C   s   t jdd urTtjd} tjd}tjtd}| |krIt rAtjtd}||kr3dS td| d| d| d	td| d
td| d|  d	d S )N	gptqmodelz2.0.0z1.24.0optimumTz$gptqmodel requires optimum version `z` or higher. Found version `z`, but only versions above `z` are supportedz` or higher to be installed.z;Found an incompatible version of gptqmodel. Found version `)	r   r   r	   r   r   r   r   is_optimum_availabler   )GPTQMODEL_MINIMUM_VERSIONOPTIMUM_MINIMUM_VERSIONversion_gptqmodelversion_optimumr
   r
   r   is_gptqmodel_available4   s.   
r%   c                   C   r   )Nr   r   r
   r
   r
   r   r    O   r   r    Tc                 C   sR   t jddur'| r%zddlm  m} | }W dS  ty$   Y dS w dS dS )zQChecks if `torch_xla` is installed and potentially if a TPU is in the environment	torch_xlaNr   TF)r   r   r	   torch_xla.core.xla_modelcore	xla_model
xla_deviceRuntimeError)check_devicexm_r
   r
   r   is_torch_tpu_availableT   s   r/   c                   C   r   )Naqlmr   r
   r
   r
   r   is_aqlm_availablee   r   r1   c                   C   r   )Nawqr   r
   r
   r
   r   is_auto_awq_availablej   r   r3   c                   C   r   )Neetqr   r
   r
   r
   r   is_eetq_availableo   r   r5   c                   C   r   )Nhqqr   r
   r
   r
   r   is_hqq_availablet   r   r7   c                   C   r   )Nneural_compressorr   r
   r
   r
   r   is_inc_availabley   r   r9   c                  C   sp   t jdd u r
dS tjd} ztjtd}W n tjy&   Y dS w || k r6td| d|  ddS )NtorchaoFz0.4.0z8Found an incompatible version of torchao. Found version r   r   T)	r   r   r	   r   r   r   r   PackageNotFoundErrorr   )TORCHAO_MINIMUM_VERSIONtorchao_versionr
   r
   r   is_torchao_available~   s   r>   Fc                 C   sX   t  }|dkr
dS | r"ztj }tj W S  ty!   Y dS w ttdo+tj S )z`
    Checks if XPU acceleration is available and potentially if a XPU is in the environment
    DarwinFxpu)platformsystemtorchr@   device_countis_availabler+   r   )r,   rB   r.   r
   r
   r   is_xpu_available   s   
rF   c                   C   r   )N	diffusersr   r
   r
   r
   r   is_diffusers_available   r   rH   )T)F)r   importlib.metadatametadatar   rA   	functoolsr   packaging.versionr   rC   boolr   r   r   r%   r    r/   r1   r3   r5   r7   r9   r>   rF   rH   r
   r
   r
   r   <module>   sD   	







