ó
    >:jþ  ã                  óò   • % S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKrS SKJr  \R                  " \5      r/ SQrS\S'   \R&                  SS	 j5       rSS
 jrSS jrSS jrSS jrSS jrg)é    )ÚannotationsN)Ú	Generator)ÚPackageNotFoundErrorÚmetadata)Úis_torch_npu_available)))ÚpillowÚpilú-pip install -U "sentence-transformers[image]"))Ú
read_videozQpip install -U "sentence-transformers[video]"  # or [audio] for audio-only models))Útorchvisionr
   ))Ú
torchcodeczpip install -U torchcodec))Ú	soundfileÚlibrosaz-pip install -U "sentence-transformers[audio]"z!list[tuple[tuple[str, ...], str]]Ú_DEPENDENCY_EXTRA_HINTSc               #  ó*  ^#   •  Sv •  g! [         [        4 av  n [        U 5      R                  5       m[         HM  u  p[        U4S jU 5       5      (       d  M!  [        U 5      " [        U 5      R                  5        SU 35      U e   e Sn A ff = f7f)zaRe-raise ImportError/AttributeError with an install hint when a multimodal dependency is missing.Nc              3  ó,   >#   • U  H	  oT;   v •  M     g 7f)N© )Ú.0ÚkwÚmsgs     €Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sentence_transformers/util/environment.pyÚ	<genexpr>Ú-suggest_extra_on_exception.<locals>.<genexpr>#   s   øé € Ð0¢x ˜–9¢xùs   ƒz-

To install the required dependencies, run:
)ÚImportErrorÚAttributeErrorÚstrÚlowerr   ÚanyÚtypeÚstrip)ÚeÚkeywordsÚhintr   s      @r   Úsuggest_extra_on_exceptionr$      s~   øé € ðÜøÜœÐ(ó Ü�!‹f�l‰l‹nˆß5‰NˆHÜÔ0¡xÓ0×0Ó0Ü˜1”g¤ Q£§¡£Ð 0Ð0`ÐaeÐ`fÐgÓhÐnoÐoñ 6ð 	ûðüs*   ƒB…
 ‰BŠBš<BÁ1BÂBÂBc                 ó&  • [         R                  R                  5       (       a¸  S[        R                  ;   a  [        [        R                  S   5      n O‚[         R                  R                  5       (       a]  [         R                  R                  5       [         R                  R                  5       :”  a  [         R                  R                  5       n OSn SU  3$ [         R                  R                  R                  5       (       a  g[        5       (       a  g[        [         S5      (       a$  [         R                  R                  5       (       a  g[        R                   R#                  S5      b  SSKJ s  Jn  UR                  5       (       a  g	g
)a>  
Returns the name of the device where this module is running on.

This function only supports single device or basic distributed training setups.
In distributed mode for cuda device, it uses the rank to assign a specific CUDA device.

Returns:
    str: Device name, like 'cuda:2', 'mps', 'npu', 'xpu', 'hpu', or 'cpu'
Ú
LOCAL_RANKr   zcuda:ÚmpsÚnpuÚxpuÚhabana_frameworksNÚhpuÚcpu)ÚtorchÚcudaÚis_availableÚosÚenvironÚintÚdistributedÚis_initializedÚdevice_countÚget_rankÚbackendsr'   r   Úhasattrr)   Ú	importlibÚutilÚ	find_specÚhabana_frameworks.torch.hpur+   )Ú
local_rankÚhthpus     r   Úget_device_namer?   (   s  € ô ‡z�z×Ñ× Ñ Øœ2Ÿ:™:Ó%ÜœRŸZ™Z¨Ñ5Ó6‰JÜ×Ñ×-Ñ-×/Ñ/´E·J±J×4KÑ4KÓ4MÔPU×PaÑPa×PjÑPjÓPlÓ4lÜ×*Ñ*×3Ñ3Ó5‰JàˆJØ�z�lÐ#Ð#Ü	�‰×	Ñ	×	(Ñ	(×	*Ñ	*ØÜ	×	!Ñ	!ØÜ	”˜×	Ñ	¤5§9¡9×#9Ñ#9×#;Ñ#;ØÜ	�‰×	!Ñ	!Ð"5Ó	6Ñ	Bß3Ð3à×Ñ×ÑØØó    c                ó€   •  [        U 5      nUS   nUS   U :H  =(       a    USL=(       a    X;   $ ! [         a     gf = f)z:
Checks if a package is available from the correct owner.
z	Home-pageÚNameNF)r   r   )Úpackage_nameÚownerÚmetaÚ	home_pages       r   Úcheck_package_availabilityrG   H   sN   € ðÜ˜Ó%ˆØ˜Ñ%ˆ	Ø�F‰|˜|Ñ+×\°	ÀÐ0E×\È%ÑJ\Ð\øÜó Ùðús   ‚-0 °
=¼=c                 ó   • [        SS5      $ )zB
Returns True if the Huggingface accelerate library is available.
Ú
accelerateÚhuggingface©rG   r   r@   r   Úis_accelerate_availablerL   T   s   € ô & l°MÓBÐBr@   c                 ó   • [        SS5      $ )z@
Returns True if the Huggingface datasets library is available.
ÚdatasetsrJ   rK   r   r@   r   Úis_datasets_availablerO   [   s   € ô & j°-Ó@Ð@r@   c                 ó8   • [        5       =(       a
    [        5       $ )z”
Returns True if we have the required dependencies for training Sentence
Transformers models, i.e. Huggingface datasets and Huggingface accelerate.
)rL   rO   r   r@   r   Úis_training_availablerQ   b   s   € ô
 #Ó$×@Ô)>Ó)@Ð@r@   )ÚreturnzGenerator[None, None, None])rR   r   )rC   r   rD   r   rR   Úbool)rR   rS   )Ú
__future__r   Ú
contextlibr9   Úloggingr0   Úcollections.abcr   Úimportlib.metadatar   r   r-   Útransformersr   Ú	getLoggerÚ__name__Úloggerr   Ú__annotations__Úcontextmanagerr$   r?   rG   rL   rO   rQ   r   r@   r   Ú<module>r_      sw   ðÞ "ã Û Û Û 	Ý %ß =ã Ý /à	×	Ò	˜8Ó	$€ò>Ð Ð:ó ð ×Ñó	ó ð	ôô@	ôCôAõAr@   