
    7|h	                         d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ  G d de      Z G d	 d
e      Zy)    N)AnyAsyncIteratorIteratorListMappingOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LanguageModelInput)LLM)RunnableConfigc                       e Zd ZU dZee   ed<   dZee	   ed<   dZ
eed<   edefd       Z	 	 dd	ed
eee      dee   dedef
dZ	 	 dd	ed
eee      dee   dedef
dZedeeef   fd       Zy)FakeListLLMzFake LLM for testing purposes.	responsesNsleepr   ireturnc                      y)zReturn type of llm.z	fake-list selfs    \/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/fake.py	_llm_typezFakeListLLM._llm_type   s         promptstoprun_managerkwargsc                     | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        |S d| _        |S zReturn next response   r   r   r   lenr   r   r   r   r   responses         r   _callzFakeListLLM._call   sR     >>$&&)66C'!++FFaKF  DFr   c                    K   | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        |S d| _        |S wr    r"   r$   s         r   _acallzFakeListLLM._acall)   sV      >>$&&)66C'!++FFaKF  DFs   AA!c                     d| j                   iS )Nr   )r   r   s    r   _identifying_paramszFakeListLLM._identifying_params8   s    T^^,,r   )NN)__name__
__module____qualname____doc__r   str__annotations__r   r   floatr   intpropertyr   r
   r   r&   r	   r(   r   r*   r   r   r   r   r      s    (Cy!E8E?!AsJ3   %):>	 tCy! 67	
  
$ %)?C	 tCy! ;<	
  
 -WS#X%6 - -r   r   c                       e Zd ZdZ	 ddddedee   deee      de	de
e   f
d	Z	 ddddedee   deee      de	dee   f
d
Zy)FakeStreamingListLLMz-Fake streaming list LLM for testing purposes.N)r   inputconfigr   r   r   c             +      K   | j                  ||      }|D ]1  }| j                  t        j                  | j                         | 3 y wN)invoker   timer   r6   r7   r   r   resultcs          r   streamzFakeStreamingListLLM.stream@   sF      UF+ 	Azz%

4::&G	s   A
Ac                  K   | j                  ||       d {   }|D ]:  }| j                  't        j                  | j                         d {    | < y 7 D7 wr9   )ainvoker   asyncior<   s          r   astreamzFakeStreamingListLLM.astreamN   sZ      ||E622 	Azz%mmDJJ///G	 3 0s!   A!A7A!AA!A!r9   )r+   r,   r-   r.   r   r   r   r   r/   r   r   r?   r   rC   r   r   r   r5   r5   =   s    7
 ,0
 %)! (
 tCy!  
#" ,0
 %)! (
 tCy!  
s	r   r5   )rB   r;   typingr   r   r   r   r   r   langchain_core.callbacksr	   r
   langchain_core.language_modelsr   #langchain_core.language_models.llmsr   langchain_core.runnablesr   r   r5   r   r   r   <module>rI      s:      H H > 3 3,-# ,-^; r   