ó
    °"³j	  ã            	      óD  • S SK Jr  S SKJrJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJrJr  Sr\" S\S	9r \" S
S\S9r \" SS\S9r \" S\SS9r \" SS9 " S S\\\4   5      5       r " S S\\\\\4   5      r\ " S S\\   5      5       r\" SS9 " S S5      5       rg)é    )Úannotations)ÚABCÚabstractmethod)Ú	dataclass)Úcache)ÚAnyÚGeneric)ÚNeverÚTypeVar)ÚGraphRunContextÚBaseNodeÚEndÚEdgeÚDepsTÚStateTÚRunEndTr   )Údefaultr   T)Ú	covariantr   ÚNodeRunEndTr   )r   Úcontravariant)Úkw_onlyc                  ó0   • \ rS rSr% SrS\S'    S\S'   Srg)	r   é   zContext for a graph.r   Ústater   Údeps© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   ó    ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_graph/basenode.pyr   r      s   ‡ áàƒMØ!Ø
ƒKÚ%r%   r   c                  óJ   • \ rS rSrSr\SS j5       r\\SS j5       5       r	Sr
g)	r   é!   zBase class for a node.c              ƒ  ó   #   • g7f)a½  Run the node.

This is an abstract method that must be implemented by subclasses.

!!! note "Return types used at runtime"
    The return type of this method are read by `pydantic_graph` at runtime and used to define which
    nodes can be called next in the graph, and enforced when running the graph.

Args:
    ctx: The graph context.

Returns:
    The next node to run or [`End`][pydantic_graph.basenode.End] to signal the end of the graph.
Nr   )ÚselfÚctxs     r&   ÚrunÚBaseNode.run$   s
   é € ð  	ùs   ‚c                ó   • U R                   $ )zGet the ID of the node.)r   )Úclss    r&   Úget_node_idÚBaseNode.get_node_id6   s   € ð �|‰|Ðr%   r   N)r+   zGraphRunContext[StateT, DepsT]Úreturnz/BaseNode[StateT, DepsT, Any] | End[NodeRunEndT])r2   Ústr)r   r   r    r!   r"   r   r,   Úclassmethodr   r0   r$   r   r%   r&   r   r   !   s3   † Ù àóó ðð" Ø
óó ó ór%   r   c                  ó$   • \ rS rSr% SrS\S'   Srg)r   é=   z:Type to return from a node to signal the end of the graph.r   Údatar   Nr   r   r%   r&   r   r   =   s   ‡ áDà
ƒMÚ(r%   r   )Úfrozenc                  ó$   • \ rS rSr% SrS\S'   Srg)r   éE   z2Annotation to apply a label to an edge in a graph.z
str | NoneÚlabelr   Nr   r   r%   r&   r   r   E   s   ‡ á<àÓÚr%   r   N)Ú
__future__r   Ú_annotationsÚabcr   r   Údataclassesr   Ú	functoolsr   Útypingr   r	   Útyping_extensionsr
   r   Ú__all__Úobjectr   r   r   r   r   r   r   r   r   r%   r&   Ú<module>rE      sá   ðÝ 2ç #Ý !Ý ß ç ,à
T€ñ 
� 6Ñ	*€Ø -Ù
�) t°VÑ
<€Ø mÙ�m¨t¸UÑC€Ø jÙ� °tÑ<€Ø =ñ �4Ñô&�g˜f e˜mÑ,ó &ó ð&ôˆs�G˜F E¨;Ð6Ñ7ô ð8 ô)ˆ'�'Ñ
ó )ó ð)ñ �$Ñ÷ð ó ñr%   