U
    Vc                     @   s   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d	lmZ dd
lmZ ddlmZ dZdd ZG dd dejZdddZdddZdd ZdS )z/Experiment Data Access API for tensorboard.dev.    N)base_experiment)utils)auth)util)server_info)export_service_pb2)export_service_pb2_grpc)server_info_pb2)	grpc_utilzhttps://tensorboard.devc                  C   s.   zddl } W n tk
r(   tdY nX | S )zCImport pandas, guarded by a user-friendly error message on failure.r   NzThe get_scalars() feature requires the pandas package, which does not seem to be available in your Python environment. You can install it with command:

  pip install pandas
)pandasImportError)r    r   U/tmp/pip-unpacked-wheel-g8kmtpbc/tensorboard/data/experimental/experiment_from_dev.pyimport_pandas%   s    
r   c                       s,   e Zd ZdZd fdd	Zd	ddZ  ZS )
ExperimentFromDevzBImplementation of BaseExperiment, specialized for tensorboard.dev.Nc                    s$   t t|   || _t|d| _dS )a  Constructor of ExperimentFromDev.

        Args:
          experiment_id: String ID of the experiment on tensorboard.dev (e.g.,
            "AdYd1TgeTlaLWXx6I8JUbA").
          api_endpoint: Optional override value for API endpoint. Used for
            development only.
        api_endpointN)superr   __init___experiment_idget_api_client_api_client)selfexperiment_idr   	__class__r   r   r   6   s    	zExperimentFromDev.__init__Fc                 C   s$  t  }|d k	rtd|d k	r&tdt }| j|_t }t|j	| | j
j|t d}g }	g }
g }g }g }|D ]p}t|jj}|	|jg|  |
|jg|  |t|jj |dd |jjD  |t|jj qx|	|
||d}|r||d< ||}|r t|}|S )Nz=runs_filter support for get_scalars() is not implemented yet.z=tags_filter support for get_scalars() is not implemented yet.)metadatac                 S   s   g | ]}|  d  qS )g    eA)ZToNanoseconds).0tr   r   r   
<listcomp>m   s     z1ExperimentFromDev.get_scalars.<locals>.<listcomp>)runtagstepvalueZ	wall_time)r   NotImplementedErrorr   ZStreamExperimentDataRequestr   r   timer   Zset_timestampZread_timestampr   ZStreamExperimentDatar
   Zversion_metadatalenZpointsvaluesextendZrun_nameZtag_nameliststeps
wall_timesZ	DataFrameexperimental_utilsZpivot_dataframe)r   Zruns_filterZtags_filterZpivotZinclude_wall_timer   requestZ	read_timestreamrunstagsr*   r+   r'   responseZ
num_valuesdataZ	dataframer   r   r   get_scalarsC   sT    
 

zExperimentFromDev.get_scalars)N)NNFF)__name__
__module____qualname____doc__r   r3   __classcell__r   r   r   r   r   3   s       r   c                 C   sV   t | d}t| t }t  }|r<t|t|}t	|j
j|}t|S )Nr   )_get_server_info_handle_server_infogrpcZssl_channel_credentialsr   ZCredentialsStoreZread_credentialsZcomposite_channel_credentialsZid_token_call_credentialsZsecure_channelZ
api_serverZendpointr   ZTensorBoardExporterServiceStub)r   r   Zchannel_credscredentialsZchannelr   r   r   r      s    
  r   c                 C   s$   dg}| rt t| |S t t|S )NZscalars)server_info_libZcreate_server_infoDEFAULT_ORIGINZfetch_server_info)r   Zpluginsr   r   r   r9      s      r9   c                 C   sN   | j }|jtjkr0tjd|j  tj  n|jtj	krJt
d|j d S )NzWarning [from server]: %s
zError [from server]: %s)ZcompatibilityZverdictr	   ZVERDICT_WARNsysstderrwritedetailsflushZVERDICT_ERROR
ValueError)infocompatr   r   r   r:      s    r:   )N)N)r7   r?   r%   r;   Ztensorboard.data.experimentalr   r   r,   Ztensorboard.uploaderr   r   r   r=   Ztensorboard.uploader.protor   r   r	   Ztensorboard.utilr
   r>   r   ZBaseExperimentr   r   r9   r:   r   r   r   r   <module>   s$   L

