
    1Vh8                         d 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mZ ddlmZ d	 Z G d
 de
j                        Zej"                  d        Zd Zd Zy)z,A data provider that talks to a gRPC server.    N)tensor_util)timing)errors)provider)data_provider_pb2)data_provider_pb2_grpcc                 ,    t        j                  |       S )z)Wraps a gRPC channel with a service stub.)r   TensorBoardDataProviderStub)channels    N/home/dcms/DCMS/lib/python3.12/site-packages/tensorboard/data/grpc_provider.py	make_stubr      s    !==gFF    c                   z   e Zd ZdZd Zd Zd Zd Zd Ze	j                  ddd	       Ze	j                  ddd
d       Ze	j                  ddd       Ze	j                  ddd       Ze	j                  ddd
d       Ze	j                  	 dd       Ze	j                  	 	 dd       Ze	j                  d        Zy)GrpcDataProviderz#Data provider that talks over gRPC.c                      || _         || _        y)a$  Initializes a GrpcDataProvider.

        Args:
          addr: String address of the remote peer. Used cosmetically for
            data location.
          stub: `data_provider_pb2_grpc.TensorBoardDataProviderStub`
            value. See `make_stub` to construct one from a channel.
        N)_addr_stub)selfaddrstubs      r   __init__zGrpcDataProvider.__init__&   s     

r   c                      d| j                   z  S )NzGrpcDataProvider(addr=%r))r   )r   s    r   __str__zGrpcDataProvider.__str__2   s    *TZZ77r   c                D   t        j                         }||_        t               5  | j                  j                  |      }d d d        t        j                  j                  |j                  |j                  t        |j                              }|S # 1 sw Y   UxY w)N)data_locationexperiment_nameexperiment_descriptioncreation_time)r   GetExperimentRequestexperiment_id_translate_grpc_errorr   GetExperimentr   ExperimentMetadatar   namedescription_timestamp_proto_to_floatr   )r   ctxr    reqress        r   experiment_metadataz$GrpcDataProvider.experiment_metadata5   s    446)"$ 	0****3/C	0))++HH#&??3C4E4EF	
 
	0 	0s   BBc                    t        j                         }||_        t               5  | j                  j                  |      }d d d        j                  D cg c]  }|j                   c}S # 1 sw Y   -xY wc c}w N)r   ListPluginsRequestr    r!   r   ListPluginspluginsr$   )r   r'   r    r(   r)   ps         r   list_pluginszGrpcDataProvider.list_pluginsB   sb    224)"$ 	.**((-C	. #,1,,	. 	.,s   A.A:.A7c                R   t        j                         }||_        t               5  | j                  j                  |      }d d d        j                  D cg c]8  }t        j                  |j                  |j                  |j                        : c}S # 1 sw Y   WxY wc c}w )N)run_idrun_name
start_time)r   ListRunsRequestr    r!   r   ListRunsrunsr   Runr$   r5   )r   r'   r    r(   r)   runs         r   	list_runszGrpcDataProvider.list_runsI   s    //1)"$ 	+**%%c*C	+ xx
  LLxx>>
 	
	+ 	+
s   B=B$B!N)run_tag_filterc          
         t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }i }	|	||j                  <   |j                  D ]  }
|
j                  }t!        j"                  |j$                  |j&                  |j(                  j*                  j,                  |j(                  j.                  |j(                  j0                        |	|
j2                  <     |cd d d        S # 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nbuild requestz_stub.ListScalarsbuild resultmax_stepmax_wall_timeplugin_contentr%   display_name)r   log_latencyr   ListScalarsRequestr    plugin_filterplugin_name_populate_rtfr<   r!   r   ListScalarsr8   r4   tagsmetadatar   ScalarTimeSeriesrA   rB   summary_metadataplugin_datacontentsummary_descriptionrD   tag_namer   r'   r    rH   r<   r(   r)   result	run_entryrK   	tag_entrytime_seriess               r   list_scalarszGrpcDataProvider.list_scalarsW       0 	>#668C -C,7C).#*<*<=		>
  34 	2&( 2jj,,S12	2 / 	F XX 	-1y))*!* I"+"4"4K/7/H/H!,!5!5&1&?&?'2'C'C'O'O'W'W$/$@$@$T$T%0%A%A%N%N0D++, 	 		> 	>2 2	2 	2	 	=   AF6F*FF*CF7FF'	"F**F47G )
downsampler<   c          	      ~   t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         ||j                  _
        d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }	i }
|
||	j                  <   |	j                   D ]|  }g }||
|j"                  <   |j$                  }t'        |j(                  |j*                  |j,                        D ]/  \  }}}t/        j0                  |||      }|j3                  |       1 ~  |cd d d        S # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>   _stub.ReadScalarsr?   step	wall_timevalue)r   rE   r   ReadScalarsRequestr    rG   rH   rI   r<   r[   
num_pointsr!   r   ReadScalarsr8   r4   rK   rR   datazipr_   r`   ra   r   ScalarDatumappendr   r'   r    rH   r[   r<   r(   r)   rT   rU   rK   rV   seriesdr_   wtra   points                     r   read_scalarszGrpcDataProvider.read_scalarss   s    0 	3#668C -C,7C).#*<*<=(2CNN%	3  34 	2&( 2jj,,S12	2 / 	F XX -	-1y))*!* 
-IF/5D++,!A+.qvvq{{AGG+L -b% ( 4 4!%&("'!
 e,-	
-- !	 		3 	32 2	2 	2	 	=   AFF'F.F'B1F3FF$	 F''F03F<c          	      ~   t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         d|j                  _
        d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  t        j                  t               }j"                  D ]  }|j$                  }	|j&                  D ]j  }
|
j(                  }t+        |j,                  |j.                  |j0                        D ].  \  }}}t3        j4                  |||      ||	   |
j6                  <   0 l  |cd d d        S # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>      r]   r?   r^   )r   rE   r   rb   r    rG   rH   rI   r<   r[   rc   r!   r   rd   collectionsdefaultdictdictr8   r4   rK   re   rf   r_   r`   ra   r   rg   rR   )r   r'   r    rH   r<   r(   r)   rT   rU   r4   rV   rk   r_   rl   ra   s                  r   read_last_scalarsz"GrpcDataProvider.read_last_scalars   s    0 	*#668C -C,7C).#*<*<= )*CNN%	*  34 	2&( 2jj,,S12	2 / 	 ,,T2F XX 	$--!* I!A ,/qvvq{{AGG+L b%$00%)*,&+ x(););<	 !	 		* 	*2 2	2 	2	 	ro   c          
         t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }i }	|	||j                  <   |j                  D ]  }
|
j                  }t!        j"                  |j$                  |j&                  |j(                  j*                  j,                  |j(                  j.                  |j(                  j0                        |	|
j2                  <     |cd d d        S # 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>   z_stub.ListTensorsr?   r@   )r   rE   r   ListTensorsRequestr    rG   rH   rI   r<   r!   r   ListTensorsr8   r4   rK   rL   r   TensorTimeSeriesrA   rB   rN   rO   rP   rQ   rD   rR   rS   s               r   list_tensorszGrpcDataProvider.list_tensors   rY   rZ   c                   t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         ||j                  _
        d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }	i }
|
||	j                  <   |	j                   D ]  }g }||
|j"                  <   |j$                  }t'        |j(                  |j*                  |j,                        D ]B  \  }}}t/        j0                  ||t3        j4                  |            }|j7                  |       D   |cd d d        S # 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>   z_stub.ReadTensorsr?   )r_   r`   numpy)r   rE   r   ReadTensorsRequestr    rG   rH   rI   r<   r[   rc   r!   r   ReadTensorsr8   r4   rK   rR   re   rf   r_   r`   ra   r   TensorDatumr   make_ndarrayrh   ri   s                     r   read_tensorszGrpcDataProvider.read_tensors   s    0 	3#668C -C,7C).#*<*<=(2CNN%	3  34 	2&( 2jj,,S12	2 / 	F XX -	-1y))*!* 
-IF/5D++,!A+.qvvq{{AGG+L -b% ( 4 4!%&("-":":5"A!
 e,-	
-- !	 		3 	32 2	2 	2	 	s=   AF!F;F..F;CG!F+.F8	3F;;GGc                    t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }i }	|	||j                  <   |j                  D ]  }
|
j                  }t!        j"                  |j$                  |j&                  |j(                  |j*                  j,                  j.                  |j*                  j0                  |j*                  j2                        |	|
j4                  <     |cd d d        S # 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>   z_stub.ListBlobSequencesr?   )rA   rB   
max_lengthrC   r%   rD   )r   rE   r   ListBlobSequencesRequestr    rG   rH   rI   r<   r!   r   ListBlobSequencesr8   r4   rK   rL   r   BlobSequenceTimeSeriesrA   rB   r   rN   rO   rP   rQ   rD   rR   rS   s               r   list_blob_sequencesz$GrpcDataProvider.list_blob_sequences   s    0 	>#<<>C -C,7C).#*<*<=		>
  9: 	8&( 8jj22378	8 / 	F XX 	-1y))*!* 	I"+"4"4K/7/N/N!,!5!5&1&?&?#.#9#9'2'C'C'O'O'W'W$/$@$@$T$T%0%A%A%N%N0D++,	 	 		> 	>8 8	8 	8	 	s=   AF6F5F(F5CGF%(F2	-F55F?Gc                 6   t        j                  d      5  t        j                         }||_        ||j
                  _        t        ||j                         ||j                  _
        d d d        t        j                  d      5  t               5  | j                  j                        }d d d        d d d        t        j                  d      5  i }j                  D ]  }	i }
|
||	j                  <   |	j                   D ]  }g }||
|j"                  <   |j$                  }t'        |j(                  |j*                  |j,                        D ]  \  }}}g }|j.                  D ]@  }|j1                  t3        j4                  |j6                  |j8                  xs d              B t3        j:                  ||t=        |            }|j1                  |          |cd d d        S # 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)Nr>   z_stub.ReadBlobSequencesr?   )blob_keyurl)r_   r`   values)r   rE   r   ReadBlobSequencesRequestr    rG   rH   rI   r<   r[   rc   r!   r   ReadBlobSequencesr8   r4   rK   rR   re   rf   r_   r`   r   	blob_refsrh   r   BlobReferencer   r   BlobSequenceDatumtuple)r   r'   r    rH   r[   r<   r(   r)   rT   rU   rK   rV   rj   rk   r_   rl   blob_sequencer   refrm   s                       r   read_blob_sequencesz$GrpcDataProvider.read_blob_sequences  s    0 	3#<<>C -C,7C).#*<*<=(2CNN%	3  9: 	8&( 8jj22378	8 / 	F XX -	-1y))*!* -IF/5D++,!A36QXX4 -/b- "$#0#:#: C"MM ( 6 6-0\\sww$!" !) : :!%E&M! e,-	--* /	 		3 	38 8	8 	8	 	s=   AG(HG5.HDH(G25G?	:HHHc                    t        j                  d      5  t        j                         }||_        d d d        t        j                  d      5  t               5  t        | j                  j                              }d d d        d d d        t        j                  d      5  dj                  d D              cd d d        S # 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nr>   zlist(_stub.ReadBlob)r?   r   c              3   4   K   | ]  }|j                     y wr,   )re   ).0r)   s     r   	<genexpr>z-GrpcDataProvider.read_blob.<locals>.<genexpr>P  s     :CHH:s   )
r   rE   r   ReadBlobRequestr   r!   listr   ReadBlobjoin)r   r'   r   r(   	responsess        r   	read_blobzGrpcDataProvider.read_blobG  s    0 	$#335C#CL	$  67 	;&( ; !4!4S!9:	;	; / 	;88:	::	; 	;	$ 	$; ;	; 	;	; 	;s;   CC%C?C$C*CC	CC'*C3r,   )NN)__name__
__module____qualname____doc__r   r   r*   r1   r;   r   rE   rX   rn   ru   rz   r   r   r   r    r   r   r   r   #   s   -
8-
 AE 6  " "H  # #J AE 6  " "H >B 8  ( (T ; ;r   r   c               #   "  K   	 d  y # t         j                  $ r} | j                         t         j                  j                  k(  r#t        j                  | j                               | j                         t         j                  j                  k(  r#t        j                  | j                               | j                         t         j                  j                  k(  r#t        j                  | j                                d } ~ ww xY wwr,   )grpcRpcErrorcode
StatusCodeINVALID_ARGUMENTr   InvalidArgumentErrordetails	NOT_FOUNDNotFoundErrorPERMISSION_DENIEDPermissionDeniedError)es    r   r!   r!   S  s     	== 668t777--aiik::668t000&&qyy{33668t888..qyy{;;s%   D	 DDC+DDDc                     | y| j                   ,t        | j                         |j                   j                  dd | j                  -t        | j                        |j                  j                  dd yy)z)Copies `run_tag_filter` into `rtf_proto`.N)r8   sortednamesrK   )r<   	rtf_protos     r   rI   rI   a  sf    &"()<)<"=	Q&"()<)<"=	Q 'r   c                 (    | j                         dz  S )z@Converts `timestamp_pb2.Timestamp` to float seconds since epoch.g    eA)ToNanoseconds)tss    r   r&   r&   k  s    ##r   )r   rr   
contextlibr   tensorboard.utilr   r   tensorboardr   tensorboard.datar   tensorboard.data.protor   r   r   DataProviderr   contextmanagerr!   rI   r&   r   r   r   <module>r      sd    3    ( #  % 4 9G
m;x,, m;`	 
 
>$r   