a
    d=ic!                     @   s  d 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 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d Z&dd Z'd d! Z(d"d# Z)d$S )%aH  Utilities to migrate legacy summaries/events to generic data form.

For legacy summaries, this populates the `SummaryMetadata.data_class`
field and makes any necessary transformations to the tensor value. For
`graph_def` events, this creates a new summary event.

This should be effected after the `data_compat` transformation.
    )	event_pb2)summary_pb2)metadata)tensor_utilc                 C   sB   |  d}|dkrt| S |dkr*t| S |dkr<t| |S | fS )a  Migrate an event to a sequence of events.

    Args:
      event: An `event_pb2.Event`. The caller transfers ownership of the
        event to this method; the event may be mutated, and may or may
        not appear in the returned sequence.
      initial_metadata: Map from tag name (string) to `SummaryMetadata`
        proto for the initial occurrence of the given tag within the
        enclosing run. While loading a given run, the caller should
        always pass the same dictionary here, initially `{}`; this
        function will mutate it and reuse it for future calls.

    Returns:
      A sequence of `event_pb2.Event`s to use instead of `event`.
    what	graph_deftagged_run_metadatasummary)Z
WhichOneof_migrate_graph_event"_migrate_tagged_run_metadata_event_migrate_summary_event)eventinitial_metadatar    r   m/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/tensorboard/dataclass_compat.pymigrate_event*   s    

r   c                 C   sb   t  }| j|_| j|_|jjjtjd}| j	}|j
t|g tj|jj_tj|j_| |fS N)tag)r   Event	wall_timestepr	   valueaddgraphs_metadataZRUN_GRAPH_NAMEr   tensorCopyFromr   make_tensor_protoPLUGIN_NAMEr   plugin_dataplugin_namer   DATA_CLASS_BLOB_SEQUENCE
data_class)	old_eventresultr   Zgraph_bytesr   r   r   r
   D   s    
r
   c                 C   sb   t  }| j|_| j|_| j}|jjj|jd}|j	
t|jg tj|jj_tj|j_|fS r   )r   r   r   r   r   r	   r   r   r   r   r   r   r   Zrun_metadatar   ZPLUGIN_NAME_TAGGED_RUN_METADATAr   r   r   r   r    r!   )r"   r#   Ztrmr   r   r   r   r   S   s    
r   c                    sj   | j j} fdd|D }t|t|krHtdd t||D rH| fS | j jd d = | j j| | fS )Nc                    s    g | ]}t | D ]}|qqS r   )_migrate_value).0oldnewr   r   r   
<listcomp>d   s   z*_migrate_summary_event.<locals>.<listcomp>c                 s   s   | ]\}}||u V  qd S )Nr   )r%   xyr   r   r   	<genexpr>i   s   z)_migrate_summary_event.<locals>.<genexpr>)r	   r   lenallzipextend)r   r   values
new_valuesr   r(   r   r   b   s    
r   c                 C   s  | | j}d}|du r:d}t }|| j ||| j< |jtjkrL| fS |jj	}|t
jkrft| S |tjkrxt| S |tjkrt| S |tjkrt| S |tjkrt| S |tjkrt| S |tjkrt| S |tjkrt| S |tjkrt| S |tjtjtj fv rt!| S | fS )z;Convert an old value to a stream of new values. May mutate.FNT)"getr   r   ZSummaryMetadatar   r   r!   ZDATA_CLASS_UNKNOWNr   r   histograms_metadatar   _migrate_histogram_valueimages_metadata_migrate_image_valueaudio_metadata_migrate_audio_valuescalars_metadata_migrate_scalar_valuetext_metadata_migrate_text_valuehparams_metadata_migrate_hparams_valuepr_curves_metadata_migrate_pr_curve_valuemesh_metadata_migrate_mesh_valuecustom_scalars_metadata_migrate_custom_scalars_valuer   ZPLUGIN_NAME_RUN_METADATAZ#PLUGIN_NAME_RUN_METADATA_WITH_GRAPHZPLUGIN_NAME_KERAS_MODEL_migrate_graph_sub_plugin_value)r   r   r   initialr   r   r   r   r$   r   sF    









r$   c                 C   s   |  drtj| j_| fS Nr   )HasFieldr   ZDATA_CLASS_SCALARr   r!   r   r   r   r   r;      s    

r;   c                 C   s   |  drtj| j_| fS rH   rI   r   DATA_CLASS_TENSORr   r!   rJ   r   r   r   r5      s    

r5   c                 C   s   |  drtj| j_| fS rH   )rI   r   r    r   r!   rJ   r   r   r   r7      s    

r7   c                 C   s   |  drtj| j_| fS rH   rK   rJ   r   r   r   r=      s    

r=   c                 C   sj   |  drtj| j_| j}d}t|jjdkrB||jj	 j
9 }q|dkrd|jd d | |jd d < | fS )Nr      )rI   r   r    r   r!   r   r-   tensor_shapedimpopsizeZ
string_val)r   r   Zstrider   r   r   r9      s    

r9   c                 C   s2   |  drtj| j_|  ds,| jtj | fS )Nr   r   )	rI   r   rL   r   r!   r   r   r>   ZNULL_TENSORrJ   r   r   r   r?      s
    


r?   c                 C   s   |  drtj| j_| fS rH   rK   rJ   r   r   r   rA      s    

rA   c                 C   s   |  drtj| j_| fS rH   rK   rJ   r   r   r   rC      s    

rC   c                 C   s   |  drtj| j_| fS rH   rK   rJ   r   r   r   rE      s    

rE   c                 C   s4   |  drtj| j_| jjj}|s.|jdd | fS )Nr   rM   )rQ   )	rI   r   r    r   r!   r   rN   rO   r   )r   shaper   r   r   rF      s    


rF   N)*__doc__Ztensorboard.compat.protor   r   Ztensorboard.plugins.audior   r8   Z!tensorboard.plugins.custom_scalarrD   Ztensorboard.plugins.graphr   Ztensorboard.plugins.histogramr4   Ztensorboard.plugins.hparamsr>   Ztensorboard.plugins.imager6   Ztensorboard.plugins.meshrB   Ztensorboard.plugins.pr_curver@   Ztensorboard.plugins.scalarr:   Ztensorboard.plugins.textr<   Ztensorboard.utilr   r   r
   r   r   r$   r;   r5   r7   r=   r9   r?   rA   rC   rE   rF   r   r   r   r   <module>   s8   
*