
    6i                        d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d dl
mZ ddlmZ e	rddlmZ  ed	e
      Zn
 ed	e
      Z G d d      Z G d de      Ze j,                  dk\  rd dlmZ deee      defdZndeee      defdZdeee      deee   df   fdZdeee      deee ef      fdZ!deee      deee ef      fdZ"deee      defdZ#deee      defdZ$ G d de      Z%deee      de%fdZ&y)    N)AnyOptionalTypeVarUnionget_args
get_originTYPE_CHECKING)	Generator)	BaseModel)Iterable   )Mode)OpenAISchemaT)boundc                   X    e Zd Zdee   fdZ	 	 d
dededee   dee	   de
eddf   f
d	Zy)ParallelBasemodelsc                     t        |      dkD  sJ d       || _        |D ci c]&  }t        |d      r|j                  n
t	        |      |( c}| _        y c c}w )Nr   zAt least one model is required__name__)lenr   hasattrr   strregistry)selfr   models      b/root/.openclaw/workspace/visionaryfx/venv/lib/python3.12/site-packages/instructor/dsl/parallel.py__init__zParallelBase.__init__   sX    6{Q@ @@  
 &eZ8ENNc%j%O
 
s   +ANresponsemodevalidation_contextstrictreturnc              #   .  K   |t         j                  k(  sJ d       |j                  d   j                  j                  D ]Q  }|j
                  j                  }|j
                  j                  }| j                  |   j                  |||       S y w)NzMode must be PARALLEL_TOOLSr   contextr"   )
r   PARALLEL_TOOLSchoicesmessage
tool_callsfunctionname	argumentsr   model_validate_json)r   r   r    r!   r"   	tool_callr,   r-   s           r   from_responsezParallelBase.from_response%   s      t***I,II*!))!,44?? 	I%%**D!**44I--%99#5f :  	s   BBNN)r   
__module____qualname__typer   r   r   r   r   boolr
   r0        r   r   r      sc    
Y 
 -1!%  %SM	
  
9dD(	)r7   r   c                   F    e Zd Z	 	 ddededee   dee   deeddf   f
dZ	y)	VertexAIParallelBaseNr   r    r!   r"   r#   c              #     K   |t         j                  k(  sJ d       |r|j                  sy |j                  D ]  }|j                  r|j                  j                  s&|j                  j                  D ]  }t        |d      s|j                  |j                  j                  }|j                  j                  }|| j                  v sXt        j                  |      }	| j                  |   j                  |	||         y w)Nz$Mode must be VERTEXAI_PARALLEL_TOOLSfunction_callr%   )r   VERTEXAI_PARALLEL_TOOLS
candidatescontentpartsr   r;   r,   argsr   jsondumpsr.   )
r   r   r    r!   r"   	candidatepartr,   r-   json_strs
             r   r0   z"VertexAIParallelBase.from_response8   s      t333 	
2	
3 x22!,, 	I$$I,=,=,C,C!))// 
41d6H6H6T--22D $ 2 2 7 7It}},#'::i#8"mmD1EE$.@ F  
		s   BD	D	:D	=D	r1   
r   r2   r3   r   r   r   r5   r
   r   r0   r6   r7   r   r9   r9   7   sS    
 -1!%  %SM	
  
9dD(	)r7   r9   )   
   )	UnionTypetypehintr#   c                 H    t        t        |       d         t        t        fv S Nr   )r   r   r   rI   rJ   s    r   is_union_typerN   Z   s!    (8,Q/0UI4FFFr7   c                 <    t        t        |       d         t        u S rL   )r   r   r   rM   s    r   rN   rN   _   s    (8,Q/0E99r7   .c                     t        |       }|t        urt        d|        t        |       rt	        t	        |       d         }|S t	        |       S )Nz)Model should be with Iterable instead of r   )r   r   	TypeErrorrN   r   )rJ   should_be_iterable	the_typess      r   get_types_arrayrT   c   sW    #H-)CH:NOOXXh/23	 Hr7   c                 t    ddl m} t        |       }|D cg c]  }d ||      j                  d c}S c c}w )Nr   openai_schemar+   )r4   r+   )processing.function_callsrW   rT   rJ   rW   rS   r   s       r   handle_parallel_modelrZ   r   sA    9)I  u)=)K)KL  s   5c                 n    ddl m} t        |       }|D cg c]  } ||      j                   c}S c c}w )Nr   rV   )rX   rW   rT   anthropic_schemarY   s       r   handle_anthropic_parallel_modelr]   }   s0     :)I?HIeM% 11IIIs   2c                 N    t        |       }t        |D cg c]  }| c} S c c}w N)rT   r   rJ   rS   r   s      r   ParallelModelra      s%    )IY7E%7887   	"c                 N    t        |       }t        |D cg c]  }| c} S c c}w r_   )rT   r9   r`   s      r   VertexAIParallelModelrd      s%    )IY!?E%!?@@!?rb   c                   F    e Zd Z	 	 ddededee   dee   deeddf   f
dZ	y)	AnthropicParallelBaseNr   r    r!   r"   r#   c              #   `  K   |t         j                  k(  sJ d       |rt        |d      sy |j                  D ]r  }t	        |dd       dk(  s|j
                  }|j                  }|| j                  v s;t        j                  |      }| j                  |   j                  |||       t y w)Nz%Mode must be ANTHROPIC_PARALLEL_TOOLSr>   r4   tool_user%   )r   ANTHROPIC_PARALLEL_TOOLSr   r>   getattrr,   inputr   rA   rB   r.   )	r   r   r    r!   r"   r>   r,   r-   rE   s	            r   r0   z#AnthropicParallelBase.from_response   s      t444 	
3	
4 wx;'' 	Gw-;||#MM	4==(#zz)4H---AA *<V B  	s   A	B.&B.3;B.r1   rF   r6   r7   r   rf   rf      sS    
 -1!%  %SM	
  
9dD(	)r7   rf   c                 N    t        |       }t        |D cg c]  }| c} S c c}w r_   )rT   rf   r`   s      r   AnthropicParallelModelrm      s%    )I i"@U5"@AA"@rb   )'sysrA   typingr   r   r   r   r   r   r	   collections.abcr
   pydanticr   r   r    r   rX   r   r   r   r9   version_infotypesrI   r4   r5   rN   tuplerT   listdictr   rZ   r]   ra   rd   rf   rm   r6   r7   r   <module>rw      s   
    &  $ 8<(A 	9%A 8< @ wGXa[ 1 Gd G
:Xa[ 1 :d :d8A;/ E$q'3,4G D!$5 $tCH~:N J8A;J	$sCx.J9D!- 9, 9
AD!$5 A:N A
L 4BT(1+%6 B;P Br7   