
    bi                     2   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       Zede
fd       Zed        Zed        Zede
fd       Zedd	       Zed
        Zed        Zed        Zed        Zed        Zed        Zedd       Zed        Zy)    N)	lru_cachereturnc                  D    t         j                  j                  d      d uS )Nbitsandbytes	importlibutil	find_spec     L/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/peft/import_utils.pyis_bnb_availabler      s    >>##N34??r   c                  L    t               sydd l} t        | j                  d      S )NFr   
Linear4bit)r   r   hasattrnn)bnbs    r   is_bnb_4bit_availabler      s    366<((r   c                     t         j                  j                  d      it        j                  j                  d      } t        j                  j                  t        j                  d            }| |k  ryt        d| d|  d      y )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_autogptqs     r   is_auto_gptq_availabler    &   s    ~~,8#,#4#4#:#:7#C $,,223E3M3Mk3Z[#'77LM]L^ _++C*DNT  9r   c            	         t         j                  j                  d      t        j                  j                  d      } t        j                  j                  d      }t        j                  j                  t        j                  d            }| |k  rft               rMt        j                  j                  t        j                  d            }||k  ryt        d| d| d| d	      t        d| d
      t        d| d|  d	      y )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_optimums       r   is_gptqmodel_availabler)   4   s/   ~~,8$-$5$5$;$;G$D!"+"3"3"9"9("C%--334F4N4N{4[\$(99#%"+"3"3"9"9:L:T:TU^:_"`*o=%>?V>WWs  uD  tE E44K3LO] 
 ":;R:SSop  MN_M` a,,E+FoW ' 9r   c                  D    t         j                  j                  d      d uS )Nr#   r   r   r   r   r$   r$   O   s    >>##I.d::r   c                     t         j                  j                  d      | r	 ddlmc m} |j                         }yyy# t        $ r Y yw xY w)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_s      r   is_torch_tpu_availabler5   T   sQ     ~~,855MMO    s   ? 	A
Ac                  D    t         j                  j                  d      d uS )Naqlmr   r   r   r   is_aqlm_availabler8   e       >>##F+477r   c                  D    t         j                  j                  d      d uS )Nawqr   r   r   r   is_auto_awq_availabler<   j       >>##E*$66r   c                  D    t         j                  j                  d      d uS )Neetqr   r   r   r   is_eetq_availabler@   o   r9   r   c                  D    t         j                  j                  d      d uS )Nhqqr   r   r   r   is_hqq_availablerC   t   r=   r   c                  D    t         j                  j                  d      d uS )Nneural_compressorr   r   r   r   is_inc_availablerF   y   s    >>##$78DDr   c                  H   t         j                  j                  d      yt        j                  j                  d      } 	 t        j                  j                  t        j                  d            }|| k  rt        d| d|  d      y# t        j                  $ r Y yw xY w)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_versions     r   is_torchao_availablerL   ~   s    ~~	*2'//55g>#++112D2L2LY2WX 00FFW X''>&?~O
 	
  22  s   2B B! B!c                 2   t        j                         }|dk(  ry| r=	 t        j                  j	                         }t        j                  j                         S t        t        d      xr t        j                  j                         S # t        $ r Y yw xY w)z`
    Checks if XPU acceleration is available and potentially if a XPU is in the environment
    DarwinFxpu)platformsystemtorchrO   device_countis_availabler1   r   )r2   rQ   r4   s      r   is_xpu_availablerU      s}     __FII**,yy--// ue$A)?)?)AA   s   ;B
 
	BBc                  D    t         j                  j                  d      d uS )N	diffusersr   r   r   r   is_diffusers_availablerX      s    >>##K0<<r   )T)F)r   importlib.metadatametadatar   rP   	functoolsr   packaging.versionr   rR   boolr   r   r    r)   r$   r5   r8   r<   r@   rC   rF   rL   rU   rX   r   r   r   <module>r^      sM    /     @$ @ @ )t ) ) 
 
  4 ;d ; ;    8 8 7 7 8 8 7 7 E E  . B B& = =r   