o
    i	                     @  s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZmZmZmZ eddG dd deZdS )    )annotations)AsyncIterator)asynccontextmanager)	dataclass)cached_property)Any   )
RunContext)ModelMessageModelResponse)ModelProfile)ModelSettings   )KnownModelNameModelModelRequestParametersStreamedResponseinfer_modelF)initc                      s   e Zd ZU dZded< 	 d, fddZd-ddZe	d.d/ddZd0ddZ	d1ddZ
ed2d d!Zed2d"d#Zed3d%d&Zed4d'd(Zd5d*d+Z  ZS )6WrapperModelzYModel which wraps another model.

    Does nothing on its own, used as a base class.
    r   wrappedModel | KnownModelNamec                   s   t    t|| _d S N)super__init__r   r   )selfr   	__class__ `/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/models/wrapper.pyr      s   
zWrapperModel.__init__argsr   kwargsreturnr   c                   s   | j j|i |I d H S r   )r   request)r   r    r!   r   r   r   r#      s   zWrapperModel.requestNmessageslist[ModelMessage]model_settingsModelSettings | Nonemodel_request_parametersr   run_contextRunContext[Any] | NoneAsyncIterator[StreamedResponse]c              	   C sT   | j ||||4 I d H }|V  W d   I d H  d S 1 I d H s#w   Y  d S r   )r   request_stream)r   r$   r&   r(   r)   response_streamr   r   r   r,   !   s   .zWrapperModel.request_streamc                 C  s   | j |S r   )r   customize_request_parameters)r   r(   r   r   r   r.   .      z)WrapperModel.customize_request_parameters3tuple[ModelSettings | None, ModelRequestParameters]c                 C  s   | j ||S r   )r   prepare_request)r   r&   r(   r   r   r   r1   1   s   zWrapperModel.prepare_requeststrc                 C     | j jS r   )r   
model_namer   r   r   r   r4   8      zWrapperModel.model_namec                 C  r3   r   )r   systemr5   r   r   r   r7   <   r6   zWrapperModel.systemr   c                 C  r3   r   )r   profiler5   r   r   r   r8   @   r6   zWrapperModel.profilec                 C  r3   )z(Get the settings from the wrapped model.)r   settingsr5   r   r   r   r9   D   s   zWrapperModel.settingsitemc                 C  s   t | j|S r   )getattrr   )r   r:   r   r   r   __getattr__I   r/   zWrapperModel.__getattr__)r   r   )r    r   r!   r   r"   r   r   )
r$   r%   r&   r'   r(   r   r)   r*   r"   r+   )r(   r   r"   r   )r&   r'   r(   r   r"   r0   )r"   r2   )r"   r   )r"   r'   )r:   r2   )__name__
__module____qualname____doc____annotations__r   r#   r   r,   r.   r1   propertyr4   r7   r   r8   r9   r<   __classcell__r   r   r   r   r      s(   
 


r   N)
__future__r   collections.abcr   
contextlibr   dataclassesr   	functoolsr   typingr   _run_contextr	   r$   r
   r   profilesr   r9   r    r   r   r   r   r   r   r   r   r   r   <module>   s    