+
    € ’e˜"  ã                   óB  € R t ^ RIt^ RIt^ RIt^ RIt^RIHt ^RIHt ^RIHt Rt	]P                  ! RRR7       ! R	 R4      4       t]P                  ! RRR7       ! R
 R4      4       tRR/R R lltRR^RR/R R llltRR^RR/R R llltRRRR^RR/R R llltR# )z*Introspection utils for tasks call graphs.N)Úevents)Úfutures)ÚtasksÚFrameCallGraphEntryÚFutureCallGraphT)ÚfrozenÚslotsc                   ó,   a € ] tR t^t o V 3R ltRtV tR# )r   c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )é   Úframe)ÚtypesÚ	FrameType)ÚformatÚ__classdict__s   "€Ú[/home/ubuntu/.hermes/tools/python-3.14.9+20261021-linux-x64/lib/python3.14/asyncio/graph.pyÚ__annotate__Ú FrameCallGraphEntry.__annotate__   s   ø‡ ‚ á�?‰?Ñò ó    © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      ó   ø‡ ‡ „ r   c                   ó,   a € ] tR t^!t o V 3R ltRtV tR# )r   c                ón   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[R,          ;R&   S[R,          ;R&   # )r   ÚfutureÚ
call_stackÚ
awaited_by)r   .)r   .)r   ÚFutureÚtuple)r   r   s   "€r   r   ÚFutureCallGraph.__annotate__!   s:   ø‡ ‚ á�N‰NÑñ ñ Ð0Õ1Ñ1ñ ñ Ð,Õ-Ñ-ò	 r   r   Nr   r   s   @r   r   r   !   r   r   Úlimitc                ó^   € V ^8„  d   QhR\         P                  R\        R,          R\        /# )r   r"   r(   NÚreturn©r   r%   Úintr   )r   s   "r   r   r   (   s5   € ÷ )Añ )AÜ�N‰Nð)Aô ��:ð)Aô ñ	)Ar   c                ó  € \        V \        P                  4      '       g   \        V : R 24      hRp\	        V RR4      ;p'       d   V^ 8w  d   V! 4       MRp. p. pVe˜   \        VR4      '       dA   VP                  e%   VP                  \        VP                  4      4       VP                  pKV  \        VR4      '       d3   VP                  \        VP                  4      4       VP                  pKš   V P                  '       d/   V P                   F  pVP                  \        WaR7      4       K   	  Ve   V^ 8”  d   VRV pMV^ 8  d   WAR pVP                  4        \        V \        V4      \        V4      4      # )ú< object does not appear to be compatible with asyncio.FutureNÚget_coroÚcr_awaitÚag_await©r(   )Ú
isinstancer   r%   Ú	TypeErrorÚgetattrÚhasattrÚcr_frameÚappendr   r0   r1   Ú_asyncio_awaited_byÚ_build_graph_for_futureÚreverser   r&   )r"   r(   Úcoror/   Ústr$   Úparents   &$     r   r:   r:   (   sK  € ô
 �fœgŸn™n×-Ò-ÜØ‰jð "ð #ó
ð 	
ð
 €DÜ˜6 :¨tÓ4Ð4€xÖ4Ø" aœZ‰xŒz¨Tˆà$&€BØ(*€Jà
Ò
Ü�4˜×$Ò$à�}‰}Ò(Ø—	‘	Ô-¨d¯m©mÓ<Ô=Ø—=‘=ŠDÜ�T˜:×&Ò&à�I‰IÔ)¨$¯-©-Ó8Ô9Ø—=‘=ŠDàà×!×!Ð!Ø×0Ô0ˆFØ×ÑÔ5°fÔJÖKñ 1ð ÒØ�1Œ9Ø�F�U�‰BØ�QŒYØ�F�ˆBØ‡J�J„LÜ˜6¤5¨£9¬e°JÓ.?Ó@Ð@r   Údepthc          	      ó†   € V ^8„  d   QhR\         P                  R,          R\        R\        R,          R\        R,          /# ©r   r"   Nr?   r(   r*   r+   )r   s   "r   r   r   T   sP   € ÷ eIñ eIÜ�N‰N˜TÕ!ðeIô ð	eIô
 ��:ðeIô �tÕñeIr   c              ó¾  € \         P                  ! 4       pV e-   Ve   V \        P                  ! VR7      Jd   \	        WR7      # M&Vf   \        R4      h\        P                  ! VR7      p V f   R# \        V \        P                  4      '       g   \        V : R24      h. pV^ 8w  d   \        P                  ! V4      MRp VeŒ   \        VP                  \        P                  \        P                  34      pVP!                  \#        V4      4       V'       d(   VP$                  e   VP$                  P                  f   MVP$                  pK�  ?. pV P&                  '       d/   V P&                   F  pVP!                  \	        W‚R7      4       K   	  Ve"   VR,          pV^ 8”  d   VRV pMV^ 8  d   WBR p\)        V \+        V4      \+        V4      4      #   ?i ; i)aÜ  Capture the async call graph for the current task or the provided Future.

The graph is represented with three data structures:

* FutureCallGraph(future, call_stack, awaited_by)

  Where 'future' is an instance of asyncio.Future or asyncio.Task.

  'call_stack' is a tuple of FrameGraphEntry objects.

  'awaited_by' is a tuple of FutureCallGraph objects.

* FrameCallGraphEntry(frame)

  Where 'frame' is a frame object of a regular Python function
  in the call stack.

Receives an optional 'future' argument. If not passed,
the current task will be used. If there's no current task, the function
returns None.

If "capture_call_graph()" is introspecting *the current task*, the
optional keyword-only 'depth' argument can be used to skip the specified
number of frames from top of the stack.

If the optional keyword-only 'limit' argument is provided, each call
stack in the resulting graph is truncated to include at most
``abs(limit)`` entries.  If 'limit' is positive, the entries left are
the closest to the invocation point.  If 'limit' is negative, the
topmost entries are left.  If 'limit' is omitted or None, all entries
are present.  If 'limit' is 0, the call stack is not captured at all,
only "awaited by" information is present.
N)Úloopr2   zicapture_call_graph() is called outside of a running event loop and no *future* to introspect was providedr.   éÿÿÿÿ)r   Ú_get_running_loopr   Úcurrent_taskr:   ÚRuntimeErrorr3   r   r%   r4   ÚsysÚ	_getframeÚf_generatorr   ÚCoroutineTypeÚAsyncGeneratorTyper8   r   Úf_backr9   r   r&   )	r"   r?   r(   rC   r#   ÚfÚis_asyncr$   r>   s	   "$$      r   Úcapture_call_graphrP   T   s¿  € ôR ×#Ò#Ó%€DàÒð Š<˜6¬×);Ò);ÀÔ)FÓFÜ*¨6Ô?Ð?ð Gð Š<ÜðHóIð Iô ×#Ò#¨Ô.ˆà‚~ñ ä�fœgŸn™n×-Ò-ÜØ‰jð "ð #ó
ð 	
ð
 -/€Jà %¨¤
Œ�Š�eÔ°€AðØŠmä!Ø—‘¤× 3Ñ 3´U×5MÑ5MÐNóPˆHà×ÑÔ1°!Ó4Ô5çØ—8‘8Ò'¨A¯H©H×,@Ñ,@Ò,Hð à—‘ŠAàà€JØ×!×!Ð!Ø×0Ô0ˆFØ×ÑÔ5°fÔJÖKñ 1ð ÒØ��ˆØ�1Œ9Ø# F UÐ+‰JØ�QŒYØ# FÐ+ˆJä˜6¤5¨Ó#4´e¸JÓ6GÓHÐHøñ ús   ÃBG ÇGc                óx   € V ^8„  d   QhR\         P                  R,          R\        R\        R,          R\        /# rA   )r   r%   r,   Ústr)r   s   "r   r   r   ¼   sE   € ÷ Pñ PÜ�N‰N˜TÕ!ðPô ð	Pô
 ��:ðPô 	ñPr   c              ó’   a€ R V3R llo\        W^,           VR7      pVf   R# . p S! W4^ 4       ?RP                  V4      #   ?i ; i)z€Return the async call graph as a string for `future`.

If `future` is not provided, format the call graph for the current task.
c                óV   € V ^8„  d   QhR\         R\        \        ,          R\        RR/# )r   r=   ÚbufÚlevelr*   N)r   ÚlistrR   r,   )r   s   "r   r   Ú'format_call_graph.<locals>.__annotate__È   s,   € ÷ 72ñ 72œð 72¬t´C­yð 72Äð 72Èñ 72r   c                 ó\  <aa€ R  VV3R llp\        V P                  \        P                  4      '       d>   V! RV P                  P	                  4       : R\        V P                  4      R R24       M V! R\        V P                  4      R R24       V P                  '       dî   V! R4       V P                   FÕ  pVP                  pVP                  fT   VP                  pV! R	VP                  P                  : R
VP                   RVP                  P                   R24       Kp  VP                  p VP                  pVP                  pRpT! R	TP                  P                  : R
TP                   RT RTP                   R2	4       K×  	  V P(                  '       d/   V! R4       V P(                   F  p	S
! V	SS^,           4       K  	  R# R#   \         dK     TP                   pTP"                  pRp L¬  \         d    TP$                  pTP&                  pRp  LÔi ; ii ; i)c                ó(   € V ^8„  d   QhR\         RR/# )r   Úliner*   N)rR   )r   s   "r   r   Ú=format_call_graph.<locals>.render_level.<locals>.__annotate__É   s   € ÷ 	.ñ 	.œ3ð 	. 4ñ 	.r   c                 óF   <€ SP                  SR ,          V ,           4       R# )z    N)r8   )r[   rU   rV   s   &€€r   Úadd_lineÚ9format_call_graph.<locals>.render_level.<locals>.add_lineÉ   s   ø€ Ø�J‰J�u˜v•~¨Õ,Ö-r   z* Task(name=z, id=z#xÚ)z* Future(id=z  + Call stack:Nz  |   File z, line z, in z()Úasynczasync generatorÚ	generatorÚ z  + Awaited by:)r3   r"   r   ÚTaskÚget_nameÚidr#   r   rJ   Úf_codeÚco_filenameÚf_linenoÚco_qualnamer7   Úcr_codeÚAttributeErrorÚag_frameÚag_codeÚgi_frameÚgi_coder$   )r=   rU   rV   r^   ÚsterN   ÚcÚcodeÚtagÚfutÚrender_levels   &ff       €r   rv   Ú'format_call_graph.<locals>.render_levelÈ   sü  ú€ ÷	.ñ 	.ô �b—i‘i¤§¡×,Ò,ÙØ˜rŸy™y×1Ñ1Ó3Ñ6°e¼B¸r¿y¹y»MÈ"Ð;MÈQÐOõñ Øœr "§)¡)›}¨RÐ0°Ð2ôð �=�=ˆ=ÙØ!ôð —}”}�Ø—I‘I�à—=‘=Ò(ØŸ	™	�AÙØ% a§h¡h×&:Ñ&:Ñ%=ð >!Ø!"§¡ ð -ØŸH™H×0Ñ0Ð1°ð5öð Ÿ™�Að.ØŸJ™J˜Ø Ÿy™y˜Ø%˜ñ Ø% a§h¡h×&:Ñ&:Ñ%=ð >!Ø!"§¡ ð -Ø˜5  $×"2Ñ"2Ð!3°2ð7öñ7 %ðB �=�=ˆ=ÙØ!ôð —}”}�Ù˜S # u¨q¥yÖ1ó %ñ	 øô! *ô .ð.Ø !§
¡
˜AØ#$§9¡9˜DØ"3šCøÜ-ô .Ø !§
¡
˜AØ#$§9¡9˜DØ"-›Cð.úð.ús*   Ä8GÇH+Ç"G>Ç>%H'È#H+È&H'È'H+©r?   r(   Ú Ú
)rP   Újoin)r"   r?   r(   ÚgraphrU   rv   s   "$$  @r   Úformat_call_graphr}   ¼   sV   ø€ ÷72ð 72ôr ˜v°Q­Y¸eÔD€EØ‚}Ùà€CðÙ�U Ô#ð Ø�9‰9�S‹>Ðøñ ús   ¨	A ÁAÚfilec          
      ó´   € V ^8„  d   QhR\         P                  R,          R\        P                  \        ,          R,          R\
        R\
        R,          RR/# )r   r"   Nr~   r?   r(   r*   )r   r%   ÚioÚWriterrR   r,   )r   s   "r   r   r     s]   € ÷ 	Jñ 	JÜ�N‰N˜TÕ!ð	Jô �)‰)”C�.˜4Õ
ð		Jô
 ð	Jô ��:ð	Jð 
ñ	Jr   c              ó6   € \        \        WVR7      VR7       R# )zGPrint the async call graph for the current task or the provided Future.rx   )r~   N)Úprintr}   )r"   r~   r?   r(   s   "$$$r   Úprint_call_graphr„     s   € ô 
Ô
˜F°uÔ
=ÀD×Ir   )rP   r}   r„   r   r   )N)Ú__doc__Údataclassesr€   rH   r   ry   r   r   r   Ú__all__Ú	dataclassr   r   r:   rP   r}   r„   r   r   r   Ú<module>r‰      sù   ðÙ 0ã Û 	Û 
Û å Ý Ý ð€ð  ×Ò˜d¨$Ô/÷ð ó 0ðð ×Ò˜d¨$Ô/÷.ð .ó 0ð.ð)Að ÷)AñXeIð ð	eIð
 ÷eIð eIñPPð ð	Pð
 ÷Pð Pñd	Jð #'ð		Jð
 ð	Jð ÷	Jò 	Jr   