
    Z jH                    (   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJr  S SKJr  S SKrSSKJr   " S	 S
5      r " S S5      r\" 5       rSrSS jrSSS jjrSS jrSS jrSS jrSS jrSS S jjr " S S5      rSS jrS/rg)!    )annotationsN)defaultdict)wraps)Path)Any   )	strtoboolc                  L    \ rS rSrS	S jrS
S jrSSSS.       SS jjrSrg)_NetworkRequestTrace    c                z    Xl         [        R                  " 5       U l        0 U l        [        [        5      U l        g N)requesttimeperf_counter
started_atphase_started_atr   float	phases_ms)selfr   s     s/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/utils/network_logging.py__init___NetworkRequestTrace.__init__!   s+    ++- "$U+    c                ,   UR                  SS5      n[        U5      S:w  a  g Uu  pEn[        R                  " 5       nUS:X  a  XpR                  U'   g US;   a=  U R                  R                  US 5      nUb  U R                  U==   Xx-
  S-  -  ss'   g g g )N.      started>   failedcomplete  )rsplitlenr   r   r   popr   )	r   nameinfoparts_phasestatenowr   s	            r   trace_NetworkRequestTrace.trace'   s    C#u:?%!I+.!!%(,,#4488E+u%#*@D)HH% , -r   NF)responseerrorstreamc                  [         R                  " 5       U R                  -
  S-  nU R                  R                  nUR
                  =(       d    SnUR                  nSSS.R                  UR                  5      nUS U4;   a  UOU SU 3n	S n
S nS nSnUb  UR                  nUR                  nUR                  R                  S5      n[        U[        5      (       a  UR                  S	S
S9n
OUb  [        U5      n
U(       a   [!        UR"                  5      n0 SU R                  R(                  _SUR                  _SU_SU	_SU_SUR*                  _S[-        UR.                  5      _SUR                   SU	 UR*                   UR.                  (       a  SOS 3_SU R                  R0                  R                  S5      =(       d%    U R                  R0                  R                  S5      _SU_SU
_SU_SU_SU_SU_S[3        [5        U R6                  R9                  5       5      5      _SUc  S _$ [;        U5      R<                   S U 3_$ ! [$        R&                   a     GNNf = f)!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_msr1   response_completer   r0   z: )r   r   r   r   rC   r>   r@   getr=   rE   	is_closed
extensions
isinstancebytesdecodestrr$   contenthttpxResponseNotReadr<   rA   boolqueryheadersdictsortedr   itemstype__name__)r   r/   r0   r1   rG   rC   r>   r@   default_portr?   r8   rE   rF   rH   raw_http_versions                  r   build_record!_NetworkRequestTrace.build_record5   s    %%'$//9TAllxx~2xx "S155cjjA#l';;tD64&AQ!"..K ( 2 2'2266~F*E22/66wy6Q!-"#34 '*8+;+;'<$
dll))
cjj
 D
 L	

 D
 CHH
 cii
 cjj\\N388*syyVVX<YZ
 $,,..223DEqI]I]IaIabpIq
 ;
 L
  0
 
 f
  !2
  fT^^%9%9%;<=!
" U]T#
 	
" 48;3G3G2H5'0R#
 	
 ,, s   I I*)I*)r   r   r   r   r   httpx.Request)r&   rO   r'   dict[str, Any]returnNone)r/   zhttpx.Response | Noner0   zBaseException | Noner1   rS   rb   ra   )rZ   
__module____qualname____firstlineno__r   r-   r]   __static_attributes__ r   r   r   r       sJ    ,I" +/&*3
 (3
 $	3

 3
 
3
 3
r   r   c                      \ rS rSrS r\SS j5       rSS jrSSS jjrSS jr	SS jr
SSS	 jjrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg) _NetworkDebugProfilerk   c                    / U l         [        R                  " 5       U l        SU l        S U l        S U l        S U l        S U l        g NF)	_records	threadingLock_lock_enabled_output_path_original_client_send_original_async_client_send_shared_dirr   s    r   r   _NetworkDebugProfiler.__init__l   s>    ^^%
 %)"+/(r   c                    U R                   $ r   )rr   rw   s    r   enabled_NetworkDebugProfiler.enabledu   s    }}r   c                ^    U R                      / U l        S S S 5        g ! , (       d  f       g = fr   )rq   rn   rw   s    r   clear_NetworkDebugProfiler.cleary   s    ZZDM ZZs   
,Nc                D  ^ U R                   (       a1  Uc  S O[        R                  " U5      U l        U R	                  5         g Uc  S O[        R                  " U5      U l        U R	                  5         U m[
        R                  R                  U l        [
        R                  R                  U l
        [        U R                  5      U4S j5       n[        U R                  5      U4S j5       nU[
        R                  l        U[
        R                  l        SU l         g )Nc                F   > TR                   " TR                  X/UQ70 UD6$ r   )_send_with_tracert   clientr   argskwargsprofilers       r   patched_client_send9_NetworkDebugProfiler.enable.<locals>.patched_client_send   s(    ,,X-K-KVn_cngmnnr   c                b   >#    TR                   " TR                  X/UQ70 UD6I S h  vN $  N7fr   )_async_send_with_traceru   r   s       r   patched_async_client_send?_NetworkDebugProfiler.enable.<locals>.patched_async_client_send   s>     !8844fHLPV   s   %/-/T)rr   osfspathrs   r}   rQ   Clientsendrt   AsyncClientru   r   )r   output_pathr   r   r   s       @r   enable_NetworkDebugProfiler.enable}   s    ==(3(;;AWDJJL$/$7DRYY{=S

%*\\%6%6"+0+<+<+A+A(	t))	*	o 
+	o 
t//	0	 
1	
 0!:r   c                d    U R                   c  SSKnUR                  SS9U l         U R                   $ )zFCreate a shared temp directory for xdist workers to dump records into.Nr   network_debug_)prefix)rv   tempfilemkdtemp)r   r   s     r   setup_shared_dir&_NetworkDebugProfiler.setup_shared_dir   s4    #'//7G/HDr   c                    Xl         g)z3Set the shared directory (called in xdist workers).N)rv   )r   
shared_dirs     r   set_shared_dir$_NetworkDebugProfiler.set_shared_dir   s    %r   c           
        U R                   (       a  U R                  (       d  gU=(       d    S[        R                  " 5        3n[        R                  R                  U R                   SU S35      nU R                     U R                   Vs/ s H  n0 UES[        US   5      0EPM     nnSSS5        [        U5      R                  [        R                  " W5      SS9  gs  snf ! , (       d  f       NA= f)zSWrite this process's records to a file in the shared directory (called in workers).Npidrecords_z.jsonr   utf-8encoding)rv   rn   r   getpidrA   joinrq   rV   r   
write_textjsondumps)r   	worker_id	dump_pathrecordrecordss        r   dump_worker_records)_NetworkDebugProfiler.dump_worker_records   s    t}}43ryy{m!4	GGLL!1!1Xi[3NO	ZZX\XeXefXefI&I+tF;4G/HIXeGf Y""4::g#6"I g Zs   ?C)C$,C)$C))
C7c           
        U R                   (       a.  [        R                  R                  U R                   5      (       d  gSSKnUR	                  [        R                  R                  U R                   S5      5       H  n [        R                  " [        U5      R                  SS95      nU R                     U HA  n[        [        UR                  S0 5      5      US'   U R                  R                  U5        MC     SSS5        M     g! , (       d  f       M  = f! [         [        R"                  4 a     M  f = f)zNLoad all worker record files from the shared directory (called in controller).Nr   zrecords_*.jsonr   r   r   )rv   r   rA   isdirglobr   r   loadsr   	read_textrq   r   r   rI   rn   appendOSErrorJSONDecodeError)r   glob_modulerecord_filer   r   s        r   load_worker_records)_NetworkDebugProfiler.load_worker_records   s    rww}}T5E5E'F'F"&++BGGLL9I9IK[,\]K**T+%6%@%@'%@%RSZZ").9%KY[A\.]{+,,V4 #*  Z ^  Z T112 s1   8D!:ADD!
D	D!D!!D?>D?c                    U R                   (       aU  [        R                  R                  U R                   5      (       a&  SSKnUR                  U R                   SS9  SU l         ggg)z!Remove the shared temp directory.r   NT)ignore_errors)rv   r   rA   r   shutilrmtree)r   r   s     r   cleanup_shared_dir(_NetworkDebugProfiler.cleanup_shared_dir   sM    d.>.> ? ?MM$**$M?#D	 !@r   c                    U R                   (       d  g U R                  [        R                  l        U R
                  [        R                  l        SU l         S U l        S U l        S U l        U R                  5         g rm   )	rr   rt   rQ   r   r   ru   r   rs   r}   rw   s    r   disable_NetworkDebugProfiler.disable   sZ    }} 66!%!A!A%)"+/( 

r   c                    U R                      U R                  R                  U5        S S S 5        g ! , (       d  f       g = fr   )rq   rn   r   )r   r   s     r   _append_record$_NetworkDebugProfiler._append_record   s%    ZZMM  ( ZZs	   2
A c                R   ^^ UR                   R                  S5      mSUU4S jjnU$ )Nr-   c                >   > TR                  X5        Tb  T" X5      $ g r   )r-   )r&   r'   existing_tracer-   s     r   wrapped_traceA_NetworkDebugProfiler._wrap_trace_callback.<locals>.wrapped_trace   s#    KK#)%d11r   r&   rO   r'   ra   rb   r   rK   rI   r   r   r-   r   r   s     ` @r   _wrap_trace_callback*_NetworkDebugProfiler._wrap_trace_callback   s+     ++//8	 	 r   c                Z   ^^#    UR                   R                  S5      mSUU4S jjnU$ 7f)Nr-   c                   >#    TR                  X5        Tb/  T" X5      n[        R                  " U5      (       a
  UI S h  vN $ U$ g  N7fr   )r-   inspectisawaitable)r&   r'   resultr   r-   s      r   r   B_NetworkDebugProfiler._awrap_trace_callback.<locals>.wrapped_trace   sH     KK#)'3&&v..!'<' (s   =A
 AA
r   r   r   s     ` @r   _awrap_trace_callback+_NetworkDebugProfiler._awrap_trace_callback   s.      ++//8	 	 s   '+c           
        [        U5      n[        UR                  5      Ul        U R                  X65      UR                  S'    U" X#/UQ70 UD6nU R                  UR                  XuR                  SS5      S95        U$ ! [         a4  nU R                  UR                  XR                  SS5      S95        e S nAff = fNr-   r1   F)r0   r1   )r/   r1   )r   rV   rK   r   	Exceptionr   r]   rI   	r   original_sendr   r   r   r   r-   r/   r0   s	            r   r   &_NetworkDebugProfiler._send_with_trace   s    $W-!'"4"45&*&?&?&O7#	$VFtFvFH
 	E..T\^cId.ef  	 2 2zzRZ\aGb 2 cd	s   B 
B?/B::B?c           
       #    [        U5      n[        UR                  5      Ul        U R                  X65      I S h  vN UR                  S'    U" X#/UQ70 UD6I S h  vN nU R                  UR                  XuR                  SS5      S95        U$  NV N6! [         a4  nU R                  UR                  XR                  SS5      S95        e S nAff = f7fr   )r   rV   rK   r   r   r   r]   rI   r   s	            r   r   ,_NetworkDebugProfiler._async_send_with_trace   s     $W-!'"4"45,0,F,Fw,V&V7#	*6LTLVLLH
 	E..T\^cId.ef 'W M 	 2 2zzRZ\aGb 2 cd	sE   :CBCB BB #1CB 
C!/CCCc                4   U R                      U R                   Vs/ s H  n0 UES[        US   5      0EPM     nnS S S 5        [        [        5      n0 nW H  nUS   R                  5        H  u  pVX5==   U-  ss'   M     US   US   US   4nUR                  UUS   US   US   SSS[        [        5      S.5      nUS==   S	-  ss'   US
==   US
   -  ss'   US==   [        US   S L5      -  ss'   US   R                  5        H  u  pVUS   U==   U-  ss'   M     M     / n	UR                  5        HJ  nUS
   US   -  US'   [        [        US   R                  5       5      5      US'   U	R                  U5        ML     U	R                  S SS9  [        S U 5       5      n
U R                  U R                  [        U5      [        S U 5       5      U
[        [        UR                  5       5      5      UU	S.$ s  snf ! , (       d  f       GN= f)Nr   r<   r?   rA   r   g        )r<   r?   rA   countfailuresrG   phase_totals_msr   r   rG   r   r0   r   avg_msc                    U S   $ NrG   rh   )routes    r   <lambda>4_NetworkDebugProfiler.build_report.<locals>.<lambda>4  s	    eJ&7r   Tkeyreversec              3  *   #    U  H	  oS    v   M     g7f)rG   Nrh   .0r   s     r   	<genexpr>5_NetworkDebugProfiler.build_report.<locals>.<genexpr>5  s     EW6:.Ws   c              3  B   #    U  H  n[        US    SL5      v   M     g7f)r0   N)intr   s     r   r   r   :  s#     "ZRY3vgd'B#C#CRYs   )rz   r   total_requestsfailed_requeststotal_time_msr   requestsroutes)rq   rn   rV   r   r   rX   
setdefaultr   valuesrW   r   sortsumrr   rs   r$   )r   r   r   r   route_totalsr*   duration_ms	route_keyroute_totalr   r   s              r   build_report"_NetworkDebugProfiler.build_report  sO   ZZ #mm
 ,F	f[&9!: ,    &e,F&,[&9&?&?&A"&+5& 'B  )6.+A6&>RI&11$X.$*>$:"6N ! #'25'9K  A% 
#vj'99#
#s6'?$+F'GG#&,[&9&?&?&A"-.u5D5 'B) . '..0K$/
$;k'>R$RK!-1&EV9W9]9]9_2`-aK)*MM+& 1
 	7FEWEE}},,!'l""ZRY"ZZ*#F?+@+@+B$CD	
 		
S Zs   HHHH
Hc                    U R                   c  g [        U R                   5      nUR                  R                  SSS9  UR	                  [
        R                  " U R                  5       SSS9SS9  [        U5      $ )NT)parentsexist_okr   )indent	sort_keysr   r   )	rs   r   parentmkdirr   r   r   r  rO   )r   report_paths     r   maybe_write_report(_NetworkDebugProfiler.maybe_write_reportA  sp    $4,,-   =tzz$*;*;*=aSWXcjk;r   )rr   rq   ru   rt   rs   rn   rv   rb   rS   rb   rc   r   r   zstr | os.PathLike | Nonerb   rc   )rb   
str | None)r   rO   rb   rc   )r   r  rb   rc   )r   ra   rb   rc   )r   r`   r-   r   r_   rb   ra   )rZ   rd   re   rf   r   propertyrz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rg   rh   r   r   rj   rj   k   sh       6 &J $
)	4
l r   rj   znetwork_debug_report.jsonc                 :   [         R                  R                  SS5      R                  5       n  U (       a  [	        [        U 5      5      OSn[         R                  R                  SS5      R                  5       =(       d    [        nX4$ ! [         a    Sn NLf = f)NNETWORK_DEBUG_REPORTr3   FNETWORK_DEBUG_REPORT_PATH)r   environrI   striprS   r	   
ValueError_DEFAULT_REPORT_PATH)enabled_rawrz   r   s      r   _parse_network_debug_envr  Q  s}    **..!7<BBDK2=$y-.5 **..!<bAGGIaMaK	  s   B BBc                *    [         R                  U S9  g )Nr   )_NETWORK_DEBUG_PROFILERr   r   s    r   _enable_network_debug_reportr"  \  s    ""{";r   c                 ,    [         R                  5         g r   )r!  r   rh   r   r   _disable_network_debug_reportr$  `  s    ##%r   c                 ,    [         R                  5         g r   )r!  r}   rh   r   r   _clear_network_debug_reportr&  d  s    !!#r   c                 *    [         R                  5       $ r   )r!  r  rh   r   r   _get_network_debug_reportr(  h  s    "//11r   c                 >    [        5       u  pU (       d  g[        US9  g)NFr   T)r  r"  )rz   r   s     r   %_enable_network_debug_report_from_envr*  l  s    35G [9r   c                   [        5       nUS   S:X  a  gSSUS    3SUS    3SUS	   S
 S3/nUS   (       aG  SR                  S [        US   R                  5       S SS9 5       5      nUR	                  SU 35        UR	                  S5        UR	                  S5        [        [        US   S SS9S U  SS9 H  u  pVUS   =(       d    SUS    3n/ nS H4  n	US   R                  U	5      n
U
c  M  UR	                  U	 SU
S
 S35        M6     U(       a  SSR                  U5       S 3OSnUS!   (       a  US"   (       d  S#OSnUR	                  US$ S%US&    S'US(    S'US)   S
 S*U U U 35        M     UR	                  S5        UR	                  S+5        [        US,   S U SS9 HD  u  p]UR	                  US$ S%US&    S'US-    US.    S/US0    S1US)   S
 S2US3   S
 S4US5    35        MF     S6R                  U5      $ )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  8   #    U  H  u  pU S US S3v   M     g7f)=r,  r-  Nrh   )r   r*   r  s      r   r   /_format_network_debug_report.<locals>.<genexpr>  s*      "
&w" gQ{3's+&ws   c                    U S   $ )Nr   rh   )items    r   r   ._format_network_debug_report.<locals>.<lambda>  s    aefgahr   Tr   zPhase totals: r3   zSlowest requests:r   c                    U S   $ r   rh   )r   s    r   r   r3    s	    wz7Jr   r   )startr0   zstatus=rE   )connect_tcp	start_tlsreceive_response_headersreceive_response_bodyr   r/  z ()r1   rH   z incompletez>2z. r<    rC   rG   z ms zSlowest routes:r   r?   rA   z count=r   z total=z ms avg=r   z ms failures=r   
)r(  r   rW   rX   r   	enumeraterI   )max_requests
max_routesreportlinesphase_summaryidxr   status
phase_bitsr*   r  phase_suffixincomplete_suffixr   s                 r   _format_network_debug_reportrH  u  s   &(F1$B 	
f%5678
F#4567
#F?$;C#@D	E  		 "
&,V4E-F-L-L-NThrv&w"
 
 	~m_56	LL	LL$% vj!'JTXYZg[gh Egf].C-D$E
fE -11%8K&!!UG1[,=S"AB g 9CDIIj12!4-3H-=fM`FaMgi2hb)*!F5M?!F:<Ns;SSWX^W_`q_rs  sA  B	
  
LL	LL"#x 0* =QG
2hbx)5+@*A%-PWX]^eXfWg h:&s+8E(OC3HV[\fVgUhj	
 H 99Ur   c                  0    \ rS rSrSrS rS rS rS rSr	g)	NetworkDebugPlugini  zXPytest plugin that handles all network debug orchestration including xdist coordination.c                   [        5         [        R                  (       d  g [        US5      (       d#  [        R	                  5       nU(       a  X!l        g g UR                  R                  S5      nU(       a  [        R                  U5        g g )Nworkerinputnetwork_debug_shared_dir)	r*  r!  rz   hasattrr   _network_debug_shared_dirrL  rI   r   )r   configr   s      r   pytest_configure#NetworkDebugPlugin.pytest_configure  sn    -/&.. v}--0AACJ3=0   ++//0JKJ'66zB r   c                ^    [        UR                  SS5      nU(       a  X!R                  S'   gg)zCxdist hook: called on the controller to configure each worker node.rO  NrM  )getattrrP  rL  )r   noder   s      r   pytest_configure_node(NetworkDebugPlugin.pytest_configure_node  s,    T[[*EtL
;E78 r   c                    [        UR                  S5      (       aP  UR                  R                  R                  SS[        R
                  " 5        35      n[        R                  US9  g g )NrL  workeridr   )r   )rN  rP  rL  rI   r   r   r!  r   )r   session
exitstatusr   s       r   pytest_sessionfinish'NetworkDebugPlugin.pytest_sessionfinish  sR    7>>=112266zSCVWI#77)7L 2r   c                   [         R                  (       d  g [        UR                  S5      (       a  g [         R	                  5         S n [         R                  5       nUR                  SSS9  [        5       R                  5        H  nUR                  U5        M     Ub  UR                  SU 35        [         R                  5         g ! [         a  nSU 3n S nANS nAff = f)NrL  zFailed to write JSON report: zNetwork debugr/  )sepzJSON report: )r!  rz   rN  rP  r   r  r   sectionrH  
splitlines
write_liner   )r   terminalreporterr  r0   lines        r   pytest_terminal_summary*NetworkDebugPlugin.pytest_terminal_summary  s    &.. #**M:: 	 335	B1DDFK 	  c :02==?D''- @"''-}(EF224  	B9%AK	Bs   
C
 

C#CC#rh   N)
rZ   rd   re   rf   __doc__rQ  rV  r\  re  rg   rh   r   r   rJ  rJ    s    bC FM5r   rJ  c                L    U R                   R                  [        5       S5        g)zMRegister the network debug pytest plugin. Single entry point for conftest.py.network_debugN)pluginmanagerregisterrJ  )rP  s    r   register_network_debug_pluginrl    s    
!!"4"6Hr   rl  )rb   ztuple[bool, str]r   r  r  r  r  )   
   )r>  r   r?  r   rb   rO   ) 
__future__r   r   r   r   ro   r   collectionsr   	functoolsr   pathlibr   typingr   rQ   genericr	   r   rj   r!  r  r  r"  r$  r&  r(  r*  rH  rJ  rl  __all__rh   r   r   <module>rv     s    #   	   #     H
 H
V]  ] @ 01  3  <&$2-`65 65rI $r   