
    *j%              
         d dl mZ d dl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 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mZ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(m)Z) dZ* G d de          Z+ G d de          Z, G d de          Z- G d de          Z. ed          Z/dRdZ0dSd"Z1dTd&Z2dUd,Z3dVd/Z4dWd;Z5dXdAZ6dBdCdDdEdFdGdHdIdJdK	Z7dYdOZ8dZdPZ9dQS )[    )annotations)IterableIteratorMappingSequenceasdict)Any)UUID)RunnableConfig)CheckpointMetadataPendingWrite)	TypedDict)patch_checkpoint_map)CONFCONFIG_KEY_CHECKPOINT_NSERROR	INTERRUPTNS_ENDNS_SEPRETURN)MISSING)BaseChannel)
TAG_HIDDEN)read_channels)PregelExecutableTask
PregelTaskStateSnapshot)TaskPayloadTaskResultPayloadCheckpointTaskCheckpointPayloadc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )	r   stridnamer
   input	list[str]triggersN__name__
__module____qualname____annotations__     `/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/langgraph/pregel/debug.pyr   r      s9         GGGIIIJJJr0   r   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )r    r$   r%   r&   
str | Noneerror
list[dict]
interruptsdict[str, Any]resultNr*   r/   r0   r1   r    r    &   sH         GGGIIIr0   r    c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )r!   r$   r%   r&   r3   r4   r5   r6   z%StateSnapshot | RunnableConfig | NonestateNr*   r/   r0   r1   r!   r!   .   sH         GGGIII000000r0   r!   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )r"   RunnableConfig | Noneconfigr   metadatar7   valuesr(   nextparent_configzlist[CheckpointTask]tasksNr*   r/   r0   r1   r"   r"   6   sW         !!!!    OOO((((r0   r"   z$6ba7b831-9dad-11d1-80b4-00c04fd430c8rB   Iterable[PregelExecutableTask]returnIterator[TaskPayload]c              #     K   | D ]I}|j         #t          |j                             dg           v r,|j        |j        |j        |j        dV  JdS )z,Produce "task" events for stream_mode=debug.Ntags)r%   r&   r'   r)   )r=   r   getr%   r&   r'   r)   )rB   tasks     r1   map_debug_tasksrJ   B   sx       	
 	
;"zT[__VR5P5P'P'P 'IZ	
 
 	
 	
 	
 	
		
 	
r0   valuer
   boolc                j    t          | t                    od| v ot          | d         t                    S )zOReturn True if the payload already wraps multiple writes from the same channel.$writes)
isinstancedictlist)rK   s    r1   is_multiple_channel_writerR   P   s:     	5$ 	/	/uY'..r0   writesSequence[tuple[str, Any]]r7   c                    i }| D ]X\  }}|                     |          }|7t          |          r|d         n|g}|                    |           d|i||<   S|||<   Y|S )aJ  Folds task writes into a result dict and aggregates multiple writes to the same channel.

    If the channel contains a single write, we record the write in the result dict as `{channel: write}`
    If the channel contains multiple writes, we record the writes in the result dict as `{channel: {'$writes': [write1, write2, ...]}}`NrN   )rH   rR   append)rS   r8   channelrK   existingchannel_writess         r1   map_task_result_writesrZ   Y   s      F  $ $::g&& -X66 ##Z 
 !!%((((.9F7OO#F7OOMr0   task_tup6tuple[PregelExecutableTask, Sequence[tuple[str, Any]]]stream_keysstr | Sequence[str]Iterator[TaskResultPayload]c              #     K   t          |t                    r|gn|| \  }}|j        |j        t	          d |D             d          t          fd|D                       d |D             dV  dS )z3Produce "task_result" events for stream_mode=debug.c              3  H   K   | ]}|d          t           k    |d         V  dS r      N)r   ).0ws     r1   	<genexpr>z)map_debug_task_results.<locals>.<genexpr>|   s.      ==qtu}}qt}}}}==r0   Nc                J    g | ]}|d          v s|d          t           k    | S )r   )r   )rd   re   stream_channels_lists     r1   
<listcomp>z*map_debug_task_results.<locals>.<listcomp>~   s1    QQQ1!A$*>">">!A$&..Q...r0   c                    g | ]Q}|d          t           k    t          |d         t                    r|d         n|d         gD ]}t          |          RS )r   rc   )r   rO   r   r	   )rd   re   vs      r1   ri   z*map_debug_task_results.<locals>.<listcomp>   si     
 
 
ty  (1x88Daddqtf !  1II    r0   )r%   r&   r4   r8   r6   )rO   r$   r%   r&   r@   rZ   )r[   r]   rI   rS   rh   s       @r1   map_debug_task_resultsrl   p   s       $K55F;  LD&g	==V===tDD(QQQQQQQ
 

 

 
 
      r0   r=   r<   c                r    | | S dd |                      di                                           D             iS )z,Remove pregel-specific keys from the config.Nconfigurablec                D    i | ]\  }}|                     d           ||S )	__pregel_)
startswith)rd   krk   s      r1   
<dictcomp>z"rm_pregel_keys.<locals>.<dictcomp>   s@     
 
 
1<<,,
q
 
 
r0   )rH   items)r=   s    r1   rm_pregel_keysru      sO    ~ 
 


>266<<>>
 
 
 r0   r   channelsMapping[str, BaseChannel]stream_channelsr>   r   pending_writeslist[PendingWrite]rA   output_keysIterator[CheckpointPayload]c              #    K   | t                                        t          d          }i }	|D ][}
|
j        s
|
j         t
           |
j         }|r| t           | }t           d| t                    d         t          |ii|	|
j        <   \t          t          | |                    t          t          ||                    t          ||          |d |D             d t          |||	|          D             dV  dS )z2Produce "checkpoint" events for stream_mode=debug. 	thread_idc                    g | ]	}|j         
S r/   )r&   rd   ts     r1   ri   z(map_debug_checkpoint.<locals>.<listcomp>   s    '''A'''r0   c           	     4   g | ]}|j         r|j        |j        |j         |j        d np|j        r8|j        |j        |j        t          d |j        D                       |j        dn1|j        |j        t          d |j        D                       |j        dS ))r%   r&   r4   r:   c              3  4   K   | ]}t          |          V  d S Nr   rd   is     r1   rf   z2map_debug_checkpoint.<locals>.<listcomp>.<genexpr>   (      #D#D!F1II#D#D#D#D#D#Dr0   )r%   r&   r8   r6   r:   c              3  4   K   | ]}t          |          V  d S r   r   r   s     r1   rf   z2map_debug_checkpoint.<locals>.<listcomp>.<genexpr>   r   r0   )r%   r&   r6   r:   )r4   r%   r&   r:   r8   tupler6   r   s     r1   ri   z(map_debug_checkpoint.<locals>.<listcomp>   s     
 
 
,  wd	   xd(##D#Dq|#D#D#DDD   d##D#Dq|#D#D#DDD	 !
 
 
r0   )r=   rA   r?   r>   r@   rB   N)r   rH   r   	subgraphsr&   r   r%   r   ru   r   r   tasks_w_writes)r=   rv   rx   r>   rB   ry   rA   r{   	parent_nstask_statesrI   task_nss               r1   map_debug_checkpointr      sG      t  !92>>I=?K 
 
~ 	 Y1111 	6"5F5G55G VD\+6(' 
DG !!5fh!G!GHH'(<]H(U(UVV/::'''''
 
, $E>;TT-
 
 
      r0   +Iterable[PregelTask | PregelExecutableTask]list[PendingWrite] | Nonestates0dict[str, RunnableConfig | StateSnapshot] | Nonetuple[PregelTask, ...]c                @   |pg }g }| D ]t          fd|D             t                    }t          fd|D             d          }t          fd|D                       }fd|D             }|t          ur|}	nt          t                    rDfd|D             }
t          |
          }|r"|                    t	                              nd}	n;t          t                    rgfd|D             }
t          |
          }|
r|ni }	|t          upt          fd|D                       }|                    t          j
        j        j        |||r|                    j
                  nd|r|	nd                     t          |          S )	zJApply writes / subgraph states to tasks to be returned in a StateSnapshot.c              3  P   K   | ] \  }}}|j         k    |t          k    |V  !d S r   )r%   r   rd   tidchanvalrI   s       r1   rf   z!tasks_w_writes.<locals>.<genexpr>   sE        "Cs$'>>dfnn &4nnn r0   c              3  P   K   | ] \  }}}|j         k    |t          k    |V  !d S r   )r%   r   )rd   r   nexcrI   s       r1   rf   z!tasks_w_writes.<locals>.<genexpr>   s7      TT[S!ScTWnneSTTr0   Nc              3     K   | ]=\  }}}|j         k    |t          k    t          |t                    r|n|gD ]}|V  >d S r   )r%   r   rO   r   )rd   r   r   vvrk   rI   s        r1   rf   z!tasks_w_writes.<locals>.<genexpr>   si        
  
Qdg~~!y..&r844>bb2$ #1. "0.... 
  
r0   c                b    g | ]+\  }}}|j         k    |t          t          t          fv'||f,S r/   )r%   r   r   r   r   s       r1   ri   z"tasks_w_writes.<locals>.<listcomp>   sI     
 
 
T3dg~~$ui.H"H"H 3K"H"H"Hr0   c                *    g | ]\  }}|k    ||fS r/   r/   rd   r   r   r{   s      r1   ri   z"tasks_w_writes.<locals>.<listcomp>   s2        )cDK<O<Os<O<O<Or0   c                &    g | ]\  }}|v 	||fS r/   r/   r   s      r1   ri   z"tasks_w_writes.<locals>.<listcomp>  s2        )cDK<O<Os<O<O<Or0   c              3  f   K   | ]+}|d          j         k    o|d         t          t          fvV  ,dS rb   )r%   r   r   )rd   re   rI   s     r1   rf   z!tasks_w_writes.<locals>.<genexpr>  sQ       /
 /
CDAaDDGO>!UI,> >/
 /
 /
 /
 /
 /
r0   )r@   r   r   rO   r$   rZ   rH   anyrV   r   r%   r&   path)rB   ry   r   r{   outrtn
task_errortask_interruptstask_writestask_resultfiltered_writesmapped_writes
has_writesrI   s      `         @r1   r   r      s    $)rNC <
 <
   &4  
 
 
 TTTTNTTT
 

    
  
  
  
, 
  
  
 
 

 
 
 
"0
 
 
 gKKS)) 	C   -8  O 3?CCMANX-++C,<,<===TXKK+s++ ,*m   -8  O 3?CCM+:B--K' 
3 /
 /
 /
 /
HV/
 /
 /
 ,
 ,

 	

		'-7

47###4)3t 
	
 
	
 
	
 
	
 ::r0   z0;30z0;31z0;32z0;33z0;34z0;35z0;36z0;37z1;30)	blackredgreenyellowbluemagentacyanwhitegraytextr$   colorc                *    dt           |          d|  dS )zGet colored text.z[1;3m[0m)COLOR_MAPPING)r   r   s     r1   get_colored_textr   -  s     :mE*::T::::r0   c                    d|  dS )zGet bolded text.z[1mr   r/   )r   s    r1   get_bolded_textr   2  s    "T""""r0   N)rB   rC   rD   rE   )rK   r
   rD   rL   )rS   rT   rD   r7   )r[   r\   r]   r^   rD   r_   )r=   r<   rD   r<   )r=   r   rv   rw   rx   r^   r>   r   rB   rC   ry   rz   rA   r<   r{   r^   rD   r|   )
rB   r   ry   r   r   r   r{   r^   rD   r   )r   r$   r   r$   rD   r$   )r   r$   rD   r$   ):
__future__r   collections.abcr   r   r   r   dataclassesr	   typingr
   uuidr   langchain_core.runnablesr   langgraph.checkpoint.baser   r   typing_extensionsr   langgraph._internal._configr   langgraph._internal._constantsr   r   r   r   r   r   r   langgraph._internal._typingr   langgraph.channels.baser   langgraph.constantsr   langgraph.pregel._ior   langgraph.typesr   r   r   __all__r   r    r!   r"   TASK_NAMESPACErJ   rR   rZ   rl   ru   r   r   r   r   r   r/   r0   r1   <module>r      s-   " " " " " " A A A A A A A A A A A A                   3 3 3 3 3 3 F F F F F F F F ' ' ' ' ' ' < < < < < <                  0 / / / / / / / / / / / * * * * * * . . . . . . K K K K K K K K K K
U    )       	   1 1 1 1 1Y 1 1 1         	       <==
 
 
 
      .   2
 
 
 
> > > >BF F F FT 
 
; ; ; ;
# # # # # #r0   