ó
    — óhD  ã                  ó~   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  SSK
JrJrJrJrJrJrJrJr   " S S	\5      rg
)é    )Úannotations)ÚEnum)ÚCallable)Úndarray)ÚTensoré   )Úcos_simÚ	dot_scoreÚeuclidean_simÚmanhattan_simÚpairwise_cos_simÚpairwise_dot_scoreÚpairwise_euclidean_simÚpairwise_manhattan_simc                  óx   • \ rS rSrSrSrSrSrSrSr	\
    SS j5       r\
    SS j5       r\
SS	 j5       rS
rg)ÚSimilarityFunctioné   a†  
Enum class for supported similarity functions. The following functions are supported:

- ``SimilarityFunction.COSINE`` (``"cosine"``): Cosine similarity
- ``SimilarityFunction.DOT_PRODUCT`` (``"dot"``, ``dot_product``): Dot product similarity
- ``SimilarityFunction.EUCLIDEAN`` (``"euclidean"``): Euclidean distance
- ``SimilarityFunction.MANHATTAN`` (``"manhattan"``): Manhattan distance
ÚcosineÚdotÚ	euclideanÚ	manhattanc                ó0  • [        U 5      n U [         R                  :X  a  [        $ U [         R                  :X  a  [        $ U [         R
                  :X  a  [        $ U [         R                  :X  a  [        $ [        SU  S[         R                  5        S35      e)ay  
Converts a similarity function name or enum value to the corresponding similarity function.

Args:
    similarity_function (Union[str, SimilarityFunction]): The name or enum value of the similarity function.

Returns:
    Callable[[Union[Tensor, ndarray], Union[Tensor, ndarray]], Tensor]: The corresponding similarity function.

Raises:
    ValueError: If the provided function is not supported.

Example:
    >>> similarity_fn = SimilarityFunction.to_similarity_fn("cosine")
    >>> similarity_scores = similarity_fn(embeddings1, embeddings2)
    >>> similarity_scores
    tensor([[0.3952, 0.0554],
            [0.0992, 0.1570]])
úThe provided function ú4 is not supported. Use one of the supported values: Ú.)r   ÚCOSINEr	   ÚDOT_PRODUCTr
   Ú	MANHATTANr   Ú	EUCLIDEANr   Ú
ValueErrorÚpossible_values©Úsimilarity_functions    Úd/home/james-whalen/.local/lib/python3.13/site-packages/sentence_transformers/similarity_functions.pyÚto_similarity_fnÚ#SimilarityFunction.to_similarity_fn%   s¬   € ô. 1Ð1DÓEÐàÔ"4×";Ñ";Ó;ÜˆNØÔ"4×"@Ñ"@Ó@ÜÐØÔ"4×">Ñ">Ó>Ü Ð ØÔ"4×">Ñ">Ó>Ü Ð äØ$Ð%8Ð$9Ð9mô  oA÷  oQñ  oQó  oSð  nTð  TUð  Vó
ð 	
ó    c                ó0  • [        U 5      n U [         R                  :X  a  [        $ U [         R                  :X  a  [        $ U [         R
                  :X  a  [        $ U [         R                  :X  a  [        $ [        SU  S[         R                  5        S35      e)aH  
Converts a similarity function into a pairwise similarity function.

The pairwise similarity function returns the diagonal vector from the similarity matrix, i.e. it only
computes the similarity(a[i], b[i]) for each i in the range of the input tensors, rather than
computing the similarity between all pairs of a and b.

Args:
    similarity_function (Union[str, SimilarityFunction]): The name or enum value of the similarity function.

Returns:
    Callable[[Union[Tensor, ndarray], Union[Tensor, ndarray]], Tensor]: The pairwise similarity function.

Raises:
    ValueError: If the provided similarity function is not supported.

Example:
    >>> pairwise_fn = SimilarityFunction.to_similarity_pairwise_fn("cosine")
    >>> similarity_scores = pairwise_fn(embeddings1, embeddings2)
    >>> similarity_scores
    tensor([0.3952, 0.1570])
r   r   r   )r   r   r   r   r   r   r   r   r   r    r!   r"   s    r$   Úto_similarity_pairwise_fnÚ,SimilarityFunction.to_similarity_pairwise_fnK   s­   € ô4 1Ð1DÓEÐàÔ"4×";Ñ";Ó;Ü#Ð#ØÔ"4×"@Ñ"@Ó@Ü%Ð%ØÔ"4×">Ñ">Ó>Ü)Ð)ØÔ"4×">Ñ">Ó>Ü)Ð)äØ$Ð%8Ð$9Ð9mô  oA÷  oQñ  oQó  oSð  nTð  TUð  Vó
ð 	
r'   c                 óL   • [          V s/ s H  o R                  PM     sn $ s  sn f )a$  
Returns a list of possible values for the SimilarityFunction enum.

Returns:
    list: A list of possible values for the SimilarityFunction enum.

Example:
    >>> possible_values = SimilarityFunction.possible_values()
    >>> possible_values
    ['cosine', 'dot', 'euclidean', 'manhattan']
)r   Úvalue)Úms    r$   r!   Ú"SimilarityFunction.possible_valuest   s    € õ "4Ó4Ò!3˜A—”Ñ!3Ñ4Ð4ùÒ4s   ‰!© N)r#   zstr | SimilarityFunctionÚreturnz6Callable[[Tensor | ndarray, Tensor | ndarray], Tensor])r0   z	list[str])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   ÚDOTr   r   Ústaticmethodr%   r)   r!   Ú__static_attributes__r/   r'   r$   r   r      s~   † ñð €FØ€KØ
€CØ€IØ€Iàð#
Ø5ð#
à	?ó#
ó ð#
ðJ ð&
Ø5ð&
à	?ó&
ó ð&
ðP ó5ó ó5r'   r   N)Ú
__future__r   Úenumr   Útypingr   Únumpyr   Útorchr   Úutilr	   r
   r   r   r   r   r   r   r   r/   r'   r$   Ú<module>r?      s1   ðÝ "å Ý å Ý ÷	÷ 	ó 	ôl5˜õ l5r'   