o
    niN                     @   s   d dl Z d dlmZmZmZmZ d dlmZ er*d dl	m
Z
 d dlmZ d dlmZ ddd	eeef fd
dZdddZddded	dfddZddded	dfddZded d	eeef fddZddd	eeef fddZdS )     N)TYPE_CHECKINGAnyDictUnion)wandb_internal_pb2)RepeatedCompositeFieldContainer)Message)wandb_telemetry_pb2obj_listr   returnc                 C   sz   i }| D ]6}|}t |jdkrt|j}n|jg}|d d D ]}||vr)i ||< || }q|d }t|j||< q|S )Nr   )len
nested_keylistkeyjsonloads
value_json)r
   resultitemcurrent_levelkeysr   	final_key r   V/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/lib/proto_util.pydict_from_proto_list   s   
r   record	pb.Record	pb.Resultc                 C   s   t j| j| jd}|S )N)uuidcontrol)pbResultr   r    )r   r   r   r   r   _result_from_record'   s   r#   
record_numc                 C   s
   || _ d S N)num)r   r$   r   r   r   _assign_record_num,   s   
r'   
end_offsetc                 C   s   || j _d S r%   )r    r(   )r   r(   r   r   r   _assign_end_offset0   s   r)   pb_obj)ztpb.TelemetryRecordzpb.MetricRecordc                 C   s   t  }|  }|D ]o\}}|jdrq	|j|jkr |||j< q	|j|jkr,|||j< q	|j|jkr8|||j< q	|j|j	krx| }t
dd |D }|r\dd |D }|r[|||j< q	i }|D ]\}	}
|
rl|	j|	jkrmq`|
||	j< q`|||j< q	|S )N_c                 s   s     | ]\}}|j |jkV  qd S r%   )type	TYPE_BOOL).0dr+   r   r   r   	<genexpr>D   s    z'proto_encode_to_dict.<locals>.<genexpr>c                 S   s   g | ]	\}}|r|j qS r   )number)r.   r/   vr   r   r   
<listcomp>F   s    z(proto_encode_to_dict.<locals>.<listcomp>)dict
ListFieldsname
startswithr,   TYPE_STRINGr1   
TYPE_INT32	TYPE_ENUMTYPE_MESSAGEall)r*   datafieldsdescvaluenestedbool_msgitemsmdr/   r2   r   r   r   proto_encode_to_dict4   s6   

rE   messager   c                 C   s   ddl m} || ddS )z-Convert a protobuf message into a dictionary.r   )MessageToDictT)preserving_proto_field_name)google.protobuf.json_formatrG   )rF   rG   r   r   r   message_to_dictT   s   rJ   )r   r   r   r   )r   typingr   r   r   r   wandb.protor   r!   #google.protobuf.internal.containersr   google.protobuf.messager   r	   tpbstrr   r#   intr'   r)   rE   rJ   r   r   r   r   <module>   s*   


 
