
    &Vf1                         d 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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 ddlmZ ddlmZ ddlmZ  ej                    Z G d dej                  ZdS )zThe TensorBoard Graphs plugin.    N)wrappers)errors)plugin_util)	http_util)process_graph)
config_pb2)	graph_pb2)provider)base_plugin)
graph_util)
keras_util)metadata)
tb_loggingc                       e Zd ZdZej        Zd Zd Zd Z	d Z
d ZddZd	 Z	 	 	 dd
Zd Zej        j        d             Zej        j        d             Zej        j        d             ZdS )GraphsPluginzGraphs Plugin for TensorBoard.c                     |j         | _        dS )z|Instantiates GraphsPlugin via TensorBoard core.

        Args:
          context: A base_plugin.TBContext instance.
        N)data_provider_data_provider)selfcontexts     d/var/www/html/software/conda/lib/python3.11/site-packages/tensorboard/plugins/graph/graphs_plugin.py__init__zGraphsPlugin.__init__*   s     &3    c                 ,    | j         | j        | j        dS )N)z/graphz/infoz/run_metadata)graph_route
info_routerun_metadata_router   s    r   get_plugin_appszGraphsPlugin.get_plugin_apps2   s"    &_!4
 
 	
r   c                     dS )z@The graphs plugin is active iff any run has a graph or metadata.F r   s    r   	is_activezGraphsPlugin.is_active9   s    ur   c                 t    t           j        t           j        t           j        t           j        t           j        fS N)r   PLUGIN_NAMEPLUGIN_NAME_RUN_METADATA#PLUGIN_NAME_RUN_METADATA_WITH_GRAPHPLUGIN_NAME_KERAS_MODELPLUGIN_NAME_TAGGED_RUN_METADATAr   s    r   data_plugin_nameszGraphsPlugin.data_plugin_names=   s*     -8,4
 	
r   c                 .    t          j        dd          S )Nztf-graph-dashboardT)element_namedisable_reload)r   FrontendMetadatar   s    r   frontend_metadatazGraphsPlugin.frontend_metadataF   s"    +-
 
 
 	
r   Nc                    i dfd	}| j                             ||t          j                  }|                                D ]Y\  }}|                                D ]?\  }}|j        dk    rt                              d           + |||          \  }	}
d|
d<   @Z| j                             ||t          j                  }|                                D ]^\  }}|                                D ]D\  }}|j        dk    rt                              d           + |||          \  }	}
d|
d<   d|
d<   E_| j                             ||t          j	                  }|                                D ]Y\  }}|                                D ]?\  }}|j        dk    rt                              d           + |||          \  }	}
d|
d	<   @Z| j                             ||t          j
                  }|                                D ]'\  }}t          j        |v r ||d          \  }}	d|d
<   (| j                             ||t          j                  }|                                D ]\  }}|D ]} |||          \  }	}
d|
d<   S )z9Returns a dict of all runs and their data availabilities.Nc                                          | | i dd          }d }|r.|                    d                               ||dddd          }||fS )NF)runtags	run_graphr3   )tagconceptual_graphop_graphprofile)
setdefaultget)r2   r5   run_itemtag_itemresults       r   add_row_itemz,GraphsPlugin.info_impl.<locals>.add_row_itemQ   s    ((!&	  H H 
#<<//::",1$)#( 	 	 h''r   )experiment_idplugin_name   1z/Ignoring unrecognizable version of RunMetadata.Tr7   r8   r6   r4   r$   )r   list_blob_sequencesr   r'   itemsplugin_contentloggerwarningr&   r(   r%   RUN_GRAPH_NAMEr)   )r   ctx
experimentr>   mappingrun_namer3   r5   tag_data_r<   r;   r=   s               @r   	info_implzGraphsPlugin.info_implM   sU   	( 	( 	( 	( 	( 	(2 %99$ D : 
 

 !( 	, 	,Xt#'::<< 
, 
,h *d22NNI    ,Xs ; ;H'+$$
, %99$ 9 : 
 

 !( 		, 		,Xt#'::<< , ,h*d22NNI    ,Xs ; ;H&*#'+$$, %99$ 8 : 
 

 !( 	4 	4Xt#'::<< 4 4h*d22NNI    ,Xs ; ;H/3+,,4 %99$ , : 
 

 !( 	- 	-Xt&$.. ,Xt < <1(,% %99$ @ : 
 

 !( 	+ 	+Xt + + ,Xs ; ;H&*##+ r   c           
      ~   |D ]}| j                             |||t          j        |g|g          d          }|                    |i                               |d          }	 |d         j        d         }	n# t          $ r Y w xY w| j                             ||	j                  c S t          j
                    )N)runsr3      )r?   r@   run_tag_filter
downsampler!   r   )blob_key)r   read_blob_sequencesr
   RunTagFilterr:   values
IndexError	read_blobrT   r   NotFoundError)
r   rH   rI   plugin_namesr2   r5   r@   blob_sequencesblob_sequence_datablob_refs
             r   
_read_blobzGraphsPlugin._read_blob   s    ' 	 	K!0DD(''43%seLLL E  N "0!3!3C!<!<!@!@b!I!I-a07:   &00h/ 1      "$$$s   %A99
BBc           	      p   |rKt          j        |                     ||t          j        g||                    }t          j        |          }	n|N|                     ||t          j        g|t          j                  }
t          j
                            |
          }	nst          j        t          j        g}|                     |||||          }t          j                            |          }t!          j        d |j        D                       }	t'          j        |	||           t+          |	          dfS )=Result of the form `(body, mime_type)`; may raise `NotFound`.Nc                     g | ]	}|j         
S r!   )pre_optimization_graph).0
func_graphs     r   
<listcomp>z+GraphsPlugin.graph_impl.<locals>.<listcomp>   s+       " 5  r   text/x-protobuf)jsonloadsr_   r   r(   r   keras_model_to_graph_defr%   rG   r	   GraphDef
FromStringr&   r'   r   RunMetadatar   merge_graph_defsfunction_graphsr   prepare_graph_for_uistr)r   rH   r2   r5   is_conceptualrI   limit_attr_sizelarge_attrs_keykeras_model_configgraph	graph_rawpluginsraw_run_metadatarun_metadatas                 r   
graph_implzGraphsPlugin.graph_impl   sU     %	!%56 " " 78JKKEE[%&' I &11)<<EE
 1<G  $Z#s    &1<<=MNNL/ &2&B   E 	*?O	
 	
 	
 E

-..r   c                     t           j        t           j        g}|                     |||||          }t          j                            |          }t          |          dfS )ra   rg   )r   r)   r&   r_   r   rm   rl   rq   )r   rH   rI   r2   r5   rx   ry   rz   s           r   run_metadata_implzGraphsPlugin.run_metadata_impl  s^     4-
  ??3
GS#NN!-889IJJL!!#455r   c                     t          j        |j                  }t          j        |j                  }|                     ||          }t          j        ||d          S )Nzapplication/json)r   r   environr?   rN   r   Respond)r   requestrH   rI   infos        r   r   zGraphsPlugin.info_route  sO    !'/22 .w??
~~c:.. $0BCCCr   c           	         t          j        |j                  }t          j        |j                  }|j                            d          }|j                            d          }|j                            dd          }|dk    rdnd}|t          j        |dd	d
          S |j                            dd          }|8	 t          |          }n'# t          $ r t          j        |dd	d
          cY S w xY w|j                            dd          }		 | 
                    |||||||	          }
n4# t          $ r'}t          j        ||j        d	d
          cY d}~S d}~ww xY w|
\  }}t          j        |||          S )zKGiven a single run, return the graph definition in protobuf
        format.r2   r5   
conceptualFtrueTN!query parameter "run" is required
text/plain  rs   z4query parameter `limit_attr_size` must be an integerrt   )code)r   r   r   r?   argsr:   r   r   int
ValueErrorr{   message)r   r   rH   rI   r2   r5   conceptual_argrr   rs   rt   r=   ebody	mime_types                 r   r   zGraphsPlugin.graph_route  s    !'/22 .w??
lu%%lu%% )),>> .& 8 8e;$<lC   ",**+<dCC&"%o"6"6    (J 	     ",**+<dCC	Q__ FF  	Q 	Q 	Q$WaiCPPPPPPPPP	Q"y $	:::s0   C !C76C7D2 2
E#<EE#E#c                    t          j        |j                  }t          j        |j                  }|j                            d          }|j                            d          }|t          j        |ddd          S |t          j        |ddd          S |                     ||||          \  }}t          j        |||          S )z9Given a tag and a run, return the session.run() metadata.r5   r2   Nz!query parameter "tag" is requiredr   r   r   )	r   r   r   r?   r   r:   r   r   r}   )r   r   rH   rI   r5   r2   r   r   s           r   r   zGraphsPlugin.run_metadata_routeA  s     !'/22 .w??
lu%%lu%%;$<lC   ;$<lC   !223
CMMy $	:::r   r$   )NNN)__name__
__module____qualname____doc__r   r%   r@   r   r   r"   r*   r/   rN   r_   r{   r}   r   Requestapplicationr   r   r   r!   r   r   r   r   %   s.       ((&K4 4 4
 
 
  
 
 

 
 
g g g gR% % %2 7/ 7/ 7/ 7/r	6 	6 	6 !D D "!D !*; *; "!*;X !; ; "!; ; ;r   r   )r   rh   werkzeugr   tensorboardr   r   tensorboard.backendr   r   tensorboard.compat.protor   r	   tensorboard.datar
   tensorboard.pluginsr   tensorboard.plugins.graphr   r   r   tensorboard.utilr   
get_loggerrE   TBPluginr   r!   r   r   <module>r      sS   % $              # # # # # # ) ) ) ) ) ) - - - - - - / / / / / / . . . . . . % % % % % % + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 . . . . . . ' ' ' ' ' '			 	 l; l; l; l; l;;' l; l; l; l; l;r   