ó
    ±"³j½  ã                   óž   • S SK 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
  SSKJrJr  SS	KJr  S
\S\4S jr\" SS9 " S S\
5      5       rg)é    N)ÚSequence)Ú	dataclass©Úestimate_string_tokens)ÚRequestUsageé   )ÚEmbeddingModel)ÚEmbeddingResultÚEmbedInputType)ÚEmbeddingSettingsÚtextÚreturnc                 ó*   • U (       a  [        U 5      $ S$ )zŽEstimate the tokens in `text`, reporting zero for blank input.

The shared estimator counts blank text as one token; this model reports none.
r   r   )r   s    ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/embeddings/test.pyÚ_estimate_tokensr      s   € ö
 ,0Ô! $Ó'Ð6°QÐ6ó    F)Úinitc                   ó"  ^ • \ rS rSr% SrSr\\S'    \\S'    \\S'    Sr	\
S-  \S'     SS	S
SS.S\S\S\S\
S-  4U 4S jjjjr\S\4S j5       r\S\4S j5       rSS.S\\\   -  S\S\
S-  S\4S jjrS\S-  4S jrS\S\4S jrSrU =r$ )ÚTestEmbeddingModelé   a  A mock embedding model for testing.

This model returns deterministic embeddings (all 1.0 values) and tracks
the settings used in the last call via the `last_settings` attribute.

Example:
```python
from pydantic_ai import Embedder
from pydantic_ai.embeddings import TestEmbeddingModel

test_model = TestEmbeddingModel()
embedder = Embedder('openai:text-embedding-3-small')


async def main():
    with embedder.override(model=test_model):
        await embedder.embed_query('test')
        assert test_model.last_settings is not None
```
FÚ_model_nameÚ_provider_nameÚ_dimensionsNÚlast_settingsÚtesté   )Úprovider_nameÚ
dimensionsÚsettingsÚ
model_namer   r   r   c                óR   >• Xl         X l        X0l        SU l        [        TU ]  US9  g)a  Initialize the test embedding model.

Args:
    model_name: The model name to report in results.
    provider_name: The provider name to report in results.
    dimensions: The number of dimensions for the generated embeddings.
    settings: Optional default settings for the model.
N©r   )r   r   r   r   ÚsuperÚ__init__)Úselfr    r   r   r   Ú	__class__s        €r   r$   ÚTestEmbeddingModel.__init__;   s/   ø€ ð  &ÔØ+ÔØ%ÔØ!ˆÔÜ‰Ñ (ÐÒ+r   r   c                 ó   • U R                   $ )zThe embedding model name.)r   ©r%   s    r   r    ÚTestEmbeddingModel.model_nameQ   s   € ð ×ÑÐr   c                 ó   • U R                   $ )zThe embedding model provider.)r   r)   s    r   ÚsystemÚTestEmbeddingModel.systemV   s   € ð ×"Ñ"Ð"r   r"   ÚinputsÚ
input_typec             ƒ   óR  #   • U R                  X5      u  pX0l        UR                  S5      =(       d    U R                  n[	        S/U-  /[        U5      -  UU[        [        S U 5       5      S9U R                  U R                  [        [        R                  " 5       5      S9$ 7f)Nr   g      ð?c              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N©r   )Ú.0r   s     r   Ú	<genexpr>Ú+TestEmbeddingModel.embed.<locals>.<genexpr>g   s   é € Ð/ZÒSYÈ4Ô0@À×0FÐ0FÒSYùs   ‚)Úinput_tokens)Ú
embeddingsr.   r/   Úusager    r   Úprovider_response_id)Úprepare_embedr   Úgetr   r
   Úlenr   Úsumr    r,   ÚstrÚuuidÚuuid4)r%   r.   r/   r   r   s        r   ÚembedÚTestEmbeddingModel.embed[   s’   é € ð  ×-Ñ-¨fÓ?ÑˆØ%Ôà—\‘\ ,Ó/×C°4×3CÑ3Cˆ
äØ˜ 
Ñ*Ð+¬c°&«kÑ9ØØ!Ü¬CÑ/ZÑSYÓ/ZÓ,ZÑ[Ø—‘ØŸ+™+Ü!$¤T§Z¢Z£\Ó!2ñ
ð 	
ùs   ‚B%B'c              ƒ   ó   #   • g7f)Ni   © r)   s    r   Úmax_input_tokensÚ#TestEmbeddingModel.max_input_tokensm   s   é € Øùs   ‚r   c              ƒ   ó    #   • [        U5      $ 7fr2   r3   )r%   r   s     r   Úcount_tokensÚTestEmbeddingModel.count_tokensp   s   é € Ü Ó%Ð%ùs   ‚)r   r   r   r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__test__r?   Ú__annotations__Úintr   r   r$   Úpropertyr    r,   r   r   r
   rB   rF   rI   Ú__static_attributes__Ú__classcell__)r&   s   @r   r   r      s   ø‡ ñð, €HàÓØ.àÓØ1àÓØ<à.2€MÐ$ tÑ+Ó2Ø:ð !ð,ð $ØØ-1ò,àð,ð ð	,ð
 ð,ð $ dÑ*÷,ñ ,ð, ð ˜Có  ó ð ð ð#˜ó #ó ð#ð
 ptò
Ø˜H S™MÑ)ð
Ø:Hð
ØTeÐhlÑTlð
à	õ
ð$¨¨d©
ô ð& sð &¨s÷ &ò &r   r   )r@   Úcollections.abcr   Údataclassesr   Úpydantic_ai._utilsr   Úpydantic_ai.usager   Úbaser	   Úresultr
   r   r   r   r?   rR   r   r   rE   r   r   Ú<module>r\      sS   ðÛ Ý $Ý !å 5Ý *å  ß 3Ý 'ð7˜3ð 7 3ô 7ñ �Ñô[&˜ó [&ó ñ[&r   