
    6i	t              
           d dl mZmZmZ d dlmZmZmZmZm	Z	m
Z
mZmZ d dlZd dlmZmZmZ ddlmZ ddlmZmZ er	  G d d	      Z	 	 dd
ee   dee   dee   dee   fdZy)    )AsyncGenerator	GeneratorIterable)AnyClassVarOptionalcast
get_originget_argsUnionTYPE_CHECKINGN)	BaseModelFieldcreate_model   )Mode)extract_json_from_streamextract_json_from_stream_asyncc                      e Zd ZU dZeeee         ed<   e	de
e   dededeeddf   fd       Ze	deedf   dededeedf   fd       Ze	d	eedf   dedeedf   fd
       Ze	d	e
e   dedeeddf   fd       Ze	d	eedf   dedeedf   fd       Ze	dedefd       Zede
e   dedeeddf   fd       Zedeedf   dedeedf   fd       Zedededeee   ef   fd       Zy)IterableBaseN	task_type
completionmodekwargsreturnc              +     K   | j                  ||      }|t        j                  t        j                  hv rt	        |      }|t        j
                  t        j                  hv r[t        |      }|sy t        j                  |      }|d   sy |d   D ]*  } | j                  t        j                  |      fi | ,  | j                  |fi |E d {    y 7 w)Ntasks)extract_jsonr   MD_JSONGEMINI_TOOLSr   VERTEXAI_TOOLSMISTRAL_TOOLSnextjsonloadsextract_cls_task_typedumpstasks_from_chunks)clsr   r   r   json_chunksresponsejson_responseitems           b/root/.openclaw/workspace/visionaryfx/venv/lib/python3.12/site-packages/instructor/dsl/iterable.pyfrom_streaming_responsez$IterableBase.from_streaming_response   s      &&z48DLL$"3"3442;?KD''););<<K(H JJx0M )%g. L/c//

40@KFKKL )3((????s   CCCCc                F  K   | j                  ||      }|t        j                  k(  rt        |      }|t        j                  t        j
                  hv r" | j                  |fi |2 3 d {   }|  | j                  |fi |2 3 d {   }| 7 ,6 y 7 6 y w)N)extract_json_asyncr   r   r   r"   r!   tasks_from_mistral_chunkstasks_from_chunks_async)r)   r   r   r   r*   r-   s         r.   from_streaming_response_asyncz*IterableBase.from_streaming_response_async/   s      ,,Z>4<<8EKD&&(;(;<<;c;;KR6R  d
9c99+PP  d
	RPsN   A&B!(B,B-B0B!
BBBB!BB!BB!r*   c                   K   |2 3 d{   }|st        j                  |      }|d   s'|d   D ]-  } | j                  t        j                  |      fi |}| / ]7 X6 yw)zProcess streaming chunks from Mistral and VertexAI.

        Handles the specific JSON format used by these providers when streaming.Nr   )r$   r%   r&   r'   )r)   r*   r   chunkr,   r-   objs          r.   r2   z&IterableBase.tasks_from_mistral_chunks?   sw      ' 		 		% JJu-M )%g. /c//

40@KFK			;s&   A&A$A"A$AA&"A$$A&c              +      K   d}d}|D ]e  }||z  }|sd|v rd}||j                  d      dz   d  }	 | j                  |d      \  }}|r&| j                  J  | j                  |fi |}| nf? y wNF [T   r   find
get_objectr   r&   r)   r*   r   startedpotential_objectr6   	task_jsonr7   s           r.   r(   zIterableBase.tasks_from_chunksR   s        	E%%<"G',UZZ_q-@-B'C$.1nn=Mq.Q+	+==4443#33IHHCI 	s   A0A2c                   K   d}d}|2 3 d {   }||z  }|sd|v rd}||j                  d      dz   d  }	 | j                  |d      \  }}|r'| j                  J  | j                  |fi |}| nm@7 i6 y wr9   r=   r@   s           r.   r3   z$IterableBase.tasks_from_chunks_asynch   s      & 	 	%%%<"G',UZZ_q-@-B'C$.1nn=Mq.Q+	+==4443#33IHHCI 	;s&   A;A9A7A9A&A;7A99A;rC   c                 J   | j                   J t        | j                         t        u r4t        | j                         }|D ]  }	  |j                  |fi |}|c S  n | j                   j                  |fi |S t        d| d| j                          # t
        $ r Y `w xY w)Nz!Failed to extract task type with z for )r   r
   r   r   model_validate_json	Exception
ValueError)r)   rC   r   union_membersmemberr7   s         r.   r&   z"IterableBase.extract_cls_task_type~   s     }}(((cmm$-$S]]3M' 4&44YI&ICJ 53==44YI&II/	{%O
 	
	 ! s   B	B"!B"c           	   #     K   d}| D ]]  }	 |t         j                  t         j                  hv r9t        |dd       }|dk(  rYt        |dd       x}r|sAt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n|dk(  rt        |dd       }t        |dd       xs t        |dd       }|rI|sAt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| nUt        |dd       x}rE|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rYd
}||d  }| n|dk(  rt        |dd       }	|	rlt        j                  |	d   j                        }|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n{t        |dd       x}rk|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  r3d
}||d  }| n!t        |dd       }
|
dk(  rt        |dd       }t        |dd       }t        |dd       }t        |dd       x}r|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n|
dk(  rt        |dd       }t        |dd       }t        |dd       }	t        |	dd       }t        |dd       x}rH|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rVd
}||d  }| |t         j                  k(  r|j                  j                  x}r| |t         j                  k(  r|j                  j                   |t         j                  k(  r|j                   |t         j                  k(  r2|j                   d   j"                  j$                  d   j                   |t         j&                  k(  rOt        j                  |j                   d   j"                  j$                  d   j(                  j*                         |t         j,                  k(  r/|j.                  j0                  d   j                  j"                   |t         j2                  k(  ru|j.                  j0                  d   j                  j4                  s|j.                  j0                  d   j                  j4                  d   j6                  j8                   |t         j:                  hv rOt        j                  |j                   d   j"                  j$                  d   j(                  j*                         |t         j<                  hv r2|j                   d   j"                  j$                  d   j                   |t         j>                  hv rh|j                   d   j"                  j$                  d   j(                  }tA        |      jC                  |      }d|v rt        j                  |d          |t         jD                  t         jF                  hv r#dd l$m%} tM        ||      r|j                   n|j0                  r|t         jN                  k(  rJt        jP                          |j0                  d   j                  j(                  j8                  x}rF| n@|t         jR                  t         jT                  t         jV                  t         jX                  t         jZ                  t         j\                  t         j^                  hv r*|j0                  d   j                  j"                  x}r| n|t         j`                  t         jb                  t         jd                  t         jf                  hv rZ|j0                  d   j                  j4                  x}rD|d   j6                  j8                  +|d   j6                  j8                   nti        d!| d"      ` y # tj        $ r Y nw xY ww)#NF
event_typetext-generationtextc              3   *   K   | ]  }|d k7  r|  ywN .0poss     r.   	<genexpr>z,IterableBase.extract_json.<locals>.<genexpr>         %&,/+."9 ),%&   {r;   rQ   defaultTtool-calls-chunktool_call_delta
parametersc              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>   rW   rX   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>   rW   rX   tool-calls-generation
tool_callsr   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>   rW   rX   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>   rW   rX   typecontent-deltadeltamessagecontentc              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>   !      )*03 03by -0)*rX   tool-call-deltafunction	argumentsc              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z,IterableBase.extract_json.<locals>.<genexpr>  rk   rX   args'ResponseFunctionCallArgumentsDeltaEventMode ) is not supported for MultiTask streaming)6r   COHERE_TOOLSCOHERE_JSON_SCHEMAgetattrminr>   r$   r'   r^   ANTHROPIC_JSONrg   rN   ANTHROPIC_TOOLSpartial_jsonGEMINI_JSONVERTEXAI_JSON
candidatesri   partsr!   function_callrp   MISTRAL_STRUCTURED_OUTPUTSdatachoicesr"   rb   rm   rn   GENAI_TOOLSGENAI_STRUCTURED_OUTPUTSr    re   to_dictRESPONSES_TOOLS"RESPONSES_TOOLS_WITH_INBUILT_TOOLSopenai.types.responsesrr   
isinstance	FUNCTIONSwarn_mode_functions_deprecationJSONr   JSON_SCHEMACEREBRAS_JSONFIREWORKS_JSONPERPLEXITY_JSONWRITER_JSONTOOLSTOOLS_STRICTFIREWORKS_TOOLSWRITER_TOOLSNotImplementedErrorAttributeError)r   r   json_startedr6   rL   rN   
json_startrg   rp   rb   
chunk_typerh   ri   rm   
json_chunkresp	resp_dictrr   s                     r.   r   zIterableBase.extract_json   s      Q	EPD--t/F/FGG!(d!CJ!%66#*5&$#??4?#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J#'99 '/@$ G&ulDA  W!64F  #/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%AATA#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J#'>>%,UL$%G
%#'::jm.F.F#GD#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%AATA#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%A
%8$+E7D$AE&-eY&EG&-gy$&GG'.w'EEtE'314)* 15		#04		#8.)* 13
2&J (2R'7(037L+/
+<D&*
'+<<$+E7D$AE&-eY&EG)0,)MJ'.z:t'LH'.xd'KKtK'314)* 15		#04		#8.)* 13
2&J (2R'7(037L+/
+<D&*
4...%*[[%5%55z5((4///++2224+++**$4---**1-55;;A>CCC4...**((+3399!<JJOO  4:::**,,Q/55===4--- ::--a066AA **,,Q/55@@CLLVVVD,,--**((+3399!<JJOO  D99::**1-55;;A>CCCD--.. ++A.66<<Q?MMD $T
 2 24 8I*"jj6):;;((;;  "%)PQ#kk)]]t~~-<<>).q)9)?)?)M)M)W)WW:W",,		((**++,,(("  */q)9)?)?)G)GG:G",,

)),,))	"  */q)9)?)?)J)JJ:J)!}55??K&0m&<&<&F&F F1#D6)RS [Q	` " s   	a9B a)a9A8a)a9Aa)a9 A>a)a9 Aa)8a9:Ba)
a9Ba)a9F/a)a9Ma)%a9)	a62a95a66a9c           	       K   d}| 2 3 d {   }	 |t         j                  t         j                  hv rAt        |dd       }|dk(  rZt        |dd       x}r|sAt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n|dk(  rt        |dd       }t        |dd       xs t        |dd       }|rK|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| nZt        |dd       x}rJ|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rad
}||d  }| n|dk(  rt        |dd       }	|	rmt        j                  |	d   j                        }|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n~t        |dd       x}rn|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  r=d
}||d  }| n#t        |dd       }
|
dk(  rt        |dd       }t        |dd       }t        |dd       }t        |dd       x}r|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rd
}||d  }| n|
dk(  rt        |dd       }t        |dd       }t        |dd       }	t        |	dd       }t        |dd       x}rI|sBt	        d |j                  d      |j                  d      fD        d	      }|dk(  rbd
}||d  }| |t         j                  k(  r|j                  j                  x}r| |t         j                  k(  r|j                  j                   |t         j                  k(  r3|j                  d   j                   j"                  d   j                   |t         j$                  k(  rPt        j                  |j                  d   j                   j"                  d   j&                  j(                         |t         j*                  k(  r0|j,                  j.                  d   j                  j                    |t         j0                  k(  rv|j,                  j.                  d   j                  j2                  s|j,                  j.                  d   j                  j2                  d   j4                  j6                   |t         j8                  k(  r|j                   |t         j:                  hv rPt        j                  |j                  d   j                   j"                  d   j&                  j(                         |t         j<                  t         j>                  hv r$ddl m!} tE        ||      r|j                   n|j.                  r|t         jF                  k(  rKt        jH                          |j.                  d   j                  j&                  j6                  x}rI| nB|t         jJ                  t         jL                  t         jN                  t         jP                  t         jR                  t         jT                  t         jV                  hv r+|j.                  d   j                  j                   x}r| n|t         jX                  t         jZ                  t         j\                  t         j^                  hv r[|j.                  d   j                  j2                  x}rE|d   j4                  j6                  ,|d   j4                  j6                   nta        d | d!      7 # tb        $ r Y w xY w6 y w)"NFrL   rM   rN   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>x  rW   rX   rY   r;   rQ   rZ   Tr\   r]   r^   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rW   rX   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rW   rX   ra   rb   r   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rW   rX   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rW   rX   re   rf   rg   rh   ri   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rk   rX   rl   rm   rn   c              3   *   K   | ]  }|d k7  r|  ywrP   rR   rS   s     r.   rV   z2IterableBase.extract_json_async.<locals>.<genexpr>  rk   rX   rq   rs   rt   )2r   ru   rv   rw   rx   r>   r$   r'   r^   ry   rg   rN   rz   r{   r}   r~   ri   r   r!   r   rp   r   r   r   r"   rb   rm   rn   r   r   r   r   r   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r6   rL   rN   r   rg   rp   rb   r   rh   ri   rm   r   rr   s                   r.   r1   zIterableBase.extract_json_asynck  s     % F	 F	%ED--t/F/FGG!(d!CJ!%66#*5&$#??4?#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J#'99 '/@$ G&ulDA  W!64F  #/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%AATA#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J#'>>%,UL$%G
%#'::jm.F.F#GD#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%AATA#/-0%&48IIcNDIIcN3S%&
 -/."
 $.#3$,/3'+JK'8"&J%,UFD%A
%8$+E7D$AE&-eY&EG&-gy$&GG'.w'EEtE'314)* 15		#04		#8.)* 13
2&J (2R'7(037L+/
+<D&*
'+<<$+E7D$AE&-eY&EG)0,)MJ'.z:t'LH'.xd'KKtK'314)* 15		#04		#8.)* 13
2&J (2R'7(037L+/
+<D&*
4...%*[[%5%55z5((4///++2224---**1-55;;A>CCC4...**((+3399!<JJOO  4:::**,,Q/55===4--- ::--a066AA **,,Q/55@@CLLVVV4888**$D,,--**((+3399!<JJOO  ((;;  "%)PQ#kk)]]t~~-<<>).q)9)?)?)M)M)W)WW:W",,		((**++,,(("  */q)9)?)?)G)GG:G",,

)),,))	"  */q)9)?)?)J)JJ:J)!}55??K&0m&<&<&F&F F1#D6)RS EF	J " K &s   ___ __B __A9__A_&_(A?_'_)A__B__B_'_)F_=_?J?_>_ _	____sstackc                     | j                  d      }t        |       D ]1  \  }}|dk(  r|dz  }|dk(  s|dz  }|dk(  s!| ||dz    | |dz   d  fc S  d | fS )NrY   r<   }r   r   )r>   	enumerate)r   r   start_indexics        r.   r?   zIterableBase.get_object8  sx    ffSkaL 	>DAqCx
Cx
A:[1q511QUW:==	> Qw    )__name__
__module____qualname__r   r   r   re   r   __annotations__classmethodr   r   r   r   r/   r   r4   strr2   r(   r3   r&   staticmethodr   r1   inttupler?   rR   r   r.   r   r      sB   59Ixi129@!#@.2@>A@	9dD(	)@ @, 'T	2:>JM		4	(  (d3?B		4	( $ "3-36	9dD(	) * (d3?B		4	( * 

 
 
( USMU)-U	3d?	#U Un J"39-J59J	T		"J JX 	c 	# 	%s0B*C 	 	r   r   subtask_classnamedescriptionr   c                    ddl m} 	 ||}nPt        | dd       }|4t        |       t        u r#t        |       }dj                  d |D              }|t        |       }d| }t        |    t        t        dd| d	
      f}t        t        t        t           df   |t        f      }t        |||      }t        t        t           |      }| |_        |d| d	n||_        t%        ||      sJ d       |S )Nr   )OpenAISchemar   Orc              3   H   K   | ]  }t        |d t        |              yw)r   N)rw   r   )rT   ms     r.   rV   z IterableModel.<locals>.<genexpr>  s     !RQ'!ZQ"@!Rs    "r   FzCorrectly segmented list of `z` tasks)default_factoryreprr   .)r   __base__zCorrect segmentation of `z2The new class should be a subclass of OpenAISchema)processing.function_callsr   rw   r
   r   r   joinr   listr   r	   r   re   r   r   r   r   __doc__
issubclass)	r   r   r   r   	task_namemembers
list_tasksbase_modelsnew_clss	            r.   IterableModelr   E  s5    91d 	 M:t<	M!:e!C}-G		!R'!RRIM*Ii[!D 	] 7	{'J	
J uT)_c12\<4PQKG
 4%w/G &G  $I;g6 O
 g|, <, Nr   )NN)collections.abcr   r   r   typingr   r   r   r	   r
   r   r   r   r$   pydanticr   r   r   r   r   utilsr   r   r   re   r   r   rR   r   r.   <module>r      s    ? ?	 	 	  3 3  Lm md !%d	?d
3-d #d 
)_	dr   