§
    ‚ŠtjëH  ã                  ó.  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlZddlmZ  G d	„ d
¦  «        Z G d„ d¦  «        Z e¦   «         ZdZd&d„Zd'd(d„Zd)d„Zd)d„Zd*d„Zd+d„Zd,d-d!„Z G d"„ d#¦  «        Zd)d$„Zd%gZdS ).é    )ÚannotationsN)Údefaultdict)Úwraps)ÚPath)ÚAnyé   )Ú	strtoboolc                  ó0   — e Zd Zdd„Zdd
„Zddddœdd„ZdS )Ú_NetworkRequestTraceÚrequestúhttpx.Requestc                ó„   — || _         t          j        ¦   «         | _        i | _        t          t          ¦  «        | _        d S ©N)r   ÚtimeÚperf_counterÚ
started_atÚphase_started_atr   ÚfloatÚ	phases_ms)Úselfr   s     ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/utils/network_logging.pyÚ__init__z_NetworkRequestTrace.__init__!   s4   € ØˆŒÝÔ+Ñ-Ô-ˆŒØ "ˆÔÝ$¥UÑ+Ô+ˆŒˆˆó    ÚnameÚstrÚinfoúdict[str, Any]ÚreturnÚNonec                ó2  — |                      dd¦  «        }t          |¦  «        dk    rd S |\  }}}t          j        ¦   «         }|dk    r|| j        |<   d S |dv r:| j                             |d ¦  «        }|�| j        |xx         ||z
  dz  z  cc<   d S d S d S )Nú.é   é   Ústarted>   ÚfailedÚcompleteéè  )ÚrsplitÚlenr   r   r   Úpopr   )	r   r   r   ÚpartsÚ_ÚphaseÚstateÚnowr   s	            r   Útracez_NetworkRequestTrace.trace'   sÈ   € Ø—’˜C Ñ#Ô#ˆÝˆu‰:Œ:˜Š?ˆ?ØˆFà‰ˆˆ5�%ÝÔÑ!Ô!ˆØ�IÒÐØ+.ˆDÔ! %Ñ(Ð(Ð(ØÐ,Ð,Ð,Ø#Ô4×8Ò8¸ÀÑEÔEÐØÐ+Ø”˜uÐ%Ð%Ô%¨#Ð0@Ñ*@ÀDÑ)HÑHÐ%Ð%Ñ%Ð%Ð%ð -Ð,à+Ð+r   NF)ÚresponseÚerrorÚstreamr1   úhttpx.Response | Noner2   úBaseException | Noner3   Úboolc               ó  — t          j        ¦   «         | j        z
  dz  }| j        j        }|j        pd}|j        }dddœ                     |j        ¦  «        }|d |fv r|n|› d|› �}	d }
d }d }d}|�“|j	        }|j
        }|j                             d¦  «        }t          |t          ¦  «        r|                     d	d
¬¦  «        }
n|�t          |¦  «        }
|r+	 t!          |j        ¦  «        }n# t$          j        $ r Y nw xY wi d| j        j        “d|j        “d|“d|	“d|“d|j        “dt-          |j        ¦  «        “d|j        › d|	› |j        › |j        rdnd› �“d| j        j                             d¦  «        p| j        j                             d¦  «        “d|“d|
“d|“d|“d|“d|“dt3          t5          | j                             ¦   «         ¦  «        ¦  «        “d|€d nt;          |¦  «        j        › d |› �“S )!Nr'   Ú éP   i»  )ÚhttpÚhttpsú:FÚhttp_versionÚasciiÚreplace)ÚerrorsÚmethodÚschemeÚhostÚhost_displayÚportÚpathÚ	has_queryÚurlz://z?...Ú
request_idzx-amzn-trace-idzx-request-idÚstatus_codeÚbytes_downloadedÚtotal_msr3   Úresponse_completer   r2   z: )r   r   r   r   rH   rC   rE   ÚgetrB   rJ   Ú	is_closedÚ
extensionsÚ
isinstanceÚbytesÚdecoder   r)   ÚcontentÚhttpxÚResponseNotReadrA   rF   r6   ÚqueryÚheadersÚdictÚsortedr   ÚitemsÚtypeÚ__name__)r   r1   r2   r3   rL   rH   rC   rE   Údefault_portrD   r=   rJ   rK   rM   Úraw_http_versions                  r   Úbuild_recordz!_NetworkRequestTrace.build_record5   s½  € õ Ô%Ñ'Ô'¨$¬/Ñ9¸TÑAˆØŒlÔˆØŒxˆ~˜2ˆØŒxˆØ "¨SÐ1Ð1×5Ò5°c´jÑAÔAˆØ#¨¨lÐ';Ð;Ð;�t�tÀDÐAQÐAQÈ4ÐAQÐAQˆàˆØˆØÐØ!ÐØÐØ"Ô.ˆKØ (Ô 2ÐØ'Ô2×6Ò6°~ÑFÔFÐÝÐ*­EÑ2Ô2ð 5Ø/×6Ò6°wÀyÐ6ÑQÔQ��Ø!Ð-Ý"Ð#3Ñ4Ô4�à ð ðÝ'*¨8Ô+;Ñ'<Ô'<Ð$Ð$øÝÔ,ð ð ð Ø�Dðøøøð
Ø�d”lÔ)ð
à�c”jð
ð �Dð
ð ˜Lð	
ð
 �Dð
ð �C”Hð
ð �˜cœi™œð
ð �c”jÐZÐZ \ÐZ°3´8ÐZÀsÄyÐ=X¸V¸VÐVXÐZÐZð
ð ˜$œ,Ô.×2Ò2Ð3DÑEÔEÐqÈÌÔI]×IaÒIaÐbpÑIqÔIqð
ð ˜;ð
ð ˜Lð
ð Ð 0ð
ð ˜ð
ð �fð
ð  Ð!2ð
ð  ��f T¤^×%9Ò%9Ñ%;Ô%;Ñ<Ô<Ñ=Ô=ð!
ð" ˜U˜]�T�Tµ4¸±;´;Ô3GÐ0RÐ0RÈ5Ð0RÐ0Rð#
ð 	
s   ÃC/ Ã/DÄ D©r   r   )r   r   r   r   r   r   )r1   r4   r2   r5   r3   r6   r   r   )r]   Ú
__module__Ú__qualname__r   r0   r`   © r   r   r   r       si   € € € € € ð,ð ,ð ,ð ,ðIð Ið Ið Ið" +/Ø&*Øð3
ð 3
ð 3
ð 3
ð 3
ð 3
ð 3
ð 3
r   r   c                  ó¨   — e Zd Zd„ Zed"d„¦   «         Zd#d„Zd$d%d
„Zd&d„Zd'd„Z	d$d(d„Z
d#d„Zd#d„Zd#d„Zd)d„Zd*d„Zd*d„Zd+d„Zd+d„Zd,d „Zd&d!„ZdS )-Ú_NetworkDebugProfilerc                óŠ   — g | _         t          j        ¦   «         | _        d| _        d | _        d | _        d | _        d | _        d S ©NF)	Ú_recordsÚ	threadingÚLockÚ_lockÚ_enabledÚ_output_pathÚ_original_client_sendÚ_original_async_client_sendÚ_shared_dir©r   s    r   r   z_NetworkDebugProfiler.__init__l   sE   € ØˆŒÝ”^Ñ%Ô%ˆŒ
ØˆŒØ ˆÔØ%)ˆÔ"Ø+/ˆÔ(ØˆÔÐÐr   r   r6   c                ó   — | j         S r   )rm   rr   s    r   Úenabledz_NetworkDebugProfiler.enabledu   s
   € àŒ}Ðr   r   c                óT   — | j         5  g | _        d d d ¦  «         d S # 1 swxY w Y   d S r   )rl   ri   rr   s    r   Úclearz_NetworkDebugProfiler.cleary   su   € ØŒZð 	ð 	ØˆDŒMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆ�!¤!NÚoutput_pathústr | os.PathLike | Nonec                ó  ‡— | j         r3|€d nt          j        |¦  «        | _        |                      ¦   «          d S |€d nt          j        |¦  «        | _        |                      ¦   «          | Št
          j        j        | _        t
          j	        j        | _
        t          | j        ¦  «        ˆfd„¦   «         }t          | j
        ¦  «        ˆfd„¦   «         }|t
          j        _        |t
          j	        _        d| _         d S )Nc                ó4   •—  ‰j         ‰j        | |g|¢R i |¤ŽS r   )Ú_send_with_tracero   ©Úclientr   ÚargsÚkwargsÚprofilers       €r   Úpatched_client_sendz9_NetworkDebugProfiler.enable.<locals>.patched_client_sendŠ   s0   ø€ à,�8Ô,¨XÔ-KÈVÐU\ÐnÐ_cÐnÐnÐnÐgmÐnÐnÐnr   c              Ÿ  óD   •K  —  ‰j         ‰j        | |g|¢R i |¤Žƒ d {V —†S r   )Ú_async_send_with_tracerp   r|   s       €r   Úpatched_async_client_sendz?_NetworkDebugProfiler.enable.<locals>.patched_async_client_sendŽ   s`   øè è € à8˜Ô8ØÔ4°f¸gðØHLðð ð ØPVðð ð ð ð ð ð ð ð r   T)rm   ÚosÚfspathrn   rv   rU   ÚClientÚsendro   ÚAsyncClientrp   r   )r   rw   r�   r„   r€   s       @r   Úenablez_NetworkDebugProfiler.enable}   s	  ø€ ØŒ=ð 	Ø(3Ð(;  ÅÄÈ;ÑAWÔAWˆDÔØ�JŠJ‰LŒLˆLØˆFà$/Ð$7˜D˜D½R¼YÀ{Ñ=SÔ=SˆÔØ�
Š
‰ŒˆàˆÝ%*¤\Ô%6ˆÔ"Ý+0Ô+<Ô+AˆÔ(å	ˆtÔ)Ñ	*Ô	*ð	oð 	oð 	oð 	oñ 
+Ô	*ð	oõ 
ˆtÔ/Ñ	0Ô	0ð	ð 	ð 	ð 	ñ 
1Ô	0ð	ð
 0�ŒÔØ!:�ÔÔØˆŒˆˆr   ú
str | Nonec                ó\   — | j         €ddl}|                     d¬¦  «        | _         | j         S )zFCreate a shared temp directory for xdist workers to dump records into.Nr   Únetwork_debug_)Úprefix)rq   ÚtempfileÚmkdtemp)r   r�   s     r   Úsetup_shared_dirz&_NetworkDebugProfiler.setup_shared_dir˜   s7   € àÔÐ#ØˆOˆOˆOà'×/Ò/Ð7GÐ/ÑHÔHˆDÔØÔÐr   Ú
shared_dirr   c                ó   — || _         dS )z3Set the shared directory (called in xdist workers).N)rq   )r   r’   s     r   Úset_shared_dirz$_NetworkDebugProfiler.set_shared_dir    s   € à%ˆÔÐÐr   Ú	worker_idc                ót  — | j         r| j        sdS |pdt          j        ¦   «         › �}t          j                             | j         d|› d�¦  «        }| j        5  d„ | j        D ¦   «         }ddd¦  «         n# 1 swxY w Y   t          |¦  «                             t          j
        |¦  «        d¬¦  «         dS )zSWrite this process's records to a file in the shared directory (called in workers).NÚpidÚrecords_z.jsonc                óD   — g | ]}i |¥d t          |d          ¦  «        i¥‘ŒS ©r   ©rY   ©Ú.0Úrecords     r   ú
<listcomp>z=_NetworkDebugProfiler.dump_worker_records.<locals>.<listcomp>«   s5   € ÐfÐfÐfÈfÐI˜&ÐI +­t°F¸;Ô4GÑ/HÔ/HÐIÐIÐfÐfÐfr   úutf-8©Úencoding)rq   ri   r…   ÚgetpidrF   Újoinrl   r   Ú
write_textÚjsonÚdumps)r   r•   Ú	dump_pathÚrecordss       r   Údump_worker_recordsz)_NetworkDebugProfiler.dump_worker_records¤   s  € àÔð 	 t¤}ð 	ØˆFØÐ4Ð!4¥r¤y¡{¤{Ð!4Ð!4ˆ	Ý”G—L’L Ô!1Ð3N¸iÐ3NÐ3NÐ3NÑOÔOˆ	ØŒZð 	gð 	gØfÐfÐX\ÔXeÐfÑfÔfˆGð	gð 	gð 	gñ 	gô 	gð 	gð 	gð 	gð 	gð 	gð 	gøøøð 	gð 	gð 	gð 	gåˆY‰Œ×"Ò"¥4¤:¨gÑ#6Ô#6ÀÐ"ÑIÔIÐIÐIÐIs   ÁA7Á7A;Á>A;c           
     óX  — | j         r$t          j                             | j         ¦  «        sdS ddl}|                     t          j                             | j         d¦  «        ¦  «        D ]¿}	 t          j        t          |¦  «         	                    d¬¦  «        ¦  «        }| j
        5  |D ]H}t          t          |                     di ¦  «        ¦  «        |d<   | j                             |¦  «         ŒI	 ddd¦  «         n# 1 swxY w Y   Œ¤# t           t          j        f$ r Y Œ¼w xY wdS )zNLoad all worker record files from the shared directory (called in controller).Nr   zrecords_*.jsonr    r¡   r   )rq   r…   rF   ÚisdirÚglobr¤   r¦   Úloadsr   Ú	read_textrl   r   r   rN   ri   ÚappendÚOSErrorÚJSONDecodeError)r   Úglob_moduleÚrecord_filer©   rž   s        r   Úload_worker_recordsz)_NetworkDebugProfiler.load_worker_records®   sv  € àÔð 	¥r¤w§}¢}°TÔ5EÑ'FÔ'Fð 	ØˆFØ"Ð"Ð"Ð"à&×+Ò+­B¬G¯LªL¸Ô9IÐK[Ñ,\Ô,\Ñ]Ô]ð 	ð 	ˆKðÝœ*¥T¨+Ñ%6Ô%6×%@Ò%@È'Ð%@Ñ%RÔ%RÑSÔS�Ø”Zð 5ð 5Ø")ð 5ð 5˜Ý.9½%ÀÇÂÈKÐY[ÑA\ÔA\Ñ.]Ô.]˜˜{Ñ+Øœ×,Ò,¨VÑ4Ô4Ð4Ð4ð5ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øøõ �TÔ1Ð2ð ð ð Ø�ðøøøð	ð 	s7   Á-<DÂ)ADÃ6DÄD	ÄDÄ	D	Ä
DÄD'Ä&D'c                ó²   — | j         rMt          j                             | j         ¦  «        r+ddl}|                     | j         d¬¦  «         d| _         dS dS dS )z!Remove the shared temp directory.r   NT)Úignore_errors)rq   r…   rF   r¬   ÚshutilÚrmtree)r   r¸   s     r   Úcleanup_shared_dirz(_NetworkDebugProfiler.cleanup_shared_dir¾   si   € àÔð 	$¥¤§¢¨dÔ.>Ñ ?Ô ?ð 	$ØˆMˆMˆMà�MŠM˜$Ô*¸$ˆMÑ?Ô?Ð?Ø#ˆDÔÐÐð		$ð 	$ð 	$ð 	$r   c                óÐ   — | j         sd S | j        t          j        _        | j        t          j        _        d| _         d | _        d | _        d | _        |                      ¦   «          d S rh   )	rm   ro   rU   r‡   rˆ   rp   r‰   rn   rv   rr   s    r   Údisablez_NetworkDebugProfiler.disableÆ   s\   € ØŒ}ð 	ØˆFà Ô6�ŒÔØ!%Ô!A�ÔÔØˆŒØ%)ˆÔ"Ø+/ˆÔ(Ø ˆÔØ�
Š
‰Œˆˆˆr   rž   r   c                óz   — | j         5  | j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )rl   ri   r°   )r   rž   s     r   Ú_append_recordz$_NetworkDebugProfiler._append_recordÒ   s„   € ØŒZð 	)ð 	)ØŒM× Ò  Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   ˆ0°4·4r   r   r0   r   c                óL   ‡‡— |j                              d¦  «        Šd	ˆˆfd„}|S )
Nr0   r   r   r   r   r   r   c                óP   •— ‰                      | |¦  «         ‰� ‰| |¦  «        S d S r   )r0   )r   r   Úexisting_tracer0   s     €€r   Úwrapped_tracezA_NetworkDebugProfiler._wrap_trace_callback.<locals>.wrapped_traceÙ   s4   ø€ Ø�KŠK˜˜dÑ#Ô#Ð#ØÐ)Ø%�~ d¨DÑ1Ô1Ð1Ø�4r   ©r   r   r   r   r   r   ©rP   rN   ©r   r   r0   rÂ   rÁ   s     ` @r   Ú_wrap_trace_callbackz*_NetworkDebugProfiler._wrap_trace_callbackÖ   sE   øø€ Ø Ô+×/Ò/°Ñ8Ô8ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr   c              ƒ  óP   ‡‡K  — |j                              d¦  «        Šd	ˆˆfd„}|S )
Nr0   r   r   r   r   r   r   c              “  ó�   •K  — ‰                      | |¦  «         ‰�* ‰| |¦  «        }t          j        |¦  «        r|ƒ d {V —†S |S d S r   )r0   ÚinspectÚisawaitable)r   r   ÚresultrÁ   r0   s      €€r   rÂ   zB_NetworkDebugProfiler._awrap_trace_callback.<locals>.wrapped_traceä   sa   øè è € Ø�KŠK˜˜dÑ#Ô#Ð#ØÐ)Ø'˜¨¨dÑ3Ô3�ÝÔ& vÑ.Ô.ð (Ø!'˜<˜<˜<˜<˜<˜<Ð'Ø�Ø�4r   rÃ   rÄ   rÅ   s     ` @r   Ú_awrap_trace_callbackz+_NetworkDebugProfiler._awrap_trace_callbacká   sI   øøè è € Ø Ô+×/Ò/°Ñ8Ô8ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr   c           
     óÎ  — t          |¦  «        }t          |j        ¦  «        |_        |                      ||¦  «        |j        d<   	  |||g|¢R i |¤Ž}nQ# t          $ rD}|                      |                     ||                     dd¦  «        ¬¦  «        ¦  «         ‚ d }~ww xY w|                      |                     ||                     dd¦  «        ¬¦  «        ¦  «         |S ©Nr0   r3   F)r2   r3   )r1   r3   )r   rY   rP   rÆ   Ú	Exceptionr¾   r`   rN   ©	r   Úoriginal_sendr}   r   r~   r   r0   r1   r2   s	            r   r{   z&_NetworkDebugProfiler._send_with_traceï   sþ   € Ý$ WÑ-Ô-ˆÝ! 'Ô"4Ñ5Ô5ˆÔØ&*×&?Ò&?ÀÈÑ&OÔ&OˆÔ˜7Ñ#ð	Ø$�} V¨WÐF°tÐFÐFÐF¸vÐFÐFˆHˆHøÝð 	ð 	ð 	Ø×Ò × 2Ò 2¸ÀvÇzÂzÐRZÐ\aÑGbÔGbÐ 2Ñ cÔ cÑdÔdÐdØøøøøð	øøøð 	×Ò˜E×.Ò.¸ÈÏÊÐT\Ð^cÑIdÔIdÐ.ÑeÔeÑfÔfÐfØˆs   ÁA Á
B$Á ?BÂB$c           
   �  óê  K  — t          |¦  «        }t          |j        ¦  «        |_        |                      ||¦  «        ƒ d {V —†|j        d<   	  |||g|¢R i |¤Žƒ d {V —†}nQ# t          $ rD}|                      |                     ||                     dd¦  «        ¬¦  «        ¦  «         ‚ d }~ww xY w|                      |                     ||                     dd¦  «        ¬¦  «        ¦  «         |S rÎ   )r   rY   rP   rÌ   rÏ   r¾   r`   rN   rÐ   s	            r   rƒ   z,_NetworkDebugProfiler._async_send_with_traceý   s'  è è € Ý$ WÑ-Ô-ˆÝ! 'Ô"4Ñ5Ô5ˆÔØ,0×,FÒ,FÀwÐPUÑ,VÔ,VÐ&VÐ&VÐ&VÐ&VÐ&VÐ&VˆÔ˜7Ñ#ð	Ø*˜]¨6°7ÐL¸TÐLÐLÐLÀVÐLÐLÐLÐLÐLÐLÐLÐLˆHˆHøÝð 	ð 	ð 	Ø×Ò × 2Ò 2¸ÀvÇzÂzÐRZÐ\aÑGbÔGbÐ 2Ñ cÔ cÑdÔdÐdØøøøøð	øøøð 	×Ò˜E×.Ò.¸ÈÏÊÐT\Ð^cÑIdÔIdÐ.ÑeÔeÑfÔfÐfØˆs   ÁA$ Á$
B2Á.?B-Â-B2c                óÎ  — | j         5  d„ | j        D ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        }i }|D �]}|d                              ¦   «         D ]\  }}||xx         |z  cc<   Œ|d         |d         |d         f}|                     ||d         |d         |d         dddt          t          ¦  «        dœ¦  «        }|d	xx         d
z  cc<   |dxx         |d         z  cc<   |dxx         t          |d         d u¦  «        z  cc<   |d                              ¦   «         D ]\  }}|d         |xx         |z  cc<   Œ�Œg }	|                     ¦   «         D ]b}|d         |d	         z  |d<   t          t          |d                              ¦   «         ¦  «        ¦  «        |d<   |	 
                    |¦  «         Œc|	                     d„ d¬¦  «         t          d„ |D ¦   «         ¦  «        }
| j        | j        t          |¦  «        t          d„ |D ¦   «         ¦  «        |
t          t          |                     ¦   «         ¦  «        ¦  «        ||	dœS )Nc                óD   — g | ]}i |¥d t          |d          ¦  «        i¥‘ŒS rš   r›   rœ   s     r   rŸ   z6_NetworkDebugProfiler.build_report.<locals>.<listcomp>  sN   € ð ð ð ð
 ð	Øðà¥ f¨[Ô&9Ñ!:Ô!:ðð ðð ð r   r   rA   rD   rF   r   g        )rA   rD   rF   ÚcountÚfailuresrL   Úphase_totals_msrÕ   r   rL   rÖ   r2   r×   Úavg_msc                ó   — | d         S ©NrL   rd   )Úroutes    r   ú<lambda>z4_NetworkDebugProfiler.build_report.<locals>.<lambda>4  s   €  e¨JÔ&7€ r   T©ÚkeyÚreversec              3  ó&   K  — | ]}|d          V — ŒdS )rL   Nrd   rœ   s     r   ú	<genexpr>z5_NetworkDebugProfiler.build_report.<locals>.<genexpr>5  s'   è è € ÐEÐE°6˜F :Ô.ÐEÐEÐEÐEÐEÐEr   c              3  óD   K  — | ]}t          |d          du¦  «        V — ŒdS )r2   N)Úintrœ   s     r   rá   z5_NetworkDebugProfiler.build_report.<locals>.<genexpr>:  s3   è è € Ð"ZÐ"ZÈ¥3 v¨g¤¸dÐ'BÑ#CÔ#CÐ"ZÐ"ZÐ"ZÐ"ZÐ"ZÐ"Zr   )rt   rw   Útotal_requestsÚfailed_requestsÚtotal_time_msr×   ÚrequestsÚroutes)rl   ri   r   r   r[   Ú
setdefaultrã   ÚvaluesrY   rZ   r°   ÚsortÚsumrm   rn   r)   )r   r©   r×   Úroute_totalsrž   r-   Úduration_msÚ	route_keyÚroute_totalrè   ræ   s              r   Úbuild_reportz"_NetworkDebugProfiler.build_report  s(  € ØŒZð 	ð 	ðð ð
 #œmðñ ô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ &¥eÑ,Ô,ˆØˆØð 	Eñ 	EˆFØ&,¨[Ô&9×&?Ò&?Ñ&AÔ&Að 6ð 6Ñ"��{Ø Ð&Ð&Ô&¨+Ñ5Ð&Ð&Ñ&Ð&à Ô)¨6°.Ô+AÀ6È&Ä>ÐRˆIØ&×1Ò1Øà$ XÔ.Ø$*¨>Ô$:Ø" 6œNØØ !Ø #Ý'2µ5Ñ'9Ô'9ðð ñô ˆKð ˜Ð Ð Ô  AÑ%Ð Ð Ñ Ø˜
Ð#Ð#Ô# v¨jÔ'9Ñ9Ð#Ð#Ñ#Ø˜
Ð#Ð#Ô#¥s¨6°'¬?À$Ð+FÑ'GÔ'GÑGÐ#Ð#Ñ#Ø&,¨[Ô&9×&?Ò&?Ñ&AÔ&Að Eð EÑ"��{ØÐ-Ô.¨uÐ5Ð5Ô5¸ÑDÐ5Ð5Ñ5Ð5ñEð ˆØ'×.Ò.Ñ0Ô0ð 	'ð 	'ˆKØ$/°
Ô$;¸kÈ'Ô>RÑ$RˆK˜Ñ!Ý-1µ&¸ÐEVÔ9W×9]Ò9]Ñ9_Ô9_Ñ2`Ô2`Ñ-aÔ-aˆKÐ)Ñ*Ø�MŠM˜+Ñ&Ô&Ð&Ð&à�ŠÐ7Ð7ÀˆÑFÔFÐFÝÐEÐE¸WÐEÑEÔEÑEÔEˆà”}ØÔ,Ý! '™lœlÝ"Ð"ZÐ"ZÐRYÐ"ZÑ"ZÔ"ZÑZÔZØ*Ý#¥F¨?×+@Ò+@Ñ+BÔ+BÑ$CÔ$CÑDÔDØØð	
ð 	
ð 		
s   ˆ&¦*­*c                ó  — | j         €d S t          | j         ¦  «        }|j                             dd¬¦  «         |                     t          j        |                      ¦   «         dd¬¦  «        d¬¦  «         t          |¦  «        S )NT)ÚparentsÚexist_okr"   )ÚindentÚ	sort_keysr    r¡   )	rn   r   ÚparentÚmkdirr¥   r¦   r§   rñ   r   )r   Úreport_paths     r   Úmaybe_write_reportz(_NetworkDebugProfiler.maybe_write_reportA  s‚   € ØÔÐ$Ø�4å˜4Ô,Ñ-Ô-ˆØÔ× Ò ¨¸Ð Ñ=Ô=Ð=Ø×Ò�tœz¨$×*;Ò*;Ñ*=Ô*=ÀaÐSWÐXÑXÔXÐcjÐÑkÔkÐkÝ�;ÑÔÐr   ©r   r6   ©r   r   r   ©rw   rx   r   r   )r   r‹   )r’   r   r   r   )r•   r‹   r   r   )rž   r   r   r   )r   r   r0   r   ra   ©r   r   )r]   rb   rc   r   Úpropertyrt   rv   rŠ   r‘   r”   rª   rµ   rº   r¼   r¾   rÆ   rÌ   r{   rƒ   rñ   rú   rd   r   r   rf   rf   k   s  € € € € € ð ð  ð  ð ðð ð ñ „Xððð ð ð ðð ð ð ð ð6 ð  ð  ð  ð&ð &ð &ð &ðJð Jð Jð Jð Jðð ð ð ð $ð $ð $ð $ð
ð 
ð 
ð 
ð)ð )ð )ð )ð	ð 	ð 	ð 	ðð ð ð ðð ð ð ðð ð ð ð4
ð 4
ð 4
ð 4
ðl ð  ð  ð  ð  ð  r   rf   znetwork_debug_report.jsonr   útuple[bool, str]c                 óH  — t           j                             dd¦  «                             ¦   «         } 	 | rt	          t          | ¦  «        ¦  «        nd}n# t          $ r d}Y nw xY wt           j                             dd¦  «                             ¦   «         pt          }||fS )NÚNETWORK_DEBUG_REPORTr8   FÚNETWORK_DEBUG_REPORT_PATH)r…   ÚenvironrN   Ústripr6   r	   Ú
ValueErrorÚ_DEFAULT_REPORT_PATH)Úenabled_rawrt   rw   s      r   Ú_parse_network_debug_envr	  Q  s£   € Ý”*—.’.Ð!7¸Ñ<Ô<×BÒBÑDÔD€KðØ2=ÐH•$•y Ñ-Ô-Ñ.Ô.Ð.À5ˆˆøÝð ð ð Øˆˆˆðøøøõ ”*—.’.Ð!<¸bÑAÔA×GÒGÑIÔIÐaÕMa€KØ�KÐÐs   ´ A ÁA$Á#A$rw   rx   r   c                ó<   — t                                | ¬¦  «         d S )N©rw   )Ú_NETWORK_DEBUG_PROFILERrŠ   r  s    r   Ú_enable_network_debug_reportr  \  s   € Ý×"Ò"¨{Ð"Ñ;Ô;Ð;Ð;Ð;r   c                 ó8   — t                                ¦   «          d S r   )r  r¼   rd   r   r   Ú_disable_network_debug_reportr  `  s   € Ý×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c                 ó8   — t                                ¦   «          d S r   )r  rv   rd   r   r   Ú_clear_network_debug_reportr  d  s   € Ý×!Ò!Ñ#Ô#Ð#Ð#Ð#r   r   c                 ó4   — t                                ¦   «         S r   )r  rñ   rd   r   r   Ú_get_network_debug_reportr  h  s   € Ý"×/Ò/Ñ1Ô1Ð1r   r6   c                 óP   — t          ¦   «         \  } }| sdS t          |¬¦  «         dS )NFr  T)r	  r  )rt   rw   s     r   Ú%_enable_network_debug_report_from_envr  l  s5   € Ý3Ñ5Ô5Ñ€Gˆ[Øð Øˆuå ¨[Ð9Ñ9Ô9Ð9Øˆ4r   é   é
   Úmax_requestsrã   Ú
max_routesr   c                ó  — t          ¦   «         }|d         dk    rdS dd|d         › �d|d         › �d|d	         d
›d�g}|d         r`d                     d„ t          |d                              ¦   «         d„ d¬¦  «        D ¦   «         ¦  «        }|                     d|› �¦  «         |                     d¦  «         |                     d¦  «         t          t          |d         d„ d¬¦  «        d | …         d¬¦  «        D ]Ä\  }}|d         p
d|d         › �}g }dD ];}	|d                              |	¦  «        }
|
�|                     |	› d|
d
›d�¦  «         Œ<|rdd                     |¦  «        › d �nd}|d!         r
|d"         sd#nd}|                     |d$›d%|d&         › d'|d(         › d'|d)         d
›d*|› |› |› �¦  «         ŒÅ|                     d¦  «         |                     d+¦  «         t          |d,         d |…         d¬¦  «        D ]]\  }}|                     |d$›d%|d&         › d'|d-         › |d.         › d/|d0         › d1|d)         d
›d2|d3         d
›d4|d5         › �¦  «         Œ^d6                     |¦  «        S )7Nrä   r   z1Network debug report: no httpx requests captured.zNetwork debug reportzRequests captured: zFailed requests: rå   zCumulative request time: ræ   ú.1fú msr×   z, c              3  ó.   K  — | ]\  }}|› d |d›d�V — ŒdS )ú=r  r  Nrd   )r�   r-   rî   s      r   rá   z/_format_network_debug_report.<locals>.<genexpr>‚  sN   è è € ð "
ð "
á"��{ð Ð+Ð+�{Ð+Ð+Ð+Ð+ð"
ð "
ð "
ð "
ð "
ð "
r   c                ó   — | d         S )Nr   rd   )Úitems    r   rÜ   z._format_network_debug_report.<locals>.<lambda>„  s   € ÐaeÐfgÔah€ r   TrÝ   zPhase totals: r8   zSlowest requests:rç   c                ó   — | d         S rÚ   rd   )r   s    r   rÜ   z._format_network_debug_report.<locals>.<lambda>‹  s   € °w¸zÔ7J€ r   r   )Ústartr2   zstatus=rJ   )Úconnect_tcpÚ	start_tlsÚreceive_response_headersÚreceive_response_bodyr   r  z (ú)r3   rM   z incompletez>2z. rA   ú rH   rL   z ms zSlowest routes:rè   rD   rF   z count=rÕ   z total=z ms avg=rØ   z ms failures=rÖ   ú
)r  r¤   rZ   r[   r°   Ú	enumeraterN   )r  r  ÚreportÚlinesÚphase_summaryÚidxrž   ÚstatusÚ
phase_bitsr-   rî   Úphase_suffixÚincomplete_suffixrÛ   s                 r   Ú_format_network_debug_reportr3  u  sË  € Ý&Ñ(Ô(€FØÐÔ 1Ò$Ð$ØBÐBð 	Ø8˜fÐ%5Ô6Ð8Ð8Ø7˜FÐ#4Ô5Ð7Ð7ØD F¨?Ô$;ÐDÐDÐDÐDð	€Eð ÐÔ ð 7ØŸ	š	ð "
ð "
å&,¨VÐ4EÔ-F×-LÒ-LÑ-NÔ-NÐThÐThÐrvÐ&wÑ&wÔ&wð"
ñ "
ô "
ñ 
ô 
ˆð 	�ŠÐ5 mÐ5Ð5Ñ6Ô6Ð6à	‡L‚L�ÑÔÐØ	‡L‚LÐ$Ñ%Ô%Ð%Ý Ýˆv�jÔ!Ð'JÐ'JÐTXÐYÑYÔYÐZgÐ[gÐZgÔhØðñ ô ð 
ð 
‰ˆˆVð ˜”ÐEÐ$E¨f°]Ô.CÐ$EÐ$EˆØˆ
Øfð 	Cð 	CˆEØ  Ô-×1Ò1°%Ñ8Ô8ˆKØÐ&Ø×!Ò! UÐ"AÐ"A¨[Ð"AÐ"AÐ"AÐ"AÑBÔBÐBøØ8BÐJÐ4˜DŸIšI jÑ1Ô1Ð4Ð4Ð4Ð4ÈˆØ-3°HÔ-=ÐiÀfÐM`ÔFaÐi˜M˜MÐgiÐØ�ŠØð  Bð  Bð  B˜ Ô)ð  Bð  B¨F°5¬Mð  Bð  B¸FÀ:Ô<Nð  Bð  Bð  BÐX^ð  BÐ`qð  BÐsð  Bð  Bñ	
ô 	
ð 	
ð 	
ð 
‡L‚L�ÑÔÐØ	‡L‚LÐ"Ñ#Ô#Ð#Ý  xÔ 0°°*°Ô =ÀQÐGÑGÔGð 
ð 
‰
ˆˆUØ�ŠØÐið jð j˜˜xœð jð j¨5°Ô+@ð jÀ%ÈÄ-ð jð jÐX]Ð^eÔXfð jð jØ˜:Ô&Ðiðjð jØ49¸(´OÐiðjð jØV[Ð\fÔVgðjð jñ	
ô 	
ð 	
ð 	
ð
 �9Š9�UÑÔÐr   c                  ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚNetworkDebugPluginzXPytest plugin that handles all network debug orchestration including xdist coordination.c                ó  — t          ¦   «          t          j        sd S t          |d¦  «        s&t                               ¦   «         }|r	||_        d S d S |j                             d¦  «        }|rt                               |¦  «         d S d S )NÚworkerinputÚnetwork_debug_shared_dir)	r  r  rt   Úhasattrr‘   Ú_network_debug_shared_dirr7  rN   r”   )r   Úconfigr’   s      r   Úpytest_configurez#NetworkDebugPlugin.pytest_configure¨  s¬   € Ý-Ñ/Ô/Ð/Ý&Ô.ð 	ØˆFõ �v˜}Ñ-Ô-ð 	CÝ0×AÒAÑCÔCˆJØð >Ø3=�Ô0Ð0Ð0ð>ð >ð  Ô+×/Ò/Ð0JÑKÔKˆJØð CÝ'×6Ò6°zÑBÔBÐBÐBÐBðCð Cr   c                óN   — t          |j        dd¦  «        }|r||j        d<   dS dS )zCxdist hook: called on the controller to configure each worker node.r:  Nr8  )Úgetattrr;  r7  )r   Únoder’   s      r   Úpytest_configure_nodez(NetworkDebugPlugin.pytest_configure_node¸  s?   € å˜Tœ[Ð*EÀtÑLÔLˆ
Øð 	FØ;EˆDÔÐ7Ñ8Ð8Ð8ð	Fð 	Fr   c                óÒ   — t          |j        d¦  «        rQ|j        j                             ddt	          j        ¦   «         › �¦  «        }t                               |¬¦  «         d S d S )Nr7  Úworkeridr—   )r•   )r9  r;  r7  rN   r…   r£   r  rª   )r   ÚsessionÚ
exitstatusr•   s       r   Úpytest_sessionfinishz'NetworkDebugPlugin.pytest_sessionfinish¾  si   € å�7”> =Ñ1Ô1ð 	MØœÔ2×6Ò6°zÐCVÍÌÉÌÐCVÐCVÑWÔWˆIÝ#×7Ò7À)Ð7ÑLÔLÐLÐLÐLð	Mð 	Mr   c                óø  — t           j        sd S t          |j        d¦  «        rd S t                                ¦   «          d }	 t                                ¦   «         }n# t          $ r}d|› �}Y d }~nd }~ww xY w|                     dd¬¦  «         t          ¦   «          	                    ¦   «         D ]}| 
                    |¦  «         Œ|�| 
                    d|› �¦  «         t                                ¦   «          d S )Nr7  zFailed to write JSON report: zNetwork debugr  )ÚsepzJSON report: )r  rt   r9  r;  rµ   rú   r±   Úsectionr3  Ú
splitlinesÚ
write_linerº   )r   Úterminalreporterrù   r2   Úlines        r   Úpytest_terminal_summaryz*NetworkDebugPlugin.pytest_terminal_summaryÄ  s)  € Ý&Ô.ð 	ØˆFõ Ð#Ô*¨MÑ:Ô:ð 	ØˆFõ 	 ×3Ò3Ñ5Ô5Ð5àˆð	BÝ1×DÒDÑFÔFˆKˆKøÝð 	Bð 	Bð 	BØA¸%ÐAÐAˆKˆKˆKˆKˆKˆKøøøøð	Bøøøð 	× Ò  °cÐ Ñ:Ô:Ð:Ý0Ñ2Ô2×=Ò=Ñ?Ô?ð 	.ð 	.ˆDØ×'Ò'¨Ñ-Ô-Ð-Ð-ØÐ"Ø×'Ò'Ð(E¸Ð(EÐ(EÑFÔFÐFå×2Ò2Ñ4Ô4Ð4Ð4Ð4s   ÁA Á
A5Á&A0Á0A5N)r]   rb   rc   Ú__doc__r<  r@  rE  rM  rd   r   r   r5  r5  ¥  s_   € € € € € ØbÐbðCð Cð Cð Fð Fð FðMð Mð Mð5ð 5ð 5ð 5ð 5r   r5  c                óT   — | j                              t          ¦   «         d¦  «         dS )zMRegister the network debug pytest plugin. Single entry point for conftest.py.Únetwork_debugN)ÚpluginmanagerÚregisterr5  )r;  s    r   Úregister_network_debug_pluginrS  Þ  s(   € à
Ô×!Ò!Õ"4Ñ"6Ô"6¸ÑHÔHÐHÐHÐHr   rS  )r   r   r   rý   rü   rþ   rû   )r  r  )r  rã   r  rã   r   r   ) Ú
__future__r   rÉ   r¦   r…   rj   r   Úcollectionsr   Ú	functoolsr   Úpathlibr   Útypingr   rU   Úgenericr	   r   rf   r  r  r	  r  r  r  r  r  r3  r5  rS  Ú__all__rd   r   r   ú<module>r[     s  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à Ð Ð Ð Ð Ð ðH
ð H
ð H
ð H
ð H
ñ H
ô H
ð H
ðV] ð ] ð ] ð ] ð ] ñ ] ô ] ð ] ð@ 0Ð/Ñ1Ô1Ð ð 3Ð ð ð  ð  ð  ð<ð <ð <ð <ð <ð&ð &ð &ð &ð$ð $ð $ð $ð2ð 2ð 2ð 2ðð ð ð ð-ð -ð -ð -ð -ð`65ð 65ð 65ð 65ð 65ñ 65ô 65ð 65ðrIð Ið Ið Ið $ð€€€r   