
    oi                     <   S SK r S SKJr  S SKrS SKJr  S SKrS SK	r	\S\
4S j5       r\S\
4S j5       r\S 5       r\S 5       r\S\
4S j5       r\SS	 j5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\SS j5       r\S 5       rg)    N)	lru_cachereturnc                  D    [         R                  R                  S5      S L$ )Nbitsandbytes	importlibutil	find_spec     K/home/james-whalen/.local/lib/python3.13/site-packages/peft/import_utils.pyis_bnb_availabler      s    >>##N34??r   c                  V    [        5       (       d  gSS Kn [        U R                  S5      $ )NFr   
Linear4bit)r   r   hasattrnn)bnbs    r   is_bnb_4bit_availabler      s"    366<((r   c                     [         R                  R                  S5      bj  [        R                  R                  S5      n [        R                  R                  [        R                  " S5      5      nX::  a  g[        SU SU  S35      eg )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LM]L^ _++C*DNT  9r   c            	      ,   [         R                  R                  S5      b  [        R                  R                  S5      n [        R                  R                  S5      n[        R                  R                  [        R                  " S5      5      nX::  al  [        5       (       aN  [        R                  R                  [        R                  " S5      5      nX::  a  g[        SU SU SU S	35      e[        SU S
35      e[        SU SU  S	35      eg )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#%%"+"3"3"9"9:L:T:TU^:_"`*=%>?V>WWs  uD  tE E44K3LO] 
 ":;R:SSop  MN_M` a,,E+FoW ' 9r   c                  D    [         R                  R                  S5      S L$ )Nr#   r   r   r   r   r$   r$   O   s    >>##I.d::r   c                     [         R                  R                  S5      b#  U (       a   SSKJs  Jn  UR                  5       nggg! [         a     gf = f)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Ac                  D    [         R                  R                  S5      S L$ )Naqlmr   r   r   r   is_aqlm_availabler8   e       >>##F+477r   c                  D    [         R                  R                  S5      S L$ )Nawqr   r   r   r   is_auto_awq_availabler<   j       >>##E*$66r   c                  D    [         R                  R                  S5      S L$ )Neetqr   r   r   r   is_eetq_availabler@   o   r9   r   c                  D    [         R                  R                  S5      S L$ )Nhqqr   r   r   r   is_hqq_availablerC   t   r=   r   c                  D    [         R                  R                  S5      S L$ )Nneural_compressorr   r   r   r   is_inc_availablerF   y   s    >>##$78DDr   c                  N   [         R                  R                  S5      c  g[        R                  R                  S5      n  [        R                  R                  [        R                  " S5      5      nX:  a  [        SU SU  S35      eg! [        R                   a     gf = f)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FFW X''>&?~O
 	
  22  s   3B B$#B$c                 L   [         R                  " 5       nUS:X  a  gU (       a=   [        R                  R	                  5       n[        R                  R                  5       $ [        [        S5      =(       a    [        R                  R                  5       $ ! [         a     gf = f)zX
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    [         R                  R                  S5      S L$ )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   