
    N j3                        % S SK r S SK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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 SKJrJr  S S	KJrJr  \R:                  " \5      r\R@                  \!S
'   \" SS9 " S S5      5       r"\" SS9 " S S5      5       r#\" SS9 " S S5      5       r$ " S S\5      r%S\&\'   S\\"   4S jr(S\&\'   S\\"   4S jr)S/S\'S\'S\*\&\'   \\"   4   4S jjr+S\'4S jr,Sr-Sr.S r/ " S! S"5      r0 " S# S$\5      r1 " S% S&\5      r2 " S' S(5      r3S)\4S*\'S-  S+\5S,\&\%   S-\6\'   SS4S. jr7g)0    N)ABCabstractmethod)CallableIterable)ThreadPoolExecutor)	dataclass)BaseHTTPRequestHandlerThreadingHTTPServer)parse_qsurlparse)
DictLoaderEnvironment)get_world_sizetcpstore_clientloggerT)slotsc                   6    \ rS rSr% \\S'   \\S'   S rS rSr	g)Response   status_codetextc                 n    U R                   S:w  a%  [        SU R                    SU R                   35      eg )N   zHTTP z: )r   RuntimeErrorr   selfs    r/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/distributed/debug/_frontend.pyraise_for_statusResponse.raise_for_status!   s8    s"t'7'7&8499+FGG #    c                 B    [         R                  " U R                  5      $ N)jsonloadsr   r   s    r   r#   Response.json%   s    zz$))$$r     N)
__name__
__module____qualname____firstlineno__int__annotations__strr   r#   __static_attributes__r&   r    r   r   r      s    
IH%r    r   c                   *    \ rS rSr% \\S'   \\S'   Srg)NavLink)   pathlabelr&   N)r'   r(   r)   r*   r-   r,   r.   r&   r    r   r0   r0   )   s    
IJr    r0   c                   6    \ rS rSr% \\S'   \S/\4   \S'   Srg)Route/   r2   HTTPRequestHandlerhandlerr&   N)	r'   r(   r)   r*   r-   r,   r   bytesr.   r&   r    r   r5   r5   /   s    
I+,e344r    r5   c                       \ rS rSr\S\\   4S j5       r\S\\   4S j5       r	S\
\\4   4S jrS\S-  4S jrS\4S jrS	rg)
DebugHandler5   returnc                     g r"   r&   r   s    r   routesDebugHandler.routes6   s    %(r    c                     g r"   r&   r   s    r   	nav_linksDebugHandler.nav_links9   s    *-r    c                     0 $ r"   r&   r   s    r   	templatesDebugHandler.templates<   s    	r    Nc                     g r"   r&   r   s    r   dumpDebugHandler.dump?   s    r    c                 H    [        U 5      R                  R                  5       $ r"   )typer'   lowerr   s    r   dump_filenameDebugHandler.dump_filenameB   s    Dz""((**r    r&   )r'   r(   r)   r*   r   listr5   r?   r0   rB   dictr-   rE   rH   rM   r.   r&   r    r   r;   r;   5   s`    (U( (-4=- -4S> cDj +s +r    r;   urlsr=   c                    ^ SS K mSnS[        S[        4U4S jjn[        US9 nUR	                  X 5      nS S S 5        U$ ! , (       d  f       W$ = f)Nr      urlr=   c                 f   > TR                  U 5      n[        UR                  UR                  5      $ r"   )postr   r   r   )rT   resprequestss     r   getfetch_thread_pool.<locals>.getQ   s(    }}S!(($))44r    )max_workers)rX   r-   r   r   map)rQ   r[   rY   executorrespsrX   s        @r   fetch_thread_poolr_   K   sT    K5 5 5 
	4S' 
5 L 
5	4 Ls   A
Ac                    ^^ SS K mSTR                  S[        S[        4S jmS[        [           S[
        [           4UU4S jjn[        R                  " U" U 5      5      $ )Nr   sessionrT   r=   c                    #    U R                  U5       IS h  vN nUR                  5       I S h  vN n[        UR                  U5      sS S S 5      IS h  vN   $  NC N- N	! , IS h  vN  (       d  f       g = f7fr"   )rV   r   r   status)ra   rT   rW   r   s       r   fetchfetch_aiohttp.<locals>.fetch`   sN     <<$$$DDKK. %$$$ %$$$sT   A<AA<A"AA"
A<A A<A" A<"A9(A+)A95A<rQ   c           
        >#    TR                  5        IS h  vN n[        R                  " U  Vs/ s H  nT" X5      PM     sn6 I S h  vN sS S S 5      IS h  vN   $  NGs  snf  N N! , IS h  vN  (       d  f       g = f7fr"   )ClientSessionasynciogather)rQ   ra   rT   aiohttprd   s      r   ri   fetch_aiohttp.<locals>.gathere   sY     ((**g )N#%*=)NOO +**)NO +***sa   BA BA+A"
A+
A'A+BA)B"A+)B+B1A42B>B)rj   rg   r-   r   rO   r   rh   run)rQ   ri   rj   rd   s     @@r   fetch_aiohttprm   [   sb     /W22 / / /
P49 P(); P P ;;vd|$$r    endpointargsc                 >   [        5       n[        [        5       5       Vs/ s H  nSU 3PM
     nnUR                  U5      nU Vs/ s H  ofR	                  5        SU  SU 3PM     nn [        U5      nXW4$ s  snf s  snf ! [         a    [        U5      n XW4$ f = f)Nrankz	/handler/?)r   ranger   	multi_getdecoderm   ImportErrorr_   )rn   ro   storerkeysaddrsaddrr^   s           r   	fetch_allr|   l   s    E %n&6 78 71d1#J 7D8OOD!EFKLediz4&9eEL)e$ < 9L  )!%(<)s   A8!A=*B BBblobc                 X    [         R                  " U 5      n[         R                  " USS9$ )N   )indent)r#   r$   dumps)r}   parseds     r   format_jsonr   z   s!    ZZF::fQ''r    ac  
<!doctype html>
<head>
    <title>{% block title %}{% endblock %} - PyTorch Distributed</title>
    <link rel="shortcut icon" type="image/x-icon" href="https://pytorch.org/favicon.ico?">

    <style>
        body {
            margin: 0;
            font-family:
                -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,
                "Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji",
                "Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
            font-size: 1rem;
            font-weight: 400;
            line-height: 1.5;
            color: #212529;
            text-align: left;
            background-color: #fff;
        }
        h1, h2, h2, h4, h5, h6, .h1, .h2, .h2, .h4, .h5, .h6 {
            margin-bottom: .5rem;
            font-weight: 500;
            line-height: 1.2;
        }
        nav {
            background-color: rgba(0, 0, 0, 0.17);
            padding: 10px;
            display: flex;
            align-items: center;
            padding: 16px;
            justify-content: flex-start;
        }
        nav h1 {
            display: inline-block;
            margin: 0;
        }
        nav a {
           margin: 0 8px;
        }
        section {
            max-width: 1280px;
            padding: 16px;
            margin: 0 auto;
        }
        pre {
            white-space: pre-wrap;
            max-width: 100%;
        }
    </style>
</head>

<nav>
    <h1>Torch Distributed Debug Server</h1>

    {{ nav_links | safe }}
</nav>

<section class="content">
  {% block header %}{% endblock %}
  {% block content %}{% endblock %}
</section>
    a  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{title}}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ resp.text }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    a  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{ title }}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ format_json(resp.text) }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    c            	       X    \ rS rSr SS\\   S\S\SS4S jjrSS jr	SS	 jr
SS
 jrSrg)PeriodicDumper   handlers
output_dirinterval_secondsr=   Nc                 j    Xl         X l        X0l        [        R                  " 5       U l        S U l        g r"   )	_handlers_output_dir_interval_seconds	threadingEvent_stop_event_thread)r   r   r   r   s       r   __init__PeriodicDumper.__init__   s+     "%!1$??,04r    c                     [         R                  " U R                  SS9  [        R                  " U R
                  SSS9U l        U R                  R                  5         g )NT)exist_okz distributed.debug.PeriodicDumper)targetdaemonname)osmakedirsr   r   Thread_runr   startr   s    r   r   PeriodicDumper.start   sG    
D$$t4 ''993

 	r    c                     U R                   R                  5         U R                  b  U R                  R                  5         g g r"   )r   setr   joinr   s    r   stopPeriodicDumper.stop  s3    <<#LL $r    c                    U R                   R                  5       (       d  U R                   H  n UR                  5       nUc  M  [        R                  " S5      nUR                  5        SU S3n[        R                  R                  U R                  U5      n [        US5       nUR                  U5        S S S 5        M     U R                   R!                  U R"                  5        U R                   R                  5       (       d  M  g g ! [         a)    [
        R                  SUR                  5       5         GM  f = f! , (       d  f       GM(  = f! [         a    [
        R                  SU5         GMO  f = f)NzFailed to dump %sz%Y%m%d_%H%M%S_z.txtwzFailed to write dump to %s)r   is_setr   rH   	Exceptionr   	exceptionrM   timestrftimer   r2   r   r   openwritewaitr   )r   r8   content	timestampfilenamer2   fs          r   r   PeriodicDumper._run	  s4   ""))++>>%llnG ? MM/:	%3356a	{$Gww||D$4$4h?IdCA( ) *  !!$"8"89# ""))++ ! $$%8':O:O:QR )  I$$%A4HHIsA   DE(E:E.E E
E	EE E<;E<)r   r   r   r   r   )g      N@r=   N)r'   r(   r)   r*   rO   r;   r-   floatr   r   r   r   r.   r&   r    r   r   r      sF    
 #'	
5|$
5 
5  	
5
 

5 
:r    r   c                   Z    \ rS rSr% \R
                  r\R                  \S'   Sr	\
\S'   Srg)_IPv6HTTPServeri#  address_familyi   request_queue_sizer&   N)r'   r(   r)   r*   socketAF_INET6r   AddressFamilyr,   r   r+   r.   r&   r    r   r   r   #  s!    +1??NF((:""r    r   c            	           \ rS rSr% S\S'   S rS rS\4S jrS\	\\
\   4   4S jrS\4S	 jrS
\4S\S\S\S\4S jjrSrg
)r7   i(  FrontendServerfrontendc                 P    [         R                  SU R                  S   X-  5        g )Nz%s %sr   )r   infoclient_address)r   formatro   s      r   log_messageHTTPRequestHandler.log_message+  s$    "M	
r    c                 :    U R                   R                  U 5        g r"   )r   _handle_requestr   s    r   do_GETHTTPRequestHandler.do_GET2  s    %%d+r    r=   c                 @    [        U R                  5      R                  $ r"   )r   r2   r   s    r   get_pathHTTPRequestHandler.get_path5  s    		"'''r    c                 4    [        U R                  5       5      $ r"   )r   get_raw_queryr   s    r   	get_queryHTTPRequestHandler.get_query8  s    **,--r    c                 @    [        U R                  5      R                  $ r"   )r   r2   queryr   s    r   r    HTTPRequestHandler.get_raw_query;  s    		"(((r    Nr   defaultrK   c                 J    U R                  5       nX;  a  U$ U" XA   S   5      $ )Nr   )r   )r   r   r   rK   r   s        r   get_query_arg HTTPRequestHandler.get_query_arg>  s,      NEKN##r    r&   )r'   r(   r)   r*   r,   r   r   r-   r   rP   rO   r   r   objectrK   r   r.   r&   r    r   r7   r7   (  st    
,(# (.4T#Y/ .)s ) ,0c$$"($7;$	$ $r    r7   c                   t    \ rS rSr SS\S\\   S-  4S jjrSS jrSS jr	S	\
SS4S
 jrS\S\S\4S jrSrg)r   iG  Nportr   c                    Uc  SSK Jn  U" 5       nSR                  S U 5       5      n[        [        [
        S.nU H"  nUR                  UR                  5       5        M$     [        U5      n[        USS9U l
        U R                  R                  R                  [        [        [        US9  0 U l        U H=  nUR!                  5        H&  nUR"                  U R                  UR$                  '   M(     M?     X l        [)        S	[*        4S
U 05      n	SU4n
[-        X5      U l        [0        R2                  " U R4                  SSSS9U l        U R6                  R9                  5         g )Nr   )default_handlers
c              3      #    U  H:  nUR                  5         H"  nS UR                   SUR                   S3v   M$     M<     g7f)z    <a href="z">z</a> <!--@lint-ignore-->N)rB   r2   r3   ).0r8   links      r   	<genexpr>*FrontendServer.__init__.<locals>.<genexpr>S  sF      
#))+ DII;b4LM+ N#s   AA)z	base.htmlzraw_resp.htmlzjson_resp.htmlT)loaderenable_async)zipr   	enumeraterB   r7   r    r&   z distributed.debug.FrontendServer)r   ro   r   r   )'torch.distributed.debug._debug_handlersr   r   BASE_TEMPLATERAW_RESP_TEMPLATEJSON_RESP_TEMPLATEupdaterE   r   r   
_jinja_envglobalsr   r   r   _routesr?   r8   r2   r   rK   r7   r   _serverr   r   _server   r   )r   r   r   r   nav_htmlall_templatesr8   r   routeRequestHandlerClassserver_addresss              r   r   FrontendServer.__init__H  sV   
 P')H 99 
#
 
 '.0)

  G  !2!2!45   M*%V$G&&#	 	' 	
 JLG )+0==UZZ( *   " # !
 d&~K '';;3	
 	r    r=   c                      U R                   R                  5         g ! [         a    [        R	                  S5         g f = f)Nz got exception in frontend server)r   serve_foreverr   r   r   r   s    r   r   FrontendServer._serve  s8    	ALL&&( 	A?@	As    ??c                 8    U R                   R                  5         g r"   )r   r   r   s    r   r   FrontendServer.join  s    r    reqc                    UR                  5       nX R                  ;  a  UR                  SSU 35        g U R                  U   n U" U5      nUR                  S5        UR                  SS5        UR                  5         UR                  R                  U5        g ! [        [        4 a>  n[
        R                  SU5        UR                  SS[        U5       35         S nAg S nAff = f)	Ni  zHandler not found: z-Exception in frontend server when handling %si  zException: r   zContent-typez	text/html)r   r   
send_errorr   
SystemExitr   r   reprsend_responsesend_headerend_headerswfiler   )r   r   r2   r8   rW   es         r   r   FrontendServer._handle_request  s    ||~||#NN3"5dV <=,,t$		3<D 	#4		 :& 	? NN3+d1gY 78	s   B C+-4C&&C+templatekwargsc                 t    U R                   R                  U5      R                  " S0 UD6R                  5       $ )Nr&   )r   get_templaterenderencode)r   r  r	  s      r   render_templateFrontendServer.render_template  s.    ++H5<<FvFMMOOr    )r   r   r   r   r   r"   r   )r'   r(   r)   r*   r+   rO   r;   r   r   r   r7   r   r-   r   r9   r  r.   r&   r    r   r   r   G  sf     /3;; |$t+;zA#5 $ .P Pv P% Pr    r   r   dump_dirdump_intervalr   enabled_dumpsc                    [         R                  [        R                  5        [	        XS9n[         R                  SUR                  R                  5        S nUb[  [        U Vs/ s H  nUR                  5       U;   d  M  UPM     snUU5      nUR                  5         [         R                  SUU5         UR                  5         Ub  UR                  5         g g s  snf ! Ub  UR                  5         f f = f)N)r   r   z"Frontend server started on port %dz2Periodic dumper started, writing to %s every %.0fs)r   setLevelloggingINFOr   r   r   server_portr   rM   r   r   r   )r   r  r  r   r  serverdumperr8   s           r   mainr    s     OOGLL!9F
KK4fnn6P6PQ$(F  ('G((*m; '
 
 	@	
KKM %$ KKM s   %CC8C" "C8)r   )8rh   r#   r  r   r   r   r   abcr   r   collections.abcr   r   concurrent.futuresr   dataclassesr   http.serverr	   r
   urllib.parser   r   jinja2r   r   torch.distributed.debug._storer   r   	getLoggerr'   r   Loggerr,   r   r0   r5   r;   rO   r-   r_   rm   tupler|   r   r   r   r   r   r   r7   r   r+   r   r   r  r&   r    r   <module>r&     s      	    # . 1 ! C + * J !**84 4 	% 	% 	%   
 5 5 5
+3 +,DI (8*<  %S	 %hx&8 %" 3 d3i(AS6S0T (c (>@ $ 0-: -:j#) #
$/ $>_P _PD"
"Dj" " < 	"
 s8" 
"r    