tensorboard_proto/
api.rs

1// This file is generated by rust-protobuf 2.27.1. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `src/api.proto`
21
22/// Generated files are compatible only with the same version
23/// of protobuf runtime.
24// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_27_1;
25
26#[derive(PartialEq,Clone,Default)]
27pub struct Experiment {
28    // message fields
29    pub name: ::std::string::String,
30    pub description: ::std::string::String,
31    pub user: ::std::string::String,
32    pub time_created_secs: f64,
33    pub hparam_infos: ::protobuf::RepeatedField<HParamInfo>,
34    pub metric_infos: ::protobuf::RepeatedField<MetricInfo>,
35    // special fields
36    pub unknown_fields: ::protobuf::UnknownFields,
37    pub cached_size: ::protobuf::CachedSize,
38}
39
40impl<'a> ::std::default::Default for &'a Experiment {
41    fn default() -> &'a Experiment {
42        <Experiment as ::protobuf::Message>::default_instance()
43    }
44}
45
46impl Experiment {
47    pub fn new() -> Experiment {
48        ::std::default::Default::default()
49    }
50
51    // string name = 6;
52
53
54    pub fn get_name(&self) -> &str {
55        &self.name
56    }
57    pub fn clear_name(&mut self) {
58        self.name.clear();
59    }
60
61    // Param is passed by value, moved
62    pub fn set_name(&mut self, v: ::std::string::String) {
63        self.name = v;
64    }
65
66    // Mutable pointer to the field.
67    // If field is not initialized, it is initialized with default value first.
68    pub fn mut_name(&mut self) -> &mut ::std::string::String {
69        &mut self.name
70    }
71
72    // Take field
73    pub fn take_name(&mut self) -> ::std::string::String {
74        ::std::mem::replace(&mut self.name, ::std::string::String::new())
75    }
76
77    // string description = 1;
78
79
80    pub fn get_description(&self) -> &str {
81        &self.description
82    }
83    pub fn clear_description(&mut self) {
84        self.description.clear();
85    }
86
87    // Param is passed by value, moved
88    pub fn set_description(&mut self, v: ::std::string::String) {
89        self.description = v;
90    }
91
92    // Mutable pointer to the field.
93    // If field is not initialized, it is initialized with default value first.
94    pub fn mut_description(&mut self) -> &mut ::std::string::String {
95        &mut self.description
96    }
97
98    // Take field
99    pub fn take_description(&mut self) -> ::std::string::String {
100        ::std::mem::replace(&mut self.description, ::std::string::String::new())
101    }
102
103    // string user = 2;
104
105
106    pub fn get_user(&self) -> &str {
107        &self.user
108    }
109    pub fn clear_user(&mut self) {
110        self.user.clear();
111    }
112
113    // Param is passed by value, moved
114    pub fn set_user(&mut self, v: ::std::string::String) {
115        self.user = v;
116    }
117
118    // Mutable pointer to the field.
119    // If field is not initialized, it is initialized with default value first.
120    pub fn mut_user(&mut self) -> &mut ::std::string::String {
121        &mut self.user
122    }
123
124    // Take field
125    pub fn take_user(&mut self) -> ::std::string::String {
126        ::std::mem::replace(&mut self.user, ::std::string::String::new())
127    }
128
129    // double time_created_secs = 3;
130
131
132    pub fn get_time_created_secs(&self) -> f64 {
133        self.time_created_secs
134    }
135    pub fn clear_time_created_secs(&mut self) {
136        self.time_created_secs = 0.;
137    }
138
139    // Param is passed by value, moved
140    pub fn set_time_created_secs(&mut self, v: f64) {
141        self.time_created_secs = v;
142    }
143
144    // repeated .tensorboardrs.hparam.HParamInfo hparam_infos = 4;
145
146
147    pub fn get_hparam_infos(&self) -> &[HParamInfo] {
148        &self.hparam_infos
149    }
150    pub fn clear_hparam_infos(&mut self) {
151        self.hparam_infos.clear();
152    }
153
154    // Param is passed by value, moved
155    pub fn set_hparam_infos(&mut self, v: ::protobuf::RepeatedField<HParamInfo>) {
156        self.hparam_infos = v;
157    }
158
159    // Mutable pointer to the field.
160    pub fn mut_hparam_infos(&mut self) -> &mut ::protobuf::RepeatedField<HParamInfo> {
161        &mut self.hparam_infos
162    }
163
164    // Take field
165    pub fn take_hparam_infos(&mut self) -> ::protobuf::RepeatedField<HParamInfo> {
166        ::std::mem::replace(&mut self.hparam_infos, ::protobuf::RepeatedField::new())
167    }
168
169    // repeated .tensorboardrs.hparam.MetricInfo metric_infos = 5;
170
171
172    pub fn get_metric_infos(&self) -> &[MetricInfo] {
173        &self.metric_infos
174    }
175    pub fn clear_metric_infos(&mut self) {
176        self.metric_infos.clear();
177    }
178
179    // Param is passed by value, moved
180    pub fn set_metric_infos(&mut self, v: ::protobuf::RepeatedField<MetricInfo>) {
181        self.metric_infos = v;
182    }
183
184    // Mutable pointer to the field.
185    pub fn mut_metric_infos(&mut self) -> &mut ::protobuf::RepeatedField<MetricInfo> {
186        &mut self.metric_infos
187    }
188
189    // Take field
190    pub fn take_metric_infos(&mut self) -> ::protobuf::RepeatedField<MetricInfo> {
191        ::std::mem::replace(&mut self.metric_infos, ::protobuf::RepeatedField::new())
192    }
193}
194
195impl ::protobuf::Message for Experiment {
196    fn is_initialized(&self) -> bool {
197        for v in &self.hparam_infos {
198            if !v.is_initialized() {
199                return false;
200            }
201        };
202        for v in &self.metric_infos {
203            if !v.is_initialized() {
204                return false;
205            }
206        };
207        true
208    }
209
210    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
211        while !is.eof()? {
212            let (field_number, wire_type) = is.read_tag_unpack()?;
213            match field_number {
214                6 => {
215                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
216                },
217                1 => {
218                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
219                },
220                2 => {
221                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.user)?;
222                },
223                3 => {
224                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
225                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
226                    }
227                    let tmp = is.read_double()?;
228                    self.time_created_secs = tmp;
229                },
230                4 => {
231                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.hparam_infos)?;
232                },
233                5 => {
234                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metric_infos)?;
235                },
236                _ => {
237                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
238                },
239            };
240        }
241        ::std::result::Result::Ok(())
242    }
243
244    // Compute sizes of nested messages
245    #[allow(unused_variables)]
246    fn compute_size(&self) -> u32 {
247        let mut my_size = 0;
248        if !self.name.is_empty() {
249            my_size += ::protobuf::rt::string_size(6, &self.name);
250        }
251        if !self.description.is_empty() {
252            my_size += ::protobuf::rt::string_size(1, &self.description);
253        }
254        if !self.user.is_empty() {
255            my_size += ::protobuf::rt::string_size(2, &self.user);
256        }
257        if self.time_created_secs != 0. {
258            my_size += 9;
259        }
260        for value in &self.hparam_infos {
261            let len = value.compute_size();
262            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
263        };
264        for value in &self.metric_infos {
265            let len = value.compute_size();
266            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
267        };
268        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
269        self.cached_size.set(my_size);
270        my_size
271    }
272
273    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
274        if !self.name.is_empty() {
275            os.write_string(6, &self.name)?;
276        }
277        if !self.description.is_empty() {
278            os.write_string(1, &self.description)?;
279        }
280        if !self.user.is_empty() {
281            os.write_string(2, &self.user)?;
282        }
283        if self.time_created_secs != 0. {
284            os.write_double(3, self.time_created_secs)?;
285        }
286        for v in &self.hparam_infos {
287            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
288            os.write_raw_varint32(v.get_cached_size())?;
289            v.write_to_with_cached_sizes(os)?;
290        };
291        for v in &self.metric_infos {
292            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
293            os.write_raw_varint32(v.get_cached_size())?;
294            v.write_to_with_cached_sizes(os)?;
295        };
296        os.write_unknown_fields(self.get_unknown_fields())?;
297        ::std::result::Result::Ok(())
298    }
299
300    fn get_cached_size(&self) -> u32 {
301        self.cached_size.get()
302    }
303
304    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
305        &self.unknown_fields
306    }
307
308    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
309        &mut self.unknown_fields
310    }
311
312    fn as_any(&self) -> &dyn (::std::any::Any) {
313        self as &dyn (::std::any::Any)
314    }
315    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
316        self as &mut dyn (::std::any::Any)
317    }
318    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
319        self
320    }
321
322    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
323        Self::descriptor_static()
324    }
325
326    fn new() -> Experiment {
327        Experiment::new()
328    }
329
330    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
331        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
332        descriptor.get(|| {
333            let mut fields = ::std::vec::Vec::new();
334            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
335                "name",
336                |m: &Experiment| { &m.name },
337                |m: &mut Experiment| { &mut m.name },
338            ));
339            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
340                "description",
341                |m: &Experiment| { &m.description },
342                |m: &mut Experiment| { &mut m.description },
343            ));
344            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
345                "user",
346                |m: &Experiment| { &m.user },
347                |m: &mut Experiment| { &mut m.user },
348            ));
349            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
350                "time_created_secs",
351                |m: &Experiment| { &m.time_created_secs },
352                |m: &mut Experiment| { &mut m.time_created_secs },
353            ));
354            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<HParamInfo>>(
355                "hparam_infos",
356                |m: &Experiment| { &m.hparam_infos },
357                |m: &mut Experiment| { &mut m.hparam_infos },
358            ));
359            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricInfo>>(
360                "metric_infos",
361                |m: &Experiment| { &m.metric_infos },
362                |m: &mut Experiment| { &mut m.metric_infos },
363            ));
364            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Experiment>(
365                "Experiment",
366                fields,
367                file_descriptor_proto()
368            )
369        })
370    }
371
372    fn default_instance() -> &'static Experiment {
373        static instance: ::protobuf::rt::LazyV2<Experiment> = ::protobuf::rt::LazyV2::INIT;
374        instance.get(Experiment::new)
375    }
376}
377
378impl ::protobuf::Clear for Experiment {
379    fn clear(&mut self) {
380        self.name.clear();
381        self.description.clear();
382        self.user.clear();
383        self.time_created_secs = 0.;
384        self.hparam_infos.clear();
385        self.metric_infos.clear();
386        self.unknown_fields.clear();
387    }
388}
389
390impl ::std::fmt::Debug for Experiment {
391    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
392        ::protobuf::text_format::fmt(self, f)
393    }
394}
395
396impl ::protobuf::reflect::ProtobufValue for Experiment {
397    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
398        ::protobuf::reflect::ReflectValueRef::Message(self)
399    }
400}
401
402#[derive(PartialEq,Clone,Default)]
403pub struct HParamInfo {
404    // message fields
405    pub name: ::std::string::String,
406    pub display_name: ::std::string::String,
407    pub description: ::std::string::String,
408    pub field_type: DataType,
409    // message oneof groups
410    pub domain: ::std::option::Option<HParamInfo_oneof_domain>,
411    // special fields
412    pub unknown_fields: ::protobuf::UnknownFields,
413    pub cached_size: ::protobuf::CachedSize,
414}
415
416impl<'a> ::std::default::Default for &'a HParamInfo {
417    fn default() -> &'a HParamInfo {
418        <HParamInfo as ::protobuf::Message>::default_instance()
419    }
420}
421
422#[derive(Clone,PartialEq,Debug)]
423pub enum HParamInfo_oneof_domain {
424    domain_discrete(::protobuf::well_known_types::ListValue),
425    domain_interval(Interval),
426}
427
428impl HParamInfo {
429    pub fn new() -> HParamInfo {
430        ::std::default::Default::default()
431    }
432
433    // string name = 1;
434
435
436    pub fn get_name(&self) -> &str {
437        &self.name
438    }
439    pub fn clear_name(&mut self) {
440        self.name.clear();
441    }
442
443    // Param is passed by value, moved
444    pub fn set_name(&mut self, v: ::std::string::String) {
445        self.name = v;
446    }
447
448    // Mutable pointer to the field.
449    // If field is not initialized, it is initialized with default value first.
450    pub fn mut_name(&mut self) -> &mut ::std::string::String {
451        &mut self.name
452    }
453
454    // Take field
455    pub fn take_name(&mut self) -> ::std::string::String {
456        ::std::mem::replace(&mut self.name, ::std::string::String::new())
457    }
458
459    // string display_name = 2;
460
461
462    pub fn get_display_name(&self) -> &str {
463        &self.display_name
464    }
465    pub fn clear_display_name(&mut self) {
466        self.display_name.clear();
467    }
468
469    // Param is passed by value, moved
470    pub fn set_display_name(&mut self, v: ::std::string::String) {
471        self.display_name = v;
472    }
473
474    // Mutable pointer to the field.
475    // If field is not initialized, it is initialized with default value first.
476    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
477        &mut self.display_name
478    }
479
480    // Take field
481    pub fn take_display_name(&mut self) -> ::std::string::String {
482        ::std::mem::replace(&mut self.display_name, ::std::string::String::new())
483    }
484
485    // string description = 3;
486
487
488    pub fn get_description(&self) -> &str {
489        &self.description
490    }
491    pub fn clear_description(&mut self) {
492        self.description.clear();
493    }
494
495    // Param is passed by value, moved
496    pub fn set_description(&mut self, v: ::std::string::String) {
497        self.description = v;
498    }
499
500    // Mutable pointer to the field.
501    // If field is not initialized, it is initialized with default value first.
502    pub fn mut_description(&mut self) -> &mut ::std::string::String {
503        &mut self.description
504    }
505
506    // Take field
507    pub fn take_description(&mut self) -> ::std::string::String {
508        ::std::mem::replace(&mut self.description, ::std::string::String::new())
509    }
510
511    // .tensorboardrs.hparam.DataType type = 4;
512
513
514    pub fn get_field_type(&self) -> DataType {
515        self.field_type
516    }
517    pub fn clear_field_type(&mut self) {
518        self.field_type = DataType::DATA_TYPE_UNSET;
519    }
520
521    // Param is passed by value, moved
522    pub fn set_field_type(&mut self, v: DataType) {
523        self.field_type = v;
524    }
525
526    // .google.protobuf.ListValue domain_discrete = 5;
527
528
529    pub fn get_domain_discrete(&self) -> &::protobuf::well_known_types::ListValue {
530        match self.domain {
531            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(ref v)) => v,
532            _ => <::protobuf::well_known_types::ListValue as ::protobuf::Message>::default_instance(),
533        }
534    }
535    pub fn clear_domain_discrete(&mut self) {
536        self.domain = ::std::option::Option::None;
537    }
538
539    pub fn has_domain_discrete(&self) -> bool {
540        match self.domain {
541            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(..)) => true,
542            _ => false,
543        }
544    }
545
546    // Param is passed by value, moved
547    pub fn set_domain_discrete(&mut self, v: ::protobuf::well_known_types::ListValue) {
548        self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(v))
549    }
550
551    // Mutable pointer to the field.
552    pub fn mut_domain_discrete(&mut self) -> &mut ::protobuf::well_known_types::ListValue {
553        if let ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(_)) = self.domain {
554        } else {
555            self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(::protobuf::well_known_types::ListValue::new()));
556        }
557        match self.domain {
558            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(ref mut v)) => v,
559            _ => panic!(),
560        }
561    }
562
563    // Take field
564    pub fn take_domain_discrete(&mut self) -> ::protobuf::well_known_types::ListValue {
565        if self.has_domain_discrete() {
566            match self.domain.take() {
567                ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(v)) => v,
568                _ => panic!(),
569            }
570        } else {
571            ::protobuf::well_known_types::ListValue::new()
572        }
573    }
574
575    // .tensorboardrs.hparam.Interval domain_interval = 6;
576
577
578    pub fn get_domain_interval(&self) -> &Interval {
579        match self.domain {
580            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(ref v)) => v,
581            _ => <Interval as ::protobuf::Message>::default_instance(),
582        }
583    }
584    pub fn clear_domain_interval(&mut self) {
585        self.domain = ::std::option::Option::None;
586    }
587
588    pub fn has_domain_interval(&self) -> bool {
589        match self.domain {
590            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(..)) => true,
591            _ => false,
592        }
593    }
594
595    // Param is passed by value, moved
596    pub fn set_domain_interval(&mut self, v: Interval) {
597        self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(v))
598    }
599
600    // Mutable pointer to the field.
601    pub fn mut_domain_interval(&mut self) -> &mut Interval {
602        if let ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(_)) = self.domain {
603        } else {
604            self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(Interval::new()));
605        }
606        match self.domain {
607            ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(ref mut v)) => v,
608            _ => panic!(),
609        }
610    }
611
612    // Take field
613    pub fn take_domain_interval(&mut self) -> Interval {
614        if self.has_domain_interval() {
615            match self.domain.take() {
616                ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(v)) => v,
617                _ => panic!(),
618            }
619        } else {
620            Interval::new()
621        }
622    }
623}
624
625impl ::protobuf::Message for HParamInfo {
626    fn is_initialized(&self) -> bool {
627        if let Some(HParamInfo_oneof_domain::domain_discrete(ref v)) = self.domain {
628            if !v.is_initialized() {
629                return false;
630            }
631        }
632        if let Some(HParamInfo_oneof_domain::domain_interval(ref v)) = self.domain {
633            if !v.is_initialized() {
634                return false;
635            }
636        }
637        true
638    }
639
640    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
641        while !is.eof()? {
642            let (field_number, wire_type) = is.read_tag_unpack()?;
643            match field_number {
644                1 => {
645                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
646                },
647                2 => {
648                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.display_name)?;
649                },
650                3 => {
651                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
652                },
653                4 => {
654                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.field_type, 4, &mut self.unknown_fields)?
655                },
656                5 => {
657                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
658                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
659                    }
660                    self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_discrete(is.read_message()?));
661                },
662                6 => {
663                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
664                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
665                    }
666                    self.domain = ::std::option::Option::Some(HParamInfo_oneof_domain::domain_interval(is.read_message()?));
667                },
668                _ => {
669                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
670                },
671            };
672        }
673        ::std::result::Result::Ok(())
674    }
675
676    // Compute sizes of nested messages
677    #[allow(unused_variables)]
678    fn compute_size(&self) -> u32 {
679        let mut my_size = 0;
680        if !self.name.is_empty() {
681            my_size += ::protobuf::rt::string_size(1, &self.name);
682        }
683        if !self.display_name.is_empty() {
684            my_size += ::protobuf::rt::string_size(2, &self.display_name);
685        }
686        if !self.description.is_empty() {
687            my_size += ::protobuf::rt::string_size(3, &self.description);
688        }
689        if self.field_type != DataType::DATA_TYPE_UNSET {
690            my_size += ::protobuf::rt::enum_size(4, self.field_type);
691        }
692        if let ::std::option::Option::Some(ref v) = self.domain {
693            match v {
694                &HParamInfo_oneof_domain::domain_discrete(ref v) => {
695                    let len = v.compute_size();
696                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
697                },
698                &HParamInfo_oneof_domain::domain_interval(ref v) => {
699                    let len = v.compute_size();
700                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
701                },
702            };
703        }
704        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
705        self.cached_size.set(my_size);
706        my_size
707    }
708
709    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
710        if !self.name.is_empty() {
711            os.write_string(1, &self.name)?;
712        }
713        if !self.display_name.is_empty() {
714            os.write_string(2, &self.display_name)?;
715        }
716        if !self.description.is_empty() {
717            os.write_string(3, &self.description)?;
718        }
719        if self.field_type != DataType::DATA_TYPE_UNSET {
720            os.write_enum(4, ::protobuf::ProtobufEnum::value(&self.field_type))?;
721        }
722        if let ::std::option::Option::Some(ref v) = self.domain {
723            match v {
724                &HParamInfo_oneof_domain::domain_discrete(ref v) => {
725                    os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
726                    os.write_raw_varint32(v.get_cached_size())?;
727                    v.write_to_with_cached_sizes(os)?;
728                },
729                &HParamInfo_oneof_domain::domain_interval(ref v) => {
730                    os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
731                    os.write_raw_varint32(v.get_cached_size())?;
732                    v.write_to_with_cached_sizes(os)?;
733                },
734            };
735        }
736        os.write_unknown_fields(self.get_unknown_fields())?;
737        ::std::result::Result::Ok(())
738    }
739
740    fn get_cached_size(&self) -> u32 {
741        self.cached_size.get()
742    }
743
744    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
745        &self.unknown_fields
746    }
747
748    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
749        &mut self.unknown_fields
750    }
751
752    fn as_any(&self) -> &dyn (::std::any::Any) {
753        self as &dyn (::std::any::Any)
754    }
755    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
756        self as &mut dyn (::std::any::Any)
757    }
758    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
759        self
760    }
761
762    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
763        Self::descriptor_static()
764    }
765
766    fn new() -> HParamInfo {
767        HParamInfo::new()
768    }
769
770    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
771        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
772        descriptor.get(|| {
773            let mut fields = ::std::vec::Vec::new();
774            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
775                "name",
776                |m: &HParamInfo| { &m.name },
777                |m: &mut HParamInfo| { &mut m.name },
778            ));
779            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
780                "display_name",
781                |m: &HParamInfo| { &m.display_name },
782                |m: &mut HParamInfo| { &mut m.display_name },
783            ));
784            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
785                "description",
786                |m: &HParamInfo| { &m.description },
787                |m: &mut HParamInfo| { &mut m.description },
788            ));
789            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<DataType>>(
790                "type",
791                |m: &HParamInfo| { &m.field_type },
792                |m: &mut HParamInfo| { &mut m.field_type },
793            ));
794            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, ::protobuf::well_known_types::ListValue>(
795                "domain_discrete",
796                HParamInfo::has_domain_discrete,
797                HParamInfo::get_domain_discrete,
798            ));
799            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Interval>(
800                "domain_interval",
801                HParamInfo::has_domain_interval,
802                HParamInfo::get_domain_interval,
803            ));
804            ::protobuf::reflect::MessageDescriptor::new_pb_name::<HParamInfo>(
805                "HParamInfo",
806                fields,
807                file_descriptor_proto()
808            )
809        })
810    }
811
812    fn default_instance() -> &'static HParamInfo {
813        static instance: ::protobuf::rt::LazyV2<HParamInfo> = ::protobuf::rt::LazyV2::INIT;
814        instance.get(HParamInfo::new)
815    }
816}
817
818impl ::protobuf::Clear for HParamInfo {
819    fn clear(&mut self) {
820        self.name.clear();
821        self.display_name.clear();
822        self.description.clear();
823        self.field_type = DataType::DATA_TYPE_UNSET;
824        self.domain = ::std::option::Option::None;
825        self.domain = ::std::option::Option::None;
826        self.unknown_fields.clear();
827    }
828}
829
830impl ::std::fmt::Debug for HParamInfo {
831    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
832        ::protobuf::text_format::fmt(self, f)
833    }
834}
835
836impl ::protobuf::reflect::ProtobufValue for HParamInfo {
837    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
838        ::protobuf::reflect::ReflectValueRef::Message(self)
839    }
840}
841
842#[derive(PartialEq,Clone,Default)]
843pub struct Interval {
844    // message fields
845    pub min_value: f64,
846    pub max_value: f64,
847    // special fields
848    pub unknown_fields: ::protobuf::UnknownFields,
849    pub cached_size: ::protobuf::CachedSize,
850}
851
852impl<'a> ::std::default::Default for &'a Interval {
853    fn default() -> &'a Interval {
854        <Interval as ::protobuf::Message>::default_instance()
855    }
856}
857
858impl Interval {
859    pub fn new() -> Interval {
860        ::std::default::Default::default()
861    }
862
863    // double min_value = 1;
864
865
866    pub fn get_min_value(&self) -> f64 {
867        self.min_value
868    }
869    pub fn clear_min_value(&mut self) {
870        self.min_value = 0.;
871    }
872
873    // Param is passed by value, moved
874    pub fn set_min_value(&mut self, v: f64) {
875        self.min_value = v;
876    }
877
878    // double max_value = 2;
879
880
881    pub fn get_max_value(&self) -> f64 {
882        self.max_value
883    }
884    pub fn clear_max_value(&mut self) {
885        self.max_value = 0.;
886    }
887
888    // Param is passed by value, moved
889    pub fn set_max_value(&mut self, v: f64) {
890        self.max_value = v;
891    }
892}
893
894impl ::protobuf::Message for Interval {
895    fn is_initialized(&self) -> bool {
896        true
897    }
898
899    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
900        while !is.eof()? {
901            let (field_number, wire_type) = is.read_tag_unpack()?;
902            match field_number {
903                1 => {
904                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
905                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
906                    }
907                    let tmp = is.read_double()?;
908                    self.min_value = tmp;
909                },
910                2 => {
911                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
912                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
913                    }
914                    let tmp = is.read_double()?;
915                    self.max_value = tmp;
916                },
917                _ => {
918                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
919                },
920            };
921        }
922        ::std::result::Result::Ok(())
923    }
924
925    // Compute sizes of nested messages
926    #[allow(unused_variables)]
927    fn compute_size(&self) -> u32 {
928        let mut my_size = 0;
929        if self.min_value != 0. {
930            my_size += 9;
931        }
932        if self.max_value != 0. {
933            my_size += 9;
934        }
935        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
936        self.cached_size.set(my_size);
937        my_size
938    }
939
940    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
941        if self.min_value != 0. {
942            os.write_double(1, self.min_value)?;
943        }
944        if self.max_value != 0. {
945            os.write_double(2, self.max_value)?;
946        }
947        os.write_unknown_fields(self.get_unknown_fields())?;
948        ::std::result::Result::Ok(())
949    }
950
951    fn get_cached_size(&self) -> u32 {
952        self.cached_size.get()
953    }
954
955    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
956        &self.unknown_fields
957    }
958
959    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
960        &mut self.unknown_fields
961    }
962
963    fn as_any(&self) -> &dyn (::std::any::Any) {
964        self as &dyn (::std::any::Any)
965    }
966    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
967        self as &mut dyn (::std::any::Any)
968    }
969    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
970        self
971    }
972
973    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
974        Self::descriptor_static()
975    }
976
977    fn new() -> Interval {
978        Interval::new()
979    }
980
981    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
982        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
983        descriptor.get(|| {
984            let mut fields = ::std::vec::Vec::new();
985            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
986                "min_value",
987                |m: &Interval| { &m.min_value },
988                |m: &mut Interval| { &mut m.min_value },
989            ));
990            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
991                "max_value",
992                |m: &Interval| { &m.max_value },
993                |m: &mut Interval| { &mut m.max_value },
994            ));
995            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Interval>(
996                "Interval",
997                fields,
998                file_descriptor_proto()
999            )
1000        })
1001    }
1002
1003    fn default_instance() -> &'static Interval {
1004        static instance: ::protobuf::rt::LazyV2<Interval> = ::protobuf::rt::LazyV2::INIT;
1005        instance.get(Interval::new)
1006    }
1007}
1008
1009impl ::protobuf::Clear for Interval {
1010    fn clear(&mut self) {
1011        self.min_value = 0.;
1012        self.max_value = 0.;
1013        self.unknown_fields.clear();
1014    }
1015}
1016
1017impl ::std::fmt::Debug for Interval {
1018    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1019        ::protobuf::text_format::fmt(self, f)
1020    }
1021}
1022
1023impl ::protobuf::reflect::ProtobufValue for Interval {
1024    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1025        ::protobuf::reflect::ReflectValueRef::Message(self)
1026    }
1027}
1028
1029#[derive(PartialEq,Clone,Default)]
1030pub struct MetricName {
1031    // message fields
1032    pub group: ::std::string::String,
1033    pub tag: ::std::string::String,
1034    // special fields
1035    pub unknown_fields: ::protobuf::UnknownFields,
1036    pub cached_size: ::protobuf::CachedSize,
1037}
1038
1039impl<'a> ::std::default::Default for &'a MetricName {
1040    fn default() -> &'a MetricName {
1041        <MetricName as ::protobuf::Message>::default_instance()
1042    }
1043}
1044
1045impl MetricName {
1046    pub fn new() -> MetricName {
1047        ::std::default::Default::default()
1048    }
1049
1050    // string group = 1;
1051
1052
1053    pub fn get_group(&self) -> &str {
1054        &self.group
1055    }
1056    pub fn clear_group(&mut self) {
1057        self.group.clear();
1058    }
1059
1060    // Param is passed by value, moved
1061    pub fn set_group(&mut self, v: ::std::string::String) {
1062        self.group = v;
1063    }
1064
1065    // Mutable pointer to the field.
1066    // If field is not initialized, it is initialized with default value first.
1067    pub fn mut_group(&mut self) -> &mut ::std::string::String {
1068        &mut self.group
1069    }
1070
1071    // Take field
1072    pub fn take_group(&mut self) -> ::std::string::String {
1073        ::std::mem::replace(&mut self.group, ::std::string::String::new())
1074    }
1075
1076    // string tag = 2;
1077
1078
1079    pub fn get_tag(&self) -> &str {
1080        &self.tag
1081    }
1082    pub fn clear_tag(&mut self) {
1083        self.tag.clear();
1084    }
1085
1086    // Param is passed by value, moved
1087    pub fn set_tag(&mut self, v: ::std::string::String) {
1088        self.tag = v;
1089    }
1090
1091    // Mutable pointer to the field.
1092    // If field is not initialized, it is initialized with default value first.
1093    pub fn mut_tag(&mut self) -> &mut ::std::string::String {
1094        &mut self.tag
1095    }
1096
1097    // Take field
1098    pub fn take_tag(&mut self) -> ::std::string::String {
1099        ::std::mem::replace(&mut self.tag, ::std::string::String::new())
1100    }
1101}
1102
1103impl ::protobuf::Message for MetricName {
1104    fn is_initialized(&self) -> bool {
1105        true
1106    }
1107
1108    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1109        while !is.eof()? {
1110            let (field_number, wire_type) = is.read_tag_unpack()?;
1111            match field_number {
1112                1 => {
1113                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.group)?;
1114                },
1115                2 => {
1116                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.tag)?;
1117                },
1118                _ => {
1119                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1120                },
1121            };
1122        }
1123        ::std::result::Result::Ok(())
1124    }
1125
1126    // Compute sizes of nested messages
1127    #[allow(unused_variables)]
1128    fn compute_size(&self) -> u32 {
1129        let mut my_size = 0;
1130        if !self.group.is_empty() {
1131            my_size += ::protobuf::rt::string_size(1, &self.group);
1132        }
1133        if !self.tag.is_empty() {
1134            my_size += ::protobuf::rt::string_size(2, &self.tag);
1135        }
1136        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1137        self.cached_size.set(my_size);
1138        my_size
1139    }
1140
1141    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1142        if !self.group.is_empty() {
1143            os.write_string(1, &self.group)?;
1144        }
1145        if !self.tag.is_empty() {
1146            os.write_string(2, &self.tag)?;
1147        }
1148        os.write_unknown_fields(self.get_unknown_fields())?;
1149        ::std::result::Result::Ok(())
1150    }
1151
1152    fn get_cached_size(&self) -> u32 {
1153        self.cached_size.get()
1154    }
1155
1156    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1157        &self.unknown_fields
1158    }
1159
1160    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1161        &mut self.unknown_fields
1162    }
1163
1164    fn as_any(&self) -> &dyn (::std::any::Any) {
1165        self as &dyn (::std::any::Any)
1166    }
1167    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1168        self as &mut dyn (::std::any::Any)
1169    }
1170    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1171        self
1172    }
1173
1174    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1175        Self::descriptor_static()
1176    }
1177
1178    fn new() -> MetricName {
1179        MetricName::new()
1180    }
1181
1182    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1183        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1184        descriptor.get(|| {
1185            let mut fields = ::std::vec::Vec::new();
1186            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1187                "group",
1188                |m: &MetricName| { &m.group },
1189                |m: &mut MetricName| { &mut m.group },
1190            ));
1191            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1192                "tag",
1193                |m: &MetricName| { &m.tag },
1194                |m: &mut MetricName| { &mut m.tag },
1195            ));
1196            ::protobuf::reflect::MessageDescriptor::new_pb_name::<MetricName>(
1197                "MetricName",
1198                fields,
1199                file_descriptor_proto()
1200            )
1201        })
1202    }
1203
1204    fn default_instance() -> &'static MetricName {
1205        static instance: ::protobuf::rt::LazyV2<MetricName> = ::protobuf::rt::LazyV2::INIT;
1206        instance.get(MetricName::new)
1207    }
1208}
1209
1210impl ::protobuf::Clear for MetricName {
1211    fn clear(&mut self) {
1212        self.group.clear();
1213        self.tag.clear();
1214        self.unknown_fields.clear();
1215    }
1216}
1217
1218impl ::std::fmt::Debug for MetricName {
1219    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1220        ::protobuf::text_format::fmt(self, f)
1221    }
1222}
1223
1224impl ::protobuf::reflect::ProtobufValue for MetricName {
1225    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1226        ::protobuf::reflect::ReflectValueRef::Message(self)
1227    }
1228}
1229
1230#[derive(PartialEq,Clone,Default)]
1231pub struct MetricInfo {
1232    // message fields
1233    pub name: ::protobuf::SingularPtrField<MetricName>,
1234    pub display_name: ::std::string::String,
1235    pub description: ::std::string::String,
1236    pub dataset_type: DatasetType,
1237    // special fields
1238    pub unknown_fields: ::protobuf::UnknownFields,
1239    pub cached_size: ::protobuf::CachedSize,
1240}
1241
1242impl<'a> ::std::default::Default for &'a MetricInfo {
1243    fn default() -> &'a MetricInfo {
1244        <MetricInfo as ::protobuf::Message>::default_instance()
1245    }
1246}
1247
1248impl MetricInfo {
1249    pub fn new() -> MetricInfo {
1250        ::std::default::Default::default()
1251    }
1252
1253    // .tensorboardrs.hparam.MetricName name = 1;
1254
1255
1256    pub fn get_name(&self) -> &MetricName {
1257        self.name.as_ref().unwrap_or_else(|| <MetricName as ::protobuf::Message>::default_instance())
1258    }
1259    pub fn clear_name(&mut self) {
1260        self.name.clear();
1261    }
1262
1263    pub fn has_name(&self) -> bool {
1264        self.name.is_some()
1265    }
1266
1267    // Param is passed by value, moved
1268    pub fn set_name(&mut self, v: MetricName) {
1269        self.name = ::protobuf::SingularPtrField::some(v);
1270    }
1271
1272    // Mutable pointer to the field.
1273    // If field is not initialized, it is initialized with default value first.
1274    pub fn mut_name(&mut self) -> &mut MetricName {
1275        if self.name.is_none() {
1276            self.name.set_default();
1277        }
1278        self.name.as_mut().unwrap()
1279    }
1280
1281    // Take field
1282    pub fn take_name(&mut self) -> MetricName {
1283        self.name.take().unwrap_or_else(|| MetricName::new())
1284    }
1285
1286    // string display_name = 3;
1287
1288
1289    pub fn get_display_name(&self) -> &str {
1290        &self.display_name
1291    }
1292    pub fn clear_display_name(&mut self) {
1293        self.display_name.clear();
1294    }
1295
1296    // Param is passed by value, moved
1297    pub fn set_display_name(&mut self, v: ::std::string::String) {
1298        self.display_name = v;
1299    }
1300
1301    // Mutable pointer to the field.
1302    // If field is not initialized, it is initialized with default value first.
1303    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
1304        &mut self.display_name
1305    }
1306
1307    // Take field
1308    pub fn take_display_name(&mut self) -> ::std::string::String {
1309        ::std::mem::replace(&mut self.display_name, ::std::string::String::new())
1310    }
1311
1312    // string description = 4;
1313
1314
1315    pub fn get_description(&self) -> &str {
1316        &self.description
1317    }
1318    pub fn clear_description(&mut self) {
1319        self.description.clear();
1320    }
1321
1322    // Param is passed by value, moved
1323    pub fn set_description(&mut self, v: ::std::string::String) {
1324        self.description = v;
1325    }
1326
1327    // Mutable pointer to the field.
1328    // If field is not initialized, it is initialized with default value first.
1329    pub fn mut_description(&mut self) -> &mut ::std::string::String {
1330        &mut self.description
1331    }
1332
1333    // Take field
1334    pub fn take_description(&mut self) -> ::std::string::String {
1335        ::std::mem::replace(&mut self.description, ::std::string::String::new())
1336    }
1337
1338    // .tensorboardrs.hparam.DatasetType dataset_type = 5;
1339
1340
1341    pub fn get_dataset_type(&self) -> DatasetType {
1342        self.dataset_type
1343    }
1344    pub fn clear_dataset_type(&mut self) {
1345        self.dataset_type = DatasetType::DATASET_UNKNOWN;
1346    }
1347
1348    // Param is passed by value, moved
1349    pub fn set_dataset_type(&mut self, v: DatasetType) {
1350        self.dataset_type = v;
1351    }
1352}
1353
1354impl ::protobuf::Message for MetricInfo {
1355    fn is_initialized(&self) -> bool {
1356        for v in &self.name {
1357            if !v.is_initialized() {
1358                return false;
1359            }
1360        };
1361        true
1362    }
1363
1364    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1365        while !is.eof()? {
1366            let (field_number, wire_type) = is.read_tag_unpack()?;
1367            match field_number {
1368                1 => {
1369                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.name)?;
1370                },
1371                3 => {
1372                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.display_name)?;
1373                },
1374                4 => {
1375                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
1376                },
1377                5 => {
1378                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.dataset_type, 5, &mut self.unknown_fields)?
1379                },
1380                _ => {
1381                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1382                },
1383            };
1384        }
1385        ::std::result::Result::Ok(())
1386    }
1387
1388    // Compute sizes of nested messages
1389    #[allow(unused_variables)]
1390    fn compute_size(&self) -> u32 {
1391        let mut my_size = 0;
1392        if let Some(ref v) = self.name.as_ref() {
1393            let len = v.compute_size();
1394            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1395        }
1396        if !self.display_name.is_empty() {
1397            my_size += ::protobuf::rt::string_size(3, &self.display_name);
1398        }
1399        if !self.description.is_empty() {
1400            my_size += ::protobuf::rt::string_size(4, &self.description);
1401        }
1402        if self.dataset_type != DatasetType::DATASET_UNKNOWN {
1403            my_size += ::protobuf::rt::enum_size(5, self.dataset_type);
1404        }
1405        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1406        self.cached_size.set(my_size);
1407        my_size
1408    }
1409
1410    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1411        if let Some(ref v) = self.name.as_ref() {
1412            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1413            os.write_raw_varint32(v.get_cached_size())?;
1414            v.write_to_with_cached_sizes(os)?;
1415        }
1416        if !self.display_name.is_empty() {
1417            os.write_string(3, &self.display_name)?;
1418        }
1419        if !self.description.is_empty() {
1420            os.write_string(4, &self.description)?;
1421        }
1422        if self.dataset_type != DatasetType::DATASET_UNKNOWN {
1423            os.write_enum(5, ::protobuf::ProtobufEnum::value(&self.dataset_type))?;
1424        }
1425        os.write_unknown_fields(self.get_unknown_fields())?;
1426        ::std::result::Result::Ok(())
1427    }
1428
1429    fn get_cached_size(&self) -> u32 {
1430        self.cached_size.get()
1431    }
1432
1433    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1434        &self.unknown_fields
1435    }
1436
1437    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1438        &mut self.unknown_fields
1439    }
1440
1441    fn as_any(&self) -> &dyn (::std::any::Any) {
1442        self as &dyn (::std::any::Any)
1443    }
1444    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1445        self as &mut dyn (::std::any::Any)
1446    }
1447    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1448        self
1449    }
1450
1451    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1452        Self::descriptor_static()
1453    }
1454
1455    fn new() -> MetricInfo {
1456        MetricInfo::new()
1457    }
1458
1459    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1460        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1461        descriptor.get(|| {
1462            let mut fields = ::std::vec::Vec::new();
1463            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricName>>(
1464                "name",
1465                |m: &MetricInfo| { &m.name },
1466                |m: &mut MetricInfo| { &mut m.name },
1467            ));
1468            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1469                "display_name",
1470                |m: &MetricInfo| { &m.display_name },
1471                |m: &mut MetricInfo| { &mut m.display_name },
1472            ));
1473            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1474                "description",
1475                |m: &MetricInfo| { &m.description },
1476                |m: &mut MetricInfo| { &mut m.description },
1477            ));
1478            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<DatasetType>>(
1479                "dataset_type",
1480                |m: &MetricInfo| { &m.dataset_type },
1481                |m: &mut MetricInfo| { &mut m.dataset_type },
1482            ));
1483            ::protobuf::reflect::MessageDescriptor::new_pb_name::<MetricInfo>(
1484                "MetricInfo",
1485                fields,
1486                file_descriptor_proto()
1487            )
1488        })
1489    }
1490
1491    fn default_instance() -> &'static MetricInfo {
1492        static instance: ::protobuf::rt::LazyV2<MetricInfo> = ::protobuf::rt::LazyV2::INIT;
1493        instance.get(MetricInfo::new)
1494    }
1495}
1496
1497impl ::protobuf::Clear for MetricInfo {
1498    fn clear(&mut self) {
1499        self.name.clear();
1500        self.display_name.clear();
1501        self.description.clear();
1502        self.dataset_type = DatasetType::DATASET_UNKNOWN;
1503        self.unknown_fields.clear();
1504    }
1505}
1506
1507impl ::std::fmt::Debug for MetricInfo {
1508    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1509        ::protobuf::text_format::fmt(self, f)
1510    }
1511}
1512
1513impl ::protobuf::reflect::ProtobufValue for MetricInfo {
1514    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1515        ::protobuf::reflect::ReflectValueRef::Message(self)
1516    }
1517}
1518
1519#[derive(PartialEq,Clone,Default)]
1520pub struct SessionGroup {
1521    // message fields
1522    pub name: ::std::string::String,
1523    pub hparams: ::std::collections::HashMap<::std::string::String, ::protobuf::well_known_types::Value>,
1524    pub metric_values: ::protobuf::RepeatedField<MetricValue>,
1525    pub sessions: ::protobuf::RepeatedField<Session>,
1526    pub monitor_url: ::std::string::String,
1527    // special fields
1528    pub unknown_fields: ::protobuf::UnknownFields,
1529    pub cached_size: ::protobuf::CachedSize,
1530}
1531
1532impl<'a> ::std::default::Default for &'a SessionGroup {
1533    fn default() -> &'a SessionGroup {
1534        <SessionGroup as ::protobuf::Message>::default_instance()
1535    }
1536}
1537
1538impl SessionGroup {
1539    pub fn new() -> SessionGroup {
1540        ::std::default::Default::default()
1541    }
1542
1543    // string name = 1;
1544
1545
1546    pub fn get_name(&self) -> &str {
1547        &self.name
1548    }
1549    pub fn clear_name(&mut self) {
1550        self.name.clear();
1551    }
1552
1553    // Param is passed by value, moved
1554    pub fn set_name(&mut self, v: ::std::string::String) {
1555        self.name = v;
1556    }
1557
1558    // Mutable pointer to the field.
1559    // If field is not initialized, it is initialized with default value first.
1560    pub fn mut_name(&mut self) -> &mut ::std::string::String {
1561        &mut self.name
1562    }
1563
1564    // Take field
1565    pub fn take_name(&mut self) -> ::std::string::String {
1566        ::std::mem::replace(&mut self.name, ::std::string::String::new())
1567    }
1568
1569    // repeated .tensorboardrs.hparam.SessionGroup.HparamsEntry hparams = 2;
1570
1571
1572    pub fn get_hparams(&self) -> &::std::collections::HashMap<::std::string::String, ::protobuf::well_known_types::Value> {
1573        &self.hparams
1574    }
1575    pub fn clear_hparams(&mut self) {
1576        self.hparams.clear();
1577    }
1578
1579    // Param is passed by value, moved
1580    pub fn set_hparams(&mut self, v: ::std::collections::HashMap<::std::string::String, ::protobuf::well_known_types::Value>) {
1581        self.hparams = v;
1582    }
1583
1584    // Mutable pointer to the field.
1585    pub fn mut_hparams(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, ::protobuf::well_known_types::Value> {
1586        &mut self.hparams
1587    }
1588
1589    // Take field
1590    pub fn take_hparams(&mut self) -> ::std::collections::HashMap<::std::string::String, ::protobuf::well_known_types::Value> {
1591        ::std::mem::replace(&mut self.hparams, ::std::collections::HashMap::new())
1592    }
1593
1594    // repeated .tensorboardrs.hparam.MetricValue metric_values = 3;
1595
1596
1597    pub fn get_metric_values(&self) -> &[MetricValue] {
1598        &self.metric_values
1599    }
1600    pub fn clear_metric_values(&mut self) {
1601        self.metric_values.clear();
1602    }
1603
1604    // Param is passed by value, moved
1605    pub fn set_metric_values(&mut self, v: ::protobuf::RepeatedField<MetricValue>) {
1606        self.metric_values = v;
1607    }
1608
1609    // Mutable pointer to the field.
1610    pub fn mut_metric_values(&mut self) -> &mut ::protobuf::RepeatedField<MetricValue> {
1611        &mut self.metric_values
1612    }
1613
1614    // Take field
1615    pub fn take_metric_values(&mut self) -> ::protobuf::RepeatedField<MetricValue> {
1616        ::std::mem::replace(&mut self.metric_values, ::protobuf::RepeatedField::new())
1617    }
1618
1619    // repeated .tensorboardrs.hparam.Session sessions = 4;
1620
1621
1622    pub fn get_sessions(&self) -> &[Session] {
1623        &self.sessions
1624    }
1625    pub fn clear_sessions(&mut self) {
1626        self.sessions.clear();
1627    }
1628
1629    // Param is passed by value, moved
1630    pub fn set_sessions(&mut self, v: ::protobuf::RepeatedField<Session>) {
1631        self.sessions = v;
1632    }
1633
1634    // Mutable pointer to the field.
1635    pub fn mut_sessions(&mut self) -> &mut ::protobuf::RepeatedField<Session> {
1636        &mut self.sessions
1637    }
1638
1639    // Take field
1640    pub fn take_sessions(&mut self) -> ::protobuf::RepeatedField<Session> {
1641        ::std::mem::replace(&mut self.sessions, ::protobuf::RepeatedField::new())
1642    }
1643
1644    // string monitor_url = 5;
1645
1646
1647    pub fn get_monitor_url(&self) -> &str {
1648        &self.monitor_url
1649    }
1650    pub fn clear_monitor_url(&mut self) {
1651        self.monitor_url.clear();
1652    }
1653
1654    // Param is passed by value, moved
1655    pub fn set_monitor_url(&mut self, v: ::std::string::String) {
1656        self.monitor_url = v;
1657    }
1658
1659    // Mutable pointer to the field.
1660    // If field is not initialized, it is initialized with default value first.
1661    pub fn mut_monitor_url(&mut self) -> &mut ::std::string::String {
1662        &mut self.monitor_url
1663    }
1664
1665    // Take field
1666    pub fn take_monitor_url(&mut self) -> ::std::string::String {
1667        ::std::mem::replace(&mut self.monitor_url, ::std::string::String::new())
1668    }
1669}
1670
1671impl ::protobuf::Message for SessionGroup {
1672    fn is_initialized(&self) -> bool {
1673        for v in &self.metric_values {
1674            if !v.is_initialized() {
1675                return false;
1676            }
1677        };
1678        for v in &self.sessions {
1679            if !v.is_initialized() {
1680                return false;
1681            }
1682        };
1683        true
1684    }
1685
1686    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1687        while !is.eof()? {
1688            let (field_number, wire_type) = is.read_tag_unpack()?;
1689            match field_number {
1690                1 => {
1691                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
1692                },
1693                2 => {
1694                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Value>>(wire_type, is, &mut self.hparams)?;
1695                },
1696                3 => {
1697                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metric_values)?;
1698                },
1699                4 => {
1700                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.sessions)?;
1701                },
1702                5 => {
1703                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.monitor_url)?;
1704                },
1705                _ => {
1706                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1707                },
1708            };
1709        }
1710        ::std::result::Result::Ok(())
1711    }
1712
1713    // Compute sizes of nested messages
1714    #[allow(unused_variables)]
1715    fn compute_size(&self) -> u32 {
1716        let mut my_size = 0;
1717        if !self.name.is_empty() {
1718            my_size += ::protobuf::rt::string_size(1, &self.name);
1719        }
1720        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Value>>(2, &self.hparams);
1721        for value in &self.metric_values {
1722            let len = value.compute_size();
1723            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1724        };
1725        for value in &self.sessions {
1726            let len = value.compute_size();
1727            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1728        };
1729        if !self.monitor_url.is_empty() {
1730            my_size += ::protobuf::rt::string_size(5, &self.monitor_url);
1731        }
1732        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1733        self.cached_size.set(my_size);
1734        my_size
1735    }
1736
1737    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1738        if !self.name.is_empty() {
1739            os.write_string(1, &self.name)?;
1740        }
1741        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Value>>(2, &self.hparams, os)?;
1742        for v in &self.metric_values {
1743            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1744            os.write_raw_varint32(v.get_cached_size())?;
1745            v.write_to_with_cached_sizes(os)?;
1746        };
1747        for v in &self.sessions {
1748            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1749            os.write_raw_varint32(v.get_cached_size())?;
1750            v.write_to_with_cached_sizes(os)?;
1751        };
1752        if !self.monitor_url.is_empty() {
1753            os.write_string(5, &self.monitor_url)?;
1754        }
1755        os.write_unknown_fields(self.get_unknown_fields())?;
1756        ::std::result::Result::Ok(())
1757    }
1758
1759    fn get_cached_size(&self) -> u32 {
1760        self.cached_size.get()
1761    }
1762
1763    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1764        &self.unknown_fields
1765    }
1766
1767    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1768        &mut self.unknown_fields
1769    }
1770
1771    fn as_any(&self) -> &dyn (::std::any::Any) {
1772        self as &dyn (::std::any::Any)
1773    }
1774    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1775        self as &mut dyn (::std::any::Any)
1776    }
1777    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1778        self
1779    }
1780
1781    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1782        Self::descriptor_static()
1783    }
1784
1785    fn new() -> SessionGroup {
1786        SessionGroup::new()
1787    }
1788
1789    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1790        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1791        descriptor.get(|| {
1792            let mut fields = ::std::vec::Vec::new();
1793            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1794                "name",
1795                |m: &SessionGroup| { &m.name },
1796                |m: &mut SessionGroup| { &mut m.name },
1797            ));
1798            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Value>>(
1799                "hparams",
1800                |m: &SessionGroup| { &m.hparams },
1801                |m: &mut SessionGroup| { &mut m.hparams },
1802            ));
1803            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricValue>>(
1804                "metric_values",
1805                |m: &SessionGroup| { &m.metric_values },
1806                |m: &mut SessionGroup| { &mut m.metric_values },
1807            ));
1808            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Session>>(
1809                "sessions",
1810                |m: &SessionGroup| { &m.sessions },
1811                |m: &mut SessionGroup| { &mut m.sessions },
1812            ));
1813            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1814                "monitor_url",
1815                |m: &SessionGroup| { &m.monitor_url },
1816                |m: &mut SessionGroup| { &mut m.monitor_url },
1817            ));
1818            ::protobuf::reflect::MessageDescriptor::new_pb_name::<SessionGroup>(
1819                "SessionGroup",
1820                fields,
1821                file_descriptor_proto()
1822            )
1823        })
1824    }
1825
1826    fn default_instance() -> &'static SessionGroup {
1827        static instance: ::protobuf::rt::LazyV2<SessionGroup> = ::protobuf::rt::LazyV2::INIT;
1828        instance.get(SessionGroup::new)
1829    }
1830}
1831
1832impl ::protobuf::Clear for SessionGroup {
1833    fn clear(&mut self) {
1834        self.name.clear();
1835        self.hparams.clear();
1836        self.metric_values.clear();
1837        self.sessions.clear();
1838        self.monitor_url.clear();
1839        self.unknown_fields.clear();
1840    }
1841}
1842
1843impl ::std::fmt::Debug for SessionGroup {
1844    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1845        ::protobuf::text_format::fmt(self, f)
1846    }
1847}
1848
1849impl ::protobuf::reflect::ProtobufValue for SessionGroup {
1850    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1851        ::protobuf::reflect::ReflectValueRef::Message(self)
1852    }
1853}
1854
1855#[derive(PartialEq,Clone,Default)]
1856pub struct MetricValue {
1857    // message fields
1858    pub name: ::protobuf::SingularPtrField<MetricName>,
1859    pub value: f64,
1860    pub training_step: i32,
1861    pub wall_time_secs: f64,
1862    // special fields
1863    pub unknown_fields: ::protobuf::UnknownFields,
1864    pub cached_size: ::protobuf::CachedSize,
1865}
1866
1867impl<'a> ::std::default::Default for &'a MetricValue {
1868    fn default() -> &'a MetricValue {
1869        <MetricValue as ::protobuf::Message>::default_instance()
1870    }
1871}
1872
1873impl MetricValue {
1874    pub fn new() -> MetricValue {
1875        ::std::default::Default::default()
1876    }
1877
1878    // .tensorboardrs.hparam.MetricName name = 1;
1879
1880
1881    pub fn get_name(&self) -> &MetricName {
1882        self.name.as_ref().unwrap_or_else(|| <MetricName as ::protobuf::Message>::default_instance())
1883    }
1884    pub fn clear_name(&mut self) {
1885        self.name.clear();
1886    }
1887
1888    pub fn has_name(&self) -> bool {
1889        self.name.is_some()
1890    }
1891
1892    // Param is passed by value, moved
1893    pub fn set_name(&mut self, v: MetricName) {
1894        self.name = ::protobuf::SingularPtrField::some(v);
1895    }
1896
1897    // Mutable pointer to the field.
1898    // If field is not initialized, it is initialized with default value first.
1899    pub fn mut_name(&mut self) -> &mut MetricName {
1900        if self.name.is_none() {
1901            self.name.set_default();
1902        }
1903        self.name.as_mut().unwrap()
1904    }
1905
1906    // Take field
1907    pub fn take_name(&mut self) -> MetricName {
1908        self.name.take().unwrap_or_else(|| MetricName::new())
1909    }
1910
1911    // double value = 2;
1912
1913
1914    pub fn get_value(&self) -> f64 {
1915        self.value
1916    }
1917    pub fn clear_value(&mut self) {
1918        self.value = 0.;
1919    }
1920
1921    // Param is passed by value, moved
1922    pub fn set_value(&mut self, v: f64) {
1923        self.value = v;
1924    }
1925
1926    // int32 training_step = 3;
1927
1928
1929    pub fn get_training_step(&self) -> i32 {
1930        self.training_step
1931    }
1932    pub fn clear_training_step(&mut self) {
1933        self.training_step = 0;
1934    }
1935
1936    // Param is passed by value, moved
1937    pub fn set_training_step(&mut self, v: i32) {
1938        self.training_step = v;
1939    }
1940
1941    // double wall_time_secs = 4;
1942
1943
1944    pub fn get_wall_time_secs(&self) -> f64 {
1945        self.wall_time_secs
1946    }
1947    pub fn clear_wall_time_secs(&mut self) {
1948        self.wall_time_secs = 0.;
1949    }
1950
1951    // Param is passed by value, moved
1952    pub fn set_wall_time_secs(&mut self, v: f64) {
1953        self.wall_time_secs = v;
1954    }
1955}
1956
1957impl ::protobuf::Message for MetricValue {
1958    fn is_initialized(&self) -> bool {
1959        for v in &self.name {
1960            if !v.is_initialized() {
1961                return false;
1962            }
1963        };
1964        true
1965    }
1966
1967    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1968        while !is.eof()? {
1969            let (field_number, wire_type) = is.read_tag_unpack()?;
1970            match field_number {
1971                1 => {
1972                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.name)?;
1973                },
1974                2 => {
1975                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1976                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1977                    }
1978                    let tmp = is.read_double()?;
1979                    self.value = tmp;
1980                },
1981                3 => {
1982                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1983                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1984                    }
1985                    let tmp = is.read_int32()?;
1986                    self.training_step = tmp;
1987                },
1988                4 => {
1989                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1990                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1991                    }
1992                    let tmp = is.read_double()?;
1993                    self.wall_time_secs = tmp;
1994                },
1995                _ => {
1996                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1997                },
1998            };
1999        }
2000        ::std::result::Result::Ok(())
2001    }
2002
2003    // Compute sizes of nested messages
2004    #[allow(unused_variables)]
2005    fn compute_size(&self) -> u32 {
2006        let mut my_size = 0;
2007        if let Some(ref v) = self.name.as_ref() {
2008            let len = v.compute_size();
2009            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2010        }
2011        if self.value != 0. {
2012            my_size += 9;
2013        }
2014        if self.training_step != 0 {
2015            my_size += ::protobuf::rt::value_size(3, self.training_step, ::protobuf::wire_format::WireTypeVarint);
2016        }
2017        if self.wall_time_secs != 0. {
2018            my_size += 9;
2019        }
2020        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2021        self.cached_size.set(my_size);
2022        my_size
2023    }
2024
2025    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2026        if let Some(ref v) = self.name.as_ref() {
2027            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2028            os.write_raw_varint32(v.get_cached_size())?;
2029            v.write_to_with_cached_sizes(os)?;
2030        }
2031        if self.value != 0. {
2032            os.write_double(2, self.value)?;
2033        }
2034        if self.training_step != 0 {
2035            os.write_int32(3, self.training_step)?;
2036        }
2037        if self.wall_time_secs != 0. {
2038            os.write_double(4, self.wall_time_secs)?;
2039        }
2040        os.write_unknown_fields(self.get_unknown_fields())?;
2041        ::std::result::Result::Ok(())
2042    }
2043
2044    fn get_cached_size(&self) -> u32 {
2045        self.cached_size.get()
2046    }
2047
2048    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2049        &self.unknown_fields
2050    }
2051
2052    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2053        &mut self.unknown_fields
2054    }
2055
2056    fn as_any(&self) -> &dyn (::std::any::Any) {
2057        self as &dyn (::std::any::Any)
2058    }
2059    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2060        self as &mut dyn (::std::any::Any)
2061    }
2062    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2063        self
2064    }
2065
2066    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2067        Self::descriptor_static()
2068    }
2069
2070    fn new() -> MetricValue {
2071        MetricValue::new()
2072    }
2073
2074    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2075        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
2076        descriptor.get(|| {
2077            let mut fields = ::std::vec::Vec::new();
2078            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricName>>(
2079                "name",
2080                |m: &MetricValue| { &m.name },
2081                |m: &mut MetricValue| { &mut m.name },
2082            ));
2083            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
2084                "value",
2085                |m: &MetricValue| { &m.value },
2086                |m: &mut MetricValue| { &mut m.value },
2087            ));
2088            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
2089                "training_step",
2090                |m: &MetricValue| { &m.training_step },
2091                |m: &mut MetricValue| { &mut m.training_step },
2092            ));
2093            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
2094                "wall_time_secs",
2095                |m: &MetricValue| { &m.wall_time_secs },
2096                |m: &mut MetricValue| { &mut m.wall_time_secs },
2097            ));
2098            ::protobuf::reflect::MessageDescriptor::new_pb_name::<MetricValue>(
2099                "MetricValue",
2100                fields,
2101                file_descriptor_proto()
2102            )
2103        })
2104    }
2105
2106    fn default_instance() -> &'static MetricValue {
2107        static instance: ::protobuf::rt::LazyV2<MetricValue> = ::protobuf::rt::LazyV2::INIT;
2108        instance.get(MetricValue::new)
2109    }
2110}
2111
2112impl ::protobuf::Clear for MetricValue {
2113    fn clear(&mut self) {
2114        self.name.clear();
2115        self.value = 0.;
2116        self.training_step = 0;
2117        self.wall_time_secs = 0.;
2118        self.unknown_fields.clear();
2119    }
2120}
2121
2122impl ::std::fmt::Debug for MetricValue {
2123    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2124        ::protobuf::text_format::fmt(self, f)
2125    }
2126}
2127
2128impl ::protobuf::reflect::ProtobufValue for MetricValue {
2129    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2130        ::protobuf::reflect::ReflectValueRef::Message(self)
2131    }
2132}
2133
2134#[derive(PartialEq,Clone,Default)]
2135pub struct Session {
2136    // message fields
2137    pub name: ::std::string::String,
2138    pub start_time_secs: f64,
2139    pub end_time_secs: f64,
2140    pub status: Status,
2141    pub model_uri: ::std::string::String,
2142    pub metric_values: ::protobuf::RepeatedField<MetricValue>,
2143    pub monitor_url: ::std::string::String,
2144    // special fields
2145    pub unknown_fields: ::protobuf::UnknownFields,
2146    pub cached_size: ::protobuf::CachedSize,
2147}
2148
2149impl<'a> ::std::default::Default for &'a Session {
2150    fn default() -> &'a Session {
2151        <Session as ::protobuf::Message>::default_instance()
2152    }
2153}
2154
2155impl Session {
2156    pub fn new() -> Session {
2157        ::std::default::Default::default()
2158    }
2159
2160    // string name = 1;
2161
2162
2163    pub fn get_name(&self) -> &str {
2164        &self.name
2165    }
2166    pub fn clear_name(&mut self) {
2167        self.name.clear();
2168    }
2169
2170    // Param is passed by value, moved
2171    pub fn set_name(&mut self, v: ::std::string::String) {
2172        self.name = v;
2173    }
2174
2175    // Mutable pointer to the field.
2176    // If field is not initialized, it is initialized with default value first.
2177    pub fn mut_name(&mut self) -> &mut ::std::string::String {
2178        &mut self.name
2179    }
2180
2181    // Take field
2182    pub fn take_name(&mut self) -> ::std::string::String {
2183        ::std::mem::replace(&mut self.name, ::std::string::String::new())
2184    }
2185
2186    // double start_time_secs = 2;
2187
2188
2189    pub fn get_start_time_secs(&self) -> f64 {
2190        self.start_time_secs
2191    }
2192    pub fn clear_start_time_secs(&mut self) {
2193        self.start_time_secs = 0.;
2194    }
2195
2196    // Param is passed by value, moved
2197    pub fn set_start_time_secs(&mut self, v: f64) {
2198        self.start_time_secs = v;
2199    }
2200
2201    // double end_time_secs = 3;
2202
2203
2204    pub fn get_end_time_secs(&self) -> f64 {
2205        self.end_time_secs
2206    }
2207    pub fn clear_end_time_secs(&mut self) {
2208        self.end_time_secs = 0.;
2209    }
2210
2211    // Param is passed by value, moved
2212    pub fn set_end_time_secs(&mut self, v: f64) {
2213        self.end_time_secs = v;
2214    }
2215
2216    // .tensorboardrs.hparam.Status status = 4;
2217
2218
2219    pub fn get_status(&self) -> Status {
2220        self.status
2221    }
2222    pub fn clear_status(&mut self) {
2223        self.status = Status::STATUS_UNKNOWN;
2224    }
2225
2226    // Param is passed by value, moved
2227    pub fn set_status(&mut self, v: Status) {
2228        self.status = v;
2229    }
2230
2231    // string model_uri = 5;
2232
2233
2234    pub fn get_model_uri(&self) -> &str {
2235        &self.model_uri
2236    }
2237    pub fn clear_model_uri(&mut self) {
2238        self.model_uri.clear();
2239    }
2240
2241    // Param is passed by value, moved
2242    pub fn set_model_uri(&mut self, v: ::std::string::String) {
2243        self.model_uri = v;
2244    }
2245
2246    // Mutable pointer to the field.
2247    // If field is not initialized, it is initialized with default value first.
2248    pub fn mut_model_uri(&mut self) -> &mut ::std::string::String {
2249        &mut self.model_uri
2250    }
2251
2252    // Take field
2253    pub fn take_model_uri(&mut self) -> ::std::string::String {
2254        ::std::mem::replace(&mut self.model_uri, ::std::string::String::new())
2255    }
2256
2257    // repeated .tensorboardrs.hparam.MetricValue metric_values = 6;
2258
2259
2260    pub fn get_metric_values(&self) -> &[MetricValue] {
2261        &self.metric_values
2262    }
2263    pub fn clear_metric_values(&mut self) {
2264        self.metric_values.clear();
2265    }
2266
2267    // Param is passed by value, moved
2268    pub fn set_metric_values(&mut self, v: ::protobuf::RepeatedField<MetricValue>) {
2269        self.metric_values = v;
2270    }
2271
2272    // Mutable pointer to the field.
2273    pub fn mut_metric_values(&mut self) -> &mut ::protobuf::RepeatedField<MetricValue> {
2274        &mut self.metric_values
2275    }
2276
2277    // Take field
2278    pub fn take_metric_values(&mut self) -> ::protobuf::RepeatedField<MetricValue> {
2279        ::std::mem::replace(&mut self.metric_values, ::protobuf::RepeatedField::new())
2280    }
2281
2282    // string monitor_url = 7;
2283
2284
2285    pub fn get_monitor_url(&self) -> &str {
2286        &self.monitor_url
2287    }
2288    pub fn clear_monitor_url(&mut self) {
2289        self.monitor_url.clear();
2290    }
2291
2292    // Param is passed by value, moved
2293    pub fn set_monitor_url(&mut self, v: ::std::string::String) {
2294        self.monitor_url = v;
2295    }
2296
2297    // Mutable pointer to the field.
2298    // If field is not initialized, it is initialized with default value first.
2299    pub fn mut_monitor_url(&mut self) -> &mut ::std::string::String {
2300        &mut self.monitor_url
2301    }
2302
2303    // Take field
2304    pub fn take_monitor_url(&mut self) -> ::std::string::String {
2305        ::std::mem::replace(&mut self.monitor_url, ::std::string::String::new())
2306    }
2307}
2308
2309impl ::protobuf::Message for Session {
2310    fn is_initialized(&self) -> bool {
2311        for v in &self.metric_values {
2312            if !v.is_initialized() {
2313                return false;
2314            }
2315        };
2316        true
2317    }
2318
2319    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2320        while !is.eof()? {
2321            let (field_number, wire_type) = is.read_tag_unpack()?;
2322            match field_number {
2323                1 => {
2324                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
2325                },
2326                2 => {
2327                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
2328                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2329                    }
2330                    let tmp = is.read_double()?;
2331                    self.start_time_secs = tmp;
2332                },
2333                3 => {
2334                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
2335                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2336                    }
2337                    let tmp = is.read_double()?;
2338                    self.end_time_secs = tmp;
2339                },
2340                4 => {
2341                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.status, 4, &mut self.unknown_fields)?
2342                },
2343                5 => {
2344                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.model_uri)?;
2345                },
2346                6 => {
2347                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.metric_values)?;
2348                },
2349                7 => {
2350                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.monitor_url)?;
2351                },
2352                _ => {
2353                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2354                },
2355            };
2356        }
2357        ::std::result::Result::Ok(())
2358    }
2359
2360    // Compute sizes of nested messages
2361    #[allow(unused_variables)]
2362    fn compute_size(&self) -> u32 {
2363        let mut my_size = 0;
2364        if !self.name.is_empty() {
2365            my_size += ::protobuf::rt::string_size(1, &self.name);
2366        }
2367        if self.start_time_secs != 0. {
2368            my_size += 9;
2369        }
2370        if self.end_time_secs != 0. {
2371            my_size += 9;
2372        }
2373        if self.status != Status::STATUS_UNKNOWN {
2374            my_size += ::protobuf::rt::enum_size(4, self.status);
2375        }
2376        if !self.model_uri.is_empty() {
2377            my_size += ::protobuf::rt::string_size(5, &self.model_uri);
2378        }
2379        for value in &self.metric_values {
2380            let len = value.compute_size();
2381            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2382        };
2383        if !self.monitor_url.is_empty() {
2384            my_size += ::protobuf::rt::string_size(7, &self.monitor_url);
2385        }
2386        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2387        self.cached_size.set(my_size);
2388        my_size
2389    }
2390
2391    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2392        if !self.name.is_empty() {
2393            os.write_string(1, &self.name)?;
2394        }
2395        if self.start_time_secs != 0. {
2396            os.write_double(2, self.start_time_secs)?;
2397        }
2398        if self.end_time_secs != 0. {
2399            os.write_double(3, self.end_time_secs)?;
2400        }
2401        if self.status != Status::STATUS_UNKNOWN {
2402            os.write_enum(4, ::protobuf::ProtobufEnum::value(&self.status))?;
2403        }
2404        if !self.model_uri.is_empty() {
2405            os.write_string(5, &self.model_uri)?;
2406        }
2407        for v in &self.metric_values {
2408            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2409            os.write_raw_varint32(v.get_cached_size())?;
2410            v.write_to_with_cached_sizes(os)?;
2411        };
2412        if !self.monitor_url.is_empty() {
2413            os.write_string(7, &self.monitor_url)?;
2414        }
2415        os.write_unknown_fields(self.get_unknown_fields())?;
2416        ::std::result::Result::Ok(())
2417    }
2418
2419    fn get_cached_size(&self) -> u32 {
2420        self.cached_size.get()
2421    }
2422
2423    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2424        &self.unknown_fields
2425    }
2426
2427    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2428        &mut self.unknown_fields
2429    }
2430
2431    fn as_any(&self) -> &dyn (::std::any::Any) {
2432        self as &dyn (::std::any::Any)
2433    }
2434    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2435        self as &mut dyn (::std::any::Any)
2436    }
2437    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2438        self
2439    }
2440
2441    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2442        Self::descriptor_static()
2443    }
2444
2445    fn new() -> Session {
2446        Session::new()
2447    }
2448
2449    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2450        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
2451        descriptor.get(|| {
2452            let mut fields = ::std::vec::Vec::new();
2453            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2454                "name",
2455                |m: &Session| { &m.name },
2456                |m: &mut Session| { &mut m.name },
2457            ));
2458            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
2459                "start_time_secs",
2460                |m: &Session| { &m.start_time_secs },
2461                |m: &mut Session| { &mut m.start_time_secs },
2462            ));
2463            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
2464                "end_time_secs",
2465                |m: &Session| { &m.end_time_secs },
2466                |m: &mut Session| { &mut m.end_time_secs },
2467            ));
2468            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<Status>>(
2469                "status",
2470                |m: &Session| { &m.status },
2471                |m: &mut Session| { &mut m.status },
2472            ));
2473            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2474                "model_uri",
2475                |m: &Session| { &m.model_uri },
2476                |m: &mut Session| { &mut m.model_uri },
2477            ));
2478            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricValue>>(
2479                "metric_values",
2480                |m: &Session| { &m.metric_values },
2481                |m: &mut Session| { &mut m.metric_values },
2482            ));
2483            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2484                "monitor_url",
2485                |m: &Session| { &m.monitor_url },
2486                |m: &mut Session| { &mut m.monitor_url },
2487            ));
2488            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Session>(
2489                "Session",
2490                fields,
2491                file_descriptor_proto()
2492            )
2493        })
2494    }
2495
2496    fn default_instance() -> &'static Session {
2497        static instance: ::protobuf::rt::LazyV2<Session> = ::protobuf::rt::LazyV2::INIT;
2498        instance.get(Session::new)
2499    }
2500}
2501
2502impl ::protobuf::Clear for Session {
2503    fn clear(&mut self) {
2504        self.name.clear();
2505        self.start_time_secs = 0.;
2506        self.end_time_secs = 0.;
2507        self.status = Status::STATUS_UNKNOWN;
2508        self.model_uri.clear();
2509        self.metric_values.clear();
2510        self.monitor_url.clear();
2511        self.unknown_fields.clear();
2512    }
2513}
2514
2515impl ::std::fmt::Debug for Session {
2516    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2517        ::protobuf::text_format::fmt(self, f)
2518    }
2519}
2520
2521impl ::protobuf::reflect::ProtobufValue for Session {
2522    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2523        ::protobuf::reflect::ReflectValueRef::Message(self)
2524    }
2525}
2526
2527#[derive(PartialEq,Clone,Default)]
2528pub struct GetExperimentRequest {
2529    // message fields
2530    pub experiment_name: ::std::string::String,
2531    // special fields
2532    pub unknown_fields: ::protobuf::UnknownFields,
2533    pub cached_size: ::protobuf::CachedSize,
2534}
2535
2536impl<'a> ::std::default::Default for &'a GetExperimentRequest {
2537    fn default() -> &'a GetExperimentRequest {
2538        <GetExperimentRequest as ::protobuf::Message>::default_instance()
2539    }
2540}
2541
2542impl GetExperimentRequest {
2543    pub fn new() -> GetExperimentRequest {
2544        ::std::default::Default::default()
2545    }
2546
2547    // string experiment_name = 1;
2548
2549
2550    pub fn get_experiment_name(&self) -> &str {
2551        &self.experiment_name
2552    }
2553    pub fn clear_experiment_name(&mut self) {
2554        self.experiment_name.clear();
2555    }
2556
2557    // Param is passed by value, moved
2558    pub fn set_experiment_name(&mut self, v: ::std::string::String) {
2559        self.experiment_name = v;
2560    }
2561
2562    // Mutable pointer to the field.
2563    // If field is not initialized, it is initialized with default value first.
2564    pub fn mut_experiment_name(&mut self) -> &mut ::std::string::String {
2565        &mut self.experiment_name
2566    }
2567
2568    // Take field
2569    pub fn take_experiment_name(&mut self) -> ::std::string::String {
2570        ::std::mem::replace(&mut self.experiment_name, ::std::string::String::new())
2571    }
2572}
2573
2574impl ::protobuf::Message for GetExperimentRequest {
2575    fn is_initialized(&self) -> bool {
2576        true
2577    }
2578
2579    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2580        while !is.eof()? {
2581            let (field_number, wire_type) = is.read_tag_unpack()?;
2582            match field_number {
2583                1 => {
2584                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.experiment_name)?;
2585                },
2586                _ => {
2587                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2588                },
2589            };
2590        }
2591        ::std::result::Result::Ok(())
2592    }
2593
2594    // Compute sizes of nested messages
2595    #[allow(unused_variables)]
2596    fn compute_size(&self) -> u32 {
2597        let mut my_size = 0;
2598        if !self.experiment_name.is_empty() {
2599            my_size += ::protobuf::rt::string_size(1, &self.experiment_name);
2600        }
2601        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2602        self.cached_size.set(my_size);
2603        my_size
2604    }
2605
2606    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2607        if !self.experiment_name.is_empty() {
2608            os.write_string(1, &self.experiment_name)?;
2609        }
2610        os.write_unknown_fields(self.get_unknown_fields())?;
2611        ::std::result::Result::Ok(())
2612    }
2613
2614    fn get_cached_size(&self) -> u32 {
2615        self.cached_size.get()
2616    }
2617
2618    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2619        &self.unknown_fields
2620    }
2621
2622    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2623        &mut self.unknown_fields
2624    }
2625
2626    fn as_any(&self) -> &dyn (::std::any::Any) {
2627        self as &dyn (::std::any::Any)
2628    }
2629    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2630        self as &mut dyn (::std::any::Any)
2631    }
2632    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2633        self
2634    }
2635
2636    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2637        Self::descriptor_static()
2638    }
2639
2640    fn new() -> GetExperimentRequest {
2641        GetExperimentRequest::new()
2642    }
2643
2644    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2645        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
2646        descriptor.get(|| {
2647            let mut fields = ::std::vec::Vec::new();
2648            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2649                "experiment_name",
2650                |m: &GetExperimentRequest| { &m.experiment_name },
2651                |m: &mut GetExperimentRequest| { &mut m.experiment_name },
2652            ));
2653            ::protobuf::reflect::MessageDescriptor::new_pb_name::<GetExperimentRequest>(
2654                "GetExperimentRequest",
2655                fields,
2656                file_descriptor_proto()
2657            )
2658        })
2659    }
2660
2661    fn default_instance() -> &'static GetExperimentRequest {
2662        static instance: ::protobuf::rt::LazyV2<GetExperimentRequest> = ::protobuf::rt::LazyV2::INIT;
2663        instance.get(GetExperimentRequest::new)
2664    }
2665}
2666
2667impl ::protobuf::Clear for GetExperimentRequest {
2668    fn clear(&mut self) {
2669        self.experiment_name.clear();
2670        self.unknown_fields.clear();
2671    }
2672}
2673
2674impl ::std::fmt::Debug for GetExperimentRequest {
2675    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2676        ::protobuf::text_format::fmt(self, f)
2677    }
2678}
2679
2680impl ::protobuf::reflect::ProtobufValue for GetExperimentRequest {
2681    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2682        ::protobuf::reflect::ReflectValueRef::Message(self)
2683    }
2684}
2685
2686#[derive(PartialEq,Clone,Default)]
2687pub struct ListSessionGroupsRequest {
2688    // message fields
2689    pub experiment_name: ::std::string::String,
2690    pub allowed_statuses: ::std::vec::Vec<Status>,
2691    pub col_params: ::protobuf::RepeatedField<ColParams>,
2692    pub aggregation_type: AggregationType,
2693    pub aggregation_metric: ::protobuf::SingularPtrField<MetricName>,
2694    pub start_index: i32,
2695    pub slice_size: i32,
2696    // special fields
2697    pub unknown_fields: ::protobuf::UnknownFields,
2698    pub cached_size: ::protobuf::CachedSize,
2699}
2700
2701impl<'a> ::std::default::Default for &'a ListSessionGroupsRequest {
2702    fn default() -> &'a ListSessionGroupsRequest {
2703        <ListSessionGroupsRequest as ::protobuf::Message>::default_instance()
2704    }
2705}
2706
2707impl ListSessionGroupsRequest {
2708    pub fn new() -> ListSessionGroupsRequest {
2709        ::std::default::Default::default()
2710    }
2711
2712    // string experiment_name = 6;
2713
2714
2715    pub fn get_experiment_name(&self) -> &str {
2716        &self.experiment_name
2717    }
2718    pub fn clear_experiment_name(&mut self) {
2719        self.experiment_name.clear();
2720    }
2721
2722    // Param is passed by value, moved
2723    pub fn set_experiment_name(&mut self, v: ::std::string::String) {
2724        self.experiment_name = v;
2725    }
2726
2727    // Mutable pointer to the field.
2728    // If field is not initialized, it is initialized with default value first.
2729    pub fn mut_experiment_name(&mut self) -> &mut ::std::string::String {
2730        &mut self.experiment_name
2731    }
2732
2733    // Take field
2734    pub fn take_experiment_name(&mut self) -> ::std::string::String {
2735        ::std::mem::replace(&mut self.experiment_name, ::std::string::String::new())
2736    }
2737
2738    // repeated .tensorboardrs.hparam.Status allowed_statuses = 7;
2739
2740
2741    pub fn get_allowed_statuses(&self) -> &[Status] {
2742        &self.allowed_statuses
2743    }
2744    pub fn clear_allowed_statuses(&mut self) {
2745        self.allowed_statuses.clear();
2746    }
2747
2748    // Param is passed by value, moved
2749    pub fn set_allowed_statuses(&mut self, v: ::std::vec::Vec<Status>) {
2750        self.allowed_statuses = v;
2751    }
2752
2753    // Mutable pointer to the field.
2754    pub fn mut_allowed_statuses(&mut self) -> &mut ::std::vec::Vec<Status> {
2755        &mut self.allowed_statuses
2756    }
2757
2758    // Take field
2759    pub fn take_allowed_statuses(&mut self) -> ::std::vec::Vec<Status> {
2760        ::std::mem::replace(&mut self.allowed_statuses, ::std::vec::Vec::new())
2761    }
2762
2763    // repeated .tensorboardrs.hparam.ColParams col_params = 1;
2764
2765
2766    pub fn get_col_params(&self) -> &[ColParams] {
2767        &self.col_params
2768    }
2769    pub fn clear_col_params(&mut self) {
2770        self.col_params.clear();
2771    }
2772
2773    // Param is passed by value, moved
2774    pub fn set_col_params(&mut self, v: ::protobuf::RepeatedField<ColParams>) {
2775        self.col_params = v;
2776    }
2777
2778    // Mutable pointer to the field.
2779    pub fn mut_col_params(&mut self) -> &mut ::protobuf::RepeatedField<ColParams> {
2780        &mut self.col_params
2781    }
2782
2783    // Take field
2784    pub fn take_col_params(&mut self) -> ::protobuf::RepeatedField<ColParams> {
2785        ::std::mem::replace(&mut self.col_params, ::protobuf::RepeatedField::new())
2786    }
2787
2788    // .tensorboardrs.hparam.AggregationType aggregation_type = 2;
2789
2790
2791    pub fn get_aggregation_type(&self) -> AggregationType {
2792        self.aggregation_type
2793    }
2794    pub fn clear_aggregation_type(&mut self) {
2795        self.aggregation_type = AggregationType::AGGREGATION_UNSET;
2796    }
2797
2798    // Param is passed by value, moved
2799    pub fn set_aggregation_type(&mut self, v: AggregationType) {
2800        self.aggregation_type = v;
2801    }
2802
2803    // .tensorboardrs.hparam.MetricName aggregation_metric = 3;
2804
2805
2806    pub fn get_aggregation_metric(&self) -> &MetricName {
2807        self.aggregation_metric.as_ref().unwrap_or_else(|| <MetricName as ::protobuf::Message>::default_instance())
2808    }
2809    pub fn clear_aggregation_metric(&mut self) {
2810        self.aggregation_metric.clear();
2811    }
2812
2813    pub fn has_aggregation_metric(&self) -> bool {
2814        self.aggregation_metric.is_some()
2815    }
2816
2817    // Param is passed by value, moved
2818    pub fn set_aggregation_metric(&mut self, v: MetricName) {
2819        self.aggregation_metric = ::protobuf::SingularPtrField::some(v);
2820    }
2821
2822    // Mutable pointer to the field.
2823    // If field is not initialized, it is initialized with default value first.
2824    pub fn mut_aggregation_metric(&mut self) -> &mut MetricName {
2825        if self.aggregation_metric.is_none() {
2826            self.aggregation_metric.set_default();
2827        }
2828        self.aggregation_metric.as_mut().unwrap()
2829    }
2830
2831    // Take field
2832    pub fn take_aggregation_metric(&mut self) -> MetricName {
2833        self.aggregation_metric.take().unwrap_or_else(|| MetricName::new())
2834    }
2835
2836    // int32 start_index = 4;
2837
2838
2839    pub fn get_start_index(&self) -> i32 {
2840        self.start_index
2841    }
2842    pub fn clear_start_index(&mut self) {
2843        self.start_index = 0;
2844    }
2845
2846    // Param is passed by value, moved
2847    pub fn set_start_index(&mut self, v: i32) {
2848        self.start_index = v;
2849    }
2850
2851    // int32 slice_size = 5;
2852
2853
2854    pub fn get_slice_size(&self) -> i32 {
2855        self.slice_size
2856    }
2857    pub fn clear_slice_size(&mut self) {
2858        self.slice_size = 0;
2859    }
2860
2861    // Param is passed by value, moved
2862    pub fn set_slice_size(&mut self, v: i32) {
2863        self.slice_size = v;
2864    }
2865}
2866
2867impl ::protobuf::Message for ListSessionGroupsRequest {
2868    fn is_initialized(&self) -> bool {
2869        for v in &self.col_params {
2870            if !v.is_initialized() {
2871                return false;
2872            }
2873        };
2874        for v in &self.aggregation_metric {
2875            if !v.is_initialized() {
2876                return false;
2877            }
2878        };
2879        true
2880    }
2881
2882    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2883        while !is.eof()? {
2884            let (field_number, wire_type) = is.read_tag_unpack()?;
2885            match field_number {
2886                6 => {
2887                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.experiment_name)?;
2888                },
2889                7 => {
2890                    ::protobuf::rt::read_repeated_enum_with_unknown_fields_into(wire_type, is, &mut self.allowed_statuses, 7, &mut self.unknown_fields)?
2891                },
2892                1 => {
2893                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.col_params)?;
2894                },
2895                2 => {
2896                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.aggregation_type, 2, &mut self.unknown_fields)?
2897                },
2898                3 => {
2899                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.aggregation_metric)?;
2900                },
2901                4 => {
2902                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2903                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2904                    }
2905                    let tmp = is.read_int32()?;
2906                    self.start_index = tmp;
2907                },
2908                5 => {
2909                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2910                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2911                    }
2912                    let tmp = is.read_int32()?;
2913                    self.slice_size = tmp;
2914                },
2915                _ => {
2916                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2917                },
2918            };
2919        }
2920        ::std::result::Result::Ok(())
2921    }
2922
2923    // Compute sizes of nested messages
2924    #[allow(unused_variables)]
2925    fn compute_size(&self) -> u32 {
2926        let mut my_size = 0;
2927        if !self.experiment_name.is_empty() {
2928            my_size += ::protobuf::rt::string_size(6, &self.experiment_name);
2929        }
2930        for value in &self.allowed_statuses {
2931            my_size += ::protobuf::rt::enum_size(7, *value);
2932        };
2933        for value in &self.col_params {
2934            let len = value.compute_size();
2935            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2936        };
2937        if self.aggregation_type != AggregationType::AGGREGATION_UNSET {
2938            my_size += ::protobuf::rt::enum_size(2, self.aggregation_type);
2939        }
2940        if let Some(ref v) = self.aggregation_metric.as_ref() {
2941            let len = v.compute_size();
2942            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2943        }
2944        if self.start_index != 0 {
2945            my_size += ::protobuf::rt::value_size(4, self.start_index, ::protobuf::wire_format::WireTypeVarint);
2946        }
2947        if self.slice_size != 0 {
2948            my_size += ::protobuf::rt::value_size(5, self.slice_size, ::protobuf::wire_format::WireTypeVarint);
2949        }
2950        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2951        self.cached_size.set(my_size);
2952        my_size
2953    }
2954
2955    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2956        if !self.experiment_name.is_empty() {
2957            os.write_string(6, &self.experiment_name)?;
2958        }
2959        for v in &self.allowed_statuses {
2960            os.write_enum(7, ::protobuf::ProtobufEnum::value(v))?;
2961        };
2962        for v in &self.col_params {
2963            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2964            os.write_raw_varint32(v.get_cached_size())?;
2965            v.write_to_with_cached_sizes(os)?;
2966        };
2967        if self.aggregation_type != AggregationType::AGGREGATION_UNSET {
2968            os.write_enum(2, ::protobuf::ProtobufEnum::value(&self.aggregation_type))?;
2969        }
2970        if let Some(ref v) = self.aggregation_metric.as_ref() {
2971            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2972            os.write_raw_varint32(v.get_cached_size())?;
2973            v.write_to_with_cached_sizes(os)?;
2974        }
2975        if self.start_index != 0 {
2976            os.write_int32(4, self.start_index)?;
2977        }
2978        if self.slice_size != 0 {
2979            os.write_int32(5, self.slice_size)?;
2980        }
2981        os.write_unknown_fields(self.get_unknown_fields())?;
2982        ::std::result::Result::Ok(())
2983    }
2984
2985    fn get_cached_size(&self) -> u32 {
2986        self.cached_size.get()
2987    }
2988
2989    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2990        &self.unknown_fields
2991    }
2992
2993    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2994        &mut self.unknown_fields
2995    }
2996
2997    fn as_any(&self) -> &dyn (::std::any::Any) {
2998        self as &dyn (::std::any::Any)
2999    }
3000    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3001        self as &mut dyn (::std::any::Any)
3002    }
3003    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3004        self
3005    }
3006
3007    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3008        Self::descriptor_static()
3009    }
3010
3011    fn new() -> ListSessionGroupsRequest {
3012        ListSessionGroupsRequest::new()
3013    }
3014
3015    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3016        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3017        descriptor.get(|| {
3018            let mut fields = ::std::vec::Vec::new();
3019            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
3020                "experiment_name",
3021                |m: &ListSessionGroupsRequest| { &m.experiment_name },
3022                |m: &mut ListSessionGroupsRequest| { &mut m.experiment_name },
3023            ));
3024            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeEnum<Status>>(
3025                "allowed_statuses",
3026                |m: &ListSessionGroupsRequest| { &m.allowed_statuses },
3027                |m: &mut ListSessionGroupsRequest| { &mut m.allowed_statuses },
3028            ));
3029            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ColParams>>(
3030                "col_params",
3031                |m: &ListSessionGroupsRequest| { &m.col_params },
3032                |m: &mut ListSessionGroupsRequest| { &mut m.col_params },
3033            ));
3034            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<AggregationType>>(
3035                "aggregation_type",
3036                |m: &ListSessionGroupsRequest| { &m.aggregation_type },
3037                |m: &mut ListSessionGroupsRequest| { &mut m.aggregation_type },
3038            ));
3039            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricName>>(
3040                "aggregation_metric",
3041                |m: &ListSessionGroupsRequest| { &m.aggregation_metric },
3042                |m: &mut ListSessionGroupsRequest| { &mut m.aggregation_metric },
3043            ));
3044            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3045                "start_index",
3046                |m: &ListSessionGroupsRequest| { &m.start_index },
3047                |m: &mut ListSessionGroupsRequest| { &mut m.start_index },
3048            ));
3049            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3050                "slice_size",
3051                |m: &ListSessionGroupsRequest| { &m.slice_size },
3052                |m: &mut ListSessionGroupsRequest| { &mut m.slice_size },
3053            ));
3054            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ListSessionGroupsRequest>(
3055                "ListSessionGroupsRequest",
3056                fields,
3057                file_descriptor_proto()
3058            )
3059        })
3060    }
3061
3062    fn default_instance() -> &'static ListSessionGroupsRequest {
3063        static instance: ::protobuf::rt::LazyV2<ListSessionGroupsRequest> = ::protobuf::rt::LazyV2::INIT;
3064        instance.get(ListSessionGroupsRequest::new)
3065    }
3066}
3067
3068impl ::protobuf::Clear for ListSessionGroupsRequest {
3069    fn clear(&mut self) {
3070        self.experiment_name.clear();
3071        self.allowed_statuses.clear();
3072        self.col_params.clear();
3073        self.aggregation_type = AggregationType::AGGREGATION_UNSET;
3074        self.aggregation_metric.clear();
3075        self.start_index = 0;
3076        self.slice_size = 0;
3077        self.unknown_fields.clear();
3078    }
3079}
3080
3081impl ::std::fmt::Debug for ListSessionGroupsRequest {
3082    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3083        ::protobuf::text_format::fmt(self, f)
3084    }
3085}
3086
3087impl ::protobuf::reflect::ProtobufValue for ListSessionGroupsRequest {
3088    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3089        ::protobuf::reflect::ReflectValueRef::Message(self)
3090    }
3091}
3092
3093#[derive(PartialEq,Clone,Default)]
3094pub struct ColParams {
3095    // message fields
3096    pub order: SortOrder,
3097    pub missing_values_first: bool,
3098    pub exclude_missing_values: bool,
3099    // message oneof groups
3100    pub name: ::std::option::Option<ColParams_oneof_name>,
3101    pub filter: ::std::option::Option<ColParams_oneof_filter>,
3102    // special fields
3103    pub unknown_fields: ::protobuf::UnknownFields,
3104    pub cached_size: ::protobuf::CachedSize,
3105}
3106
3107impl<'a> ::std::default::Default for &'a ColParams {
3108    fn default() -> &'a ColParams {
3109        <ColParams as ::protobuf::Message>::default_instance()
3110    }
3111}
3112
3113#[derive(Clone,PartialEq,Debug)]
3114pub enum ColParams_oneof_name {
3115    metric(MetricName),
3116    hparam(::std::string::String),
3117}
3118
3119#[derive(Clone,PartialEq,Debug)]
3120pub enum ColParams_oneof_filter {
3121    filter_regexp(::std::string::String),
3122    filter_interval(Interval),
3123    filter_discrete(::protobuf::well_known_types::ListValue),
3124}
3125
3126impl ColParams {
3127    pub fn new() -> ColParams {
3128        ::std::default::Default::default()
3129    }
3130
3131    // .tensorboardrs.hparam.MetricName metric = 1;
3132
3133
3134    pub fn get_metric(&self) -> &MetricName {
3135        match self.name {
3136            ::std::option::Option::Some(ColParams_oneof_name::metric(ref v)) => v,
3137            _ => <MetricName as ::protobuf::Message>::default_instance(),
3138        }
3139    }
3140    pub fn clear_metric(&mut self) {
3141        self.name = ::std::option::Option::None;
3142    }
3143
3144    pub fn has_metric(&self) -> bool {
3145        match self.name {
3146            ::std::option::Option::Some(ColParams_oneof_name::metric(..)) => true,
3147            _ => false,
3148        }
3149    }
3150
3151    // Param is passed by value, moved
3152    pub fn set_metric(&mut self, v: MetricName) {
3153        self.name = ::std::option::Option::Some(ColParams_oneof_name::metric(v))
3154    }
3155
3156    // Mutable pointer to the field.
3157    pub fn mut_metric(&mut self) -> &mut MetricName {
3158        if let ::std::option::Option::Some(ColParams_oneof_name::metric(_)) = self.name {
3159        } else {
3160            self.name = ::std::option::Option::Some(ColParams_oneof_name::metric(MetricName::new()));
3161        }
3162        match self.name {
3163            ::std::option::Option::Some(ColParams_oneof_name::metric(ref mut v)) => v,
3164            _ => panic!(),
3165        }
3166    }
3167
3168    // Take field
3169    pub fn take_metric(&mut self) -> MetricName {
3170        if self.has_metric() {
3171            match self.name.take() {
3172                ::std::option::Option::Some(ColParams_oneof_name::metric(v)) => v,
3173                _ => panic!(),
3174            }
3175        } else {
3176            MetricName::new()
3177        }
3178    }
3179
3180    // string hparam = 2;
3181
3182
3183    pub fn get_hparam(&self) -> &str {
3184        match self.name {
3185            ::std::option::Option::Some(ColParams_oneof_name::hparam(ref v)) => v,
3186            _ => "",
3187        }
3188    }
3189    pub fn clear_hparam(&mut self) {
3190        self.name = ::std::option::Option::None;
3191    }
3192
3193    pub fn has_hparam(&self) -> bool {
3194        match self.name {
3195            ::std::option::Option::Some(ColParams_oneof_name::hparam(..)) => true,
3196            _ => false,
3197        }
3198    }
3199
3200    // Param is passed by value, moved
3201    pub fn set_hparam(&mut self, v: ::std::string::String) {
3202        self.name = ::std::option::Option::Some(ColParams_oneof_name::hparam(v))
3203    }
3204
3205    // Mutable pointer to the field.
3206    pub fn mut_hparam(&mut self) -> &mut ::std::string::String {
3207        if let ::std::option::Option::Some(ColParams_oneof_name::hparam(_)) = self.name {
3208        } else {
3209            self.name = ::std::option::Option::Some(ColParams_oneof_name::hparam(::std::string::String::new()));
3210        }
3211        match self.name {
3212            ::std::option::Option::Some(ColParams_oneof_name::hparam(ref mut v)) => v,
3213            _ => panic!(),
3214        }
3215    }
3216
3217    // Take field
3218    pub fn take_hparam(&mut self) -> ::std::string::String {
3219        if self.has_hparam() {
3220            match self.name.take() {
3221                ::std::option::Option::Some(ColParams_oneof_name::hparam(v)) => v,
3222                _ => panic!(),
3223            }
3224        } else {
3225            ::std::string::String::new()
3226        }
3227    }
3228
3229    // .tensorboardrs.hparam.SortOrder order = 3;
3230
3231
3232    pub fn get_order(&self) -> SortOrder {
3233        self.order
3234    }
3235    pub fn clear_order(&mut self) {
3236        self.order = SortOrder::ORDER_UNSPECIFIED;
3237    }
3238
3239    // Param is passed by value, moved
3240    pub fn set_order(&mut self, v: SortOrder) {
3241        self.order = v;
3242    }
3243
3244    // bool missing_values_first = 4;
3245
3246
3247    pub fn get_missing_values_first(&self) -> bool {
3248        self.missing_values_first
3249    }
3250    pub fn clear_missing_values_first(&mut self) {
3251        self.missing_values_first = false;
3252    }
3253
3254    // Param is passed by value, moved
3255    pub fn set_missing_values_first(&mut self, v: bool) {
3256        self.missing_values_first = v;
3257    }
3258
3259    // string filter_regexp = 5;
3260
3261
3262    pub fn get_filter_regexp(&self) -> &str {
3263        match self.filter {
3264            ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(ref v)) => v,
3265            _ => "",
3266        }
3267    }
3268    pub fn clear_filter_regexp(&mut self) {
3269        self.filter = ::std::option::Option::None;
3270    }
3271
3272    pub fn has_filter_regexp(&self) -> bool {
3273        match self.filter {
3274            ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(..)) => true,
3275            _ => false,
3276        }
3277    }
3278
3279    // Param is passed by value, moved
3280    pub fn set_filter_regexp(&mut self, v: ::std::string::String) {
3281        self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(v))
3282    }
3283
3284    // Mutable pointer to the field.
3285    pub fn mut_filter_regexp(&mut self) -> &mut ::std::string::String {
3286        if let ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(_)) = self.filter {
3287        } else {
3288            self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(::std::string::String::new()));
3289        }
3290        match self.filter {
3291            ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(ref mut v)) => v,
3292            _ => panic!(),
3293        }
3294    }
3295
3296    // Take field
3297    pub fn take_filter_regexp(&mut self) -> ::std::string::String {
3298        if self.has_filter_regexp() {
3299            match self.filter.take() {
3300                ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(v)) => v,
3301                _ => panic!(),
3302            }
3303        } else {
3304            ::std::string::String::new()
3305        }
3306    }
3307
3308    // .tensorboardrs.hparam.Interval filter_interval = 6;
3309
3310
3311    pub fn get_filter_interval(&self) -> &Interval {
3312        match self.filter {
3313            ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(ref v)) => v,
3314            _ => <Interval as ::protobuf::Message>::default_instance(),
3315        }
3316    }
3317    pub fn clear_filter_interval(&mut self) {
3318        self.filter = ::std::option::Option::None;
3319    }
3320
3321    pub fn has_filter_interval(&self) -> bool {
3322        match self.filter {
3323            ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(..)) => true,
3324            _ => false,
3325        }
3326    }
3327
3328    // Param is passed by value, moved
3329    pub fn set_filter_interval(&mut self, v: Interval) {
3330        self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(v))
3331    }
3332
3333    // Mutable pointer to the field.
3334    pub fn mut_filter_interval(&mut self) -> &mut Interval {
3335        if let ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(_)) = self.filter {
3336        } else {
3337            self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(Interval::new()));
3338        }
3339        match self.filter {
3340            ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(ref mut v)) => v,
3341            _ => panic!(),
3342        }
3343    }
3344
3345    // Take field
3346    pub fn take_filter_interval(&mut self) -> Interval {
3347        if self.has_filter_interval() {
3348            match self.filter.take() {
3349                ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(v)) => v,
3350                _ => panic!(),
3351            }
3352        } else {
3353            Interval::new()
3354        }
3355    }
3356
3357    // .google.protobuf.ListValue filter_discrete = 7;
3358
3359
3360    pub fn get_filter_discrete(&self) -> &::protobuf::well_known_types::ListValue {
3361        match self.filter {
3362            ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(ref v)) => v,
3363            _ => <::protobuf::well_known_types::ListValue as ::protobuf::Message>::default_instance(),
3364        }
3365    }
3366    pub fn clear_filter_discrete(&mut self) {
3367        self.filter = ::std::option::Option::None;
3368    }
3369
3370    pub fn has_filter_discrete(&self) -> bool {
3371        match self.filter {
3372            ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(..)) => true,
3373            _ => false,
3374        }
3375    }
3376
3377    // Param is passed by value, moved
3378    pub fn set_filter_discrete(&mut self, v: ::protobuf::well_known_types::ListValue) {
3379        self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(v))
3380    }
3381
3382    // Mutable pointer to the field.
3383    pub fn mut_filter_discrete(&mut self) -> &mut ::protobuf::well_known_types::ListValue {
3384        if let ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(_)) = self.filter {
3385        } else {
3386            self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(::protobuf::well_known_types::ListValue::new()));
3387        }
3388        match self.filter {
3389            ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(ref mut v)) => v,
3390            _ => panic!(),
3391        }
3392    }
3393
3394    // Take field
3395    pub fn take_filter_discrete(&mut self) -> ::protobuf::well_known_types::ListValue {
3396        if self.has_filter_discrete() {
3397            match self.filter.take() {
3398                ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(v)) => v,
3399                _ => panic!(),
3400            }
3401        } else {
3402            ::protobuf::well_known_types::ListValue::new()
3403        }
3404    }
3405
3406    // bool exclude_missing_values = 8;
3407
3408
3409    pub fn get_exclude_missing_values(&self) -> bool {
3410        self.exclude_missing_values
3411    }
3412    pub fn clear_exclude_missing_values(&mut self) {
3413        self.exclude_missing_values = false;
3414    }
3415
3416    // Param is passed by value, moved
3417    pub fn set_exclude_missing_values(&mut self, v: bool) {
3418        self.exclude_missing_values = v;
3419    }
3420}
3421
3422impl ::protobuf::Message for ColParams {
3423    fn is_initialized(&self) -> bool {
3424        if let Some(ColParams_oneof_name::metric(ref v)) = self.name {
3425            if !v.is_initialized() {
3426                return false;
3427            }
3428        }
3429        if let Some(ColParams_oneof_filter::filter_interval(ref v)) = self.filter {
3430            if !v.is_initialized() {
3431                return false;
3432            }
3433        }
3434        if let Some(ColParams_oneof_filter::filter_discrete(ref v)) = self.filter {
3435            if !v.is_initialized() {
3436                return false;
3437            }
3438        }
3439        true
3440    }
3441
3442    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3443        while !is.eof()? {
3444            let (field_number, wire_type) = is.read_tag_unpack()?;
3445            match field_number {
3446                1 => {
3447                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
3448                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3449                    }
3450                    self.name = ::std::option::Option::Some(ColParams_oneof_name::metric(is.read_message()?));
3451                },
3452                2 => {
3453                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
3454                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3455                    }
3456                    self.name = ::std::option::Option::Some(ColParams_oneof_name::hparam(is.read_string()?));
3457                },
3458                3 => {
3459                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.order, 3, &mut self.unknown_fields)?
3460                },
3461                4 => {
3462                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3463                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3464                    }
3465                    let tmp = is.read_bool()?;
3466                    self.missing_values_first = tmp;
3467                },
3468                5 => {
3469                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
3470                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3471                    }
3472                    self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_regexp(is.read_string()?));
3473                },
3474                6 => {
3475                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
3476                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3477                    }
3478                    self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_interval(is.read_message()?));
3479                },
3480                7 => {
3481                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
3482                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3483                    }
3484                    self.filter = ::std::option::Option::Some(ColParams_oneof_filter::filter_discrete(is.read_message()?));
3485                },
3486                8 => {
3487                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3488                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3489                    }
3490                    let tmp = is.read_bool()?;
3491                    self.exclude_missing_values = tmp;
3492                },
3493                _ => {
3494                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3495                },
3496            };
3497        }
3498        ::std::result::Result::Ok(())
3499    }
3500
3501    // Compute sizes of nested messages
3502    #[allow(unused_variables)]
3503    fn compute_size(&self) -> u32 {
3504        let mut my_size = 0;
3505        if self.order != SortOrder::ORDER_UNSPECIFIED {
3506            my_size += ::protobuf::rt::enum_size(3, self.order);
3507        }
3508        if self.missing_values_first != false {
3509            my_size += 2;
3510        }
3511        if self.exclude_missing_values != false {
3512            my_size += 2;
3513        }
3514        if let ::std::option::Option::Some(ref v) = self.name {
3515            match v {
3516                &ColParams_oneof_name::metric(ref v) => {
3517                    let len = v.compute_size();
3518                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3519                },
3520                &ColParams_oneof_name::hparam(ref v) => {
3521                    my_size += ::protobuf::rt::string_size(2, &v);
3522                },
3523            };
3524        }
3525        if let ::std::option::Option::Some(ref v) = self.filter {
3526            match v {
3527                &ColParams_oneof_filter::filter_regexp(ref v) => {
3528                    my_size += ::protobuf::rt::string_size(5, &v);
3529                },
3530                &ColParams_oneof_filter::filter_interval(ref v) => {
3531                    let len = v.compute_size();
3532                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3533                },
3534                &ColParams_oneof_filter::filter_discrete(ref v) => {
3535                    let len = v.compute_size();
3536                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3537                },
3538            };
3539        }
3540        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3541        self.cached_size.set(my_size);
3542        my_size
3543    }
3544
3545    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3546        if self.order != SortOrder::ORDER_UNSPECIFIED {
3547            os.write_enum(3, ::protobuf::ProtobufEnum::value(&self.order))?;
3548        }
3549        if self.missing_values_first != false {
3550            os.write_bool(4, self.missing_values_first)?;
3551        }
3552        if self.exclude_missing_values != false {
3553            os.write_bool(8, self.exclude_missing_values)?;
3554        }
3555        if let ::std::option::Option::Some(ref v) = self.name {
3556            match v {
3557                &ColParams_oneof_name::metric(ref v) => {
3558                    os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3559                    os.write_raw_varint32(v.get_cached_size())?;
3560                    v.write_to_with_cached_sizes(os)?;
3561                },
3562                &ColParams_oneof_name::hparam(ref v) => {
3563                    os.write_string(2, v)?;
3564                },
3565            };
3566        }
3567        if let ::std::option::Option::Some(ref v) = self.filter {
3568            match v {
3569                &ColParams_oneof_filter::filter_regexp(ref v) => {
3570                    os.write_string(5, v)?;
3571                },
3572                &ColParams_oneof_filter::filter_interval(ref v) => {
3573                    os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3574                    os.write_raw_varint32(v.get_cached_size())?;
3575                    v.write_to_with_cached_sizes(os)?;
3576                },
3577                &ColParams_oneof_filter::filter_discrete(ref v) => {
3578                    os.write_tag(7, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3579                    os.write_raw_varint32(v.get_cached_size())?;
3580                    v.write_to_with_cached_sizes(os)?;
3581                },
3582            };
3583        }
3584        os.write_unknown_fields(self.get_unknown_fields())?;
3585        ::std::result::Result::Ok(())
3586    }
3587
3588    fn get_cached_size(&self) -> u32 {
3589        self.cached_size.get()
3590    }
3591
3592    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3593        &self.unknown_fields
3594    }
3595
3596    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3597        &mut self.unknown_fields
3598    }
3599
3600    fn as_any(&self) -> &dyn (::std::any::Any) {
3601        self as &dyn (::std::any::Any)
3602    }
3603    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3604        self as &mut dyn (::std::any::Any)
3605    }
3606    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3607        self
3608    }
3609
3610    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3611        Self::descriptor_static()
3612    }
3613
3614    fn new() -> ColParams {
3615        ColParams::new()
3616    }
3617
3618    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3619        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3620        descriptor.get(|| {
3621            let mut fields = ::std::vec::Vec::new();
3622            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, MetricName>(
3623                "metric",
3624                ColParams::has_metric,
3625                ColParams::get_metric,
3626            ));
3627            fields.push(::protobuf::reflect::accessor::make_singular_string_accessor::<_>(
3628                "hparam",
3629                ColParams::has_hparam,
3630                ColParams::get_hparam,
3631            ));
3632            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<SortOrder>>(
3633                "order",
3634                |m: &ColParams| { &m.order },
3635                |m: &mut ColParams| { &mut m.order },
3636            ));
3637            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3638                "missing_values_first",
3639                |m: &ColParams| { &m.missing_values_first },
3640                |m: &mut ColParams| { &mut m.missing_values_first },
3641            ));
3642            fields.push(::protobuf::reflect::accessor::make_singular_string_accessor::<_>(
3643                "filter_regexp",
3644                ColParams::has_filter_regexp,
3645                ColParams::get_filter_regexp,
3646            ));
3647            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Interval>(
3648                "filter_interval",
3649                ColParams::has_filter_interval,
3650                ColParams::get_filter_interval,
3651            ));
3652            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, ::protobuf::well_known_types::ListValue>(
3653                "filter_discrete",
3654                ColParams::has_filter_discrete,
3655                ColParams::get_filter_discrete,
3656            ));
3657            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3658                "exclude_missing_values",
3659                |m: &ColParams| { &m.exclude_missing_values },
3660                |m: &mut ColParams| { &mut m.exclude_missing_values },
3661            ));
3662            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ColParams>(
3663                "ColParams",
3664                fields,
3665                file_descriptor_proto()
3666            )
3667        })
3668    }
3669
3670    fn default_instance() -> &'static ColParams {
3671        static instance: ::protobuf::rt::LazyV2<ColParams> = ::protobuf::rt::LazyV2::INIT;
3672        instance.get(ColParams::new)
3673    }
3674}
3675
3676impl ::protobuf::Clear for ColParams {
3677    fn clear(&mut self) {
3678        self.name = ::std::option::Option::None;
3679        self.name = ::std::option::Option::None;
3680        self.order = SortOrder::ORDER_UNSPECIFIED;
3681        self.missing_values_first = false;
3682        self.filter = ::std::option::Option::None;
3683        self.filter = ::std::option::Option::None;
3684        self.filter = ::std::option::Option::None;
3685        self.exclude_missing_values = false;
3686        self.unknown_fields.clear();
3687    }
3688}
3689
3690impl ::std::fmt::Debug for ColParams {
3691    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3692        ::protobuf::text_format::fmt(self, f)
3693    }
3694}
3695
3696impl ::protobuf::reflect::ProtobufValue for ColParams {
3697    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3698        ::protobuf::reflect::ReflectValueRef::Message(self)
3699    }
3700}
3701
3702#[derive(PartialEq,Clone,Default)]
3703pub struct ListSessionGroupsResponse {
3704    // message fields
3705    pub session_groups: ::protobuf::RepeatedField<SessionGroup>,
3706    pub total_size: i32,
3707    // special fields
3708    pub unknown_fields: ::protobuf::UnknownFields,
3709    pub cached_size: ::protobuf::CachedSize,
3710}
3711
3712impl<'a> ::std::default::Default for &'a ListSessionGroupsResponse {
3713    fn default() -> &'a ListSessionGroupsResponse {
3714        <ListSessionGroupsResponse as ::protobuf::Message>::default_instance()
3715    }
3716}
3717
3718impl ListSessionGroupsResponse {
3719    pub fn new() -> ListSessionGroupsResponse {
3720        ::std::default::Default::default()
3721    }
3722
3723    // repeated .tensorboardrs.hparam.SessionGroup session_groups = 1;
3724
3725
3726    pub fn get_session_groups(&self) -> &[SessionGroup] {
3727        &self.session_groups
3728    }
3729    pub fn clear_session_groups(&mut self) {
3730        self.session_groups.clear();
3731    }
3732
3733    // Param is passed by value, moved
3734    pub fn set_session_groups(&mut self, v: ::protobuf::RepeatedField<SessionGroup>) {
3735        self.session_groups = v;
3736    }
3737
3738    // Mutable pointer to the field.
3739    pub fn mut_session_groups(&mut self) -> &mut ::protobuf::RepeatedField<SessionGroup> {
3740        &mut self.session_groups
3741    }
3742
3743    // Take field
3744    pub fn take_session_groups(&mut self) -> ::protobuf::RepeatedField<SessionGroup> {
3745        ::std::mem::replace(&mut self.session_groups, ::protobuf::RepeatedField::new())
3746    }
3747
3748    // int32 total_size = 3;
3749
3750
3751    pub fn get_total_size(&self) -> i32 {
3752        self.total_size
3753    }
3754    pub fn clear_total_size(&mut self) {
3755        self.total_size = 0;
3756    }
3757
3758    // Param is passed by value, moved
3759    pub fn set_total_size(&mut self, v: i32) {
3760        self.total_size = v;
3761    }
3762}
3763
3764impl ::protobuf::Message for ListSessionGroupsResponse {
3765    fn is_initialized(&self) -> bool {
3766        for v in &self.session_groups {
3767            if !v.is_initialized() {
3768                return false;
3769            }
3770        };
3771        true
3772    }
3773
3774    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3775        while !is.eof()? {
3776            let (field_number, wire_type) = is.read_tag_unpack()?;
3777            match field_number {
3778                1 => {
3779                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.session_groups)?;
3780                },
3781                3 => {
3782                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3783                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3784                    }
3785                    let tmp = is.read_int32()?;
3786                    self.total_size = tmp;
3787                },
3788                _ => {
3789                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3790                },
3791            };
3792        }
3793        ::std::result::Result::Ok(())
3794    }
3795
3796    // Compute sizes of nested messages
3797    #[allow(unused_variables)]
3798    fn compute_size(&self) -> u32 {
3799        let mut my_size = 0;
3800        for value in &self.session_groups {
3801            let len = value.compute_size();
3802            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3803        };
3804        if self.total_size != 0 {
3805            my_size += ::protobuf::rt::value_size(3, self.total_size, ::protobuf::wire_format::WireTypeVarint);
3806        }
3807        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3808        self.cached_size.set(my_size);
3809        my_size
3810    }
3811
3812    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3813        for v in &self.session_groups {
3814            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3815            os.write_raw_varint32(v.get_cached_size())?;
3816            v.write_to_with_cached_sizes(os)?;
3817        };
3818        if self.total_size != 0 {
3819            os.write_int32(3, self.total_size)?;
3820        }
3821        os.write_unknown_fields(self.get_unknown_fields())?;
3822        ::std::result::Result::Ok(())
3823    }
3824
3825    fn get_cached_size(&self) -> u32 {
3826        self.cached_size.get()
3827    }
3828
3829    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3830        &self.unknown_fields
3831    }
3832
3833    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3834        &mut self.unknown_fields
3835    }
3836
3837    fn as_any(&self) -> &dyn (::std::any::Any) {
3838        self as &dyn (::std::any::Any)
3839    }
3840    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3841        self as &mut dyn (::std::any::Any)
3842    }
3843    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3844        self
3845    }
3846
3847    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3848        Self::descriptor_static()
3849    }
3850
3851    fn new() -> ListSessionGroupsResponse {
3852        ListSessionGroupsResponse::new()
3853    }
3854
3855    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3856        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3857        descriptor.get(|| {
3858            let mut fields = ::std::vec::Vec::new();
3859            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<SessionGroup>>(
3860                "session_groups",
3861                |m: &ListSessionGroupsResponse| { &m.session_groups },
3862                |m: &mut ListSessionGroupsResponse| { &mut m.session_groups },
3863            ));
3864            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3865                "total_size",
3866                |m: &ListSessionGroupsResponse| { &m.total_size },
3867                |m: &mut ListSessionGroupsResponse| { &mut m.total_size },
3868            ));
3869            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ListSessionGroupsResponse>(
3870                "ListSessionGroupsResponse",
3871                fields,
3872                file_descriptor_proto()
3873            )
3874        })
3875    }
3876
3877    fn default_instance() -> &'static ListSessionGroupsResponse {
3878        static instance: ::protobuf::rt::LazyV2<ListSessionGroupsResponse> = ::protobuf::rt::LazyV2::INIT;
3879        instance.get(ListSessionGroupsResponse::new)
3880    }
3881}
3882
3883impl ::protobuf::Clear for ListSessionGroupsResponse {
3884    fn clear(&mut self) {
3885        self.session_groups.clear();
3886        self.total_size = 0;
3887        self.unknown_fields.clear();
3888    }
3889}
3890
3891impl ::std::fmt::Debug for ListSessionGroupsResponse {
3892    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3893        ::protobuf::text_format::fmt(self, f)
3894    }
3895}
3896
3897impl ::protobuf::reflect::ProtobufValue for ListSessionGroupsResponse {
3898    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3899        ::protobuf::reflect::ReflectValueRef::Message(self)
3900    }
3901}
3902
3903#[derive(PartialEq,Clone,Default)]
3904pub struct ListMetricEvalsRequest {
3905    // message fields
3906    pub experiment_name: ::std::string::String,
3907    pub session_name: ::std::string::String,
3908    pub metric_name: ::protobuf::SingularPtrField<MetricName>,
3909    // special fields
3910    pub unknown_fields: ::protobuf::UnknownFields,
3911    pub cached_size: ::protobuf::CachedSize,
3912}
3913
3914impl<'a> ::std::default::Default for &'a ListMetricEvalsRequest {
3915    fn default() -> &'a ListMetricEvalsRequest {
3916        <ListMetricEvalsRequest as ::protobuf::Message>::default_instance()
3917    }
3918}
3919
3920impl ListMetricEvalsRequest {
3921    pub fn new() -> ListMetricEvalsRequest {
3922        ::std::default::Default::default()
3923    }
3924
3925    // string experiment_name = 3;
3926
3927
3928    pub fn get_experiment_name(&self) -> &str {
3929        &self.experiment_name
3930    }
3931    pub fn clear_experiment_name(&mut self) {
3932        self.experiment_name.clear();
3933    }
3934
3935    // Param is passed by value, moved
3936    pub fn set_experiment_name(&mut self, v: ::std::string::String) {
3937        self.experiment_name = v;
3938    }
3939
3940    // Mutable pointer to the field.
3941    // If field is not initialized, it is initialized with default value first.
3942    pub fn mut_experiment_name(&mut self) -> &mut ::std::string::String {
3943        &mut self.experiment_name
3944    }
3945
3946    // Take field
3947    pub fn take_experiment_name(&mut self) -> ::std::string::String {
3948        ::std::mem::replace(&mut self.experiment_name, ::std::string::String::new())
3949    }
3950
3951    // string session_name = 1;
3952
3953
3954    pub fn get_session_name(&self) -> &str {
3955        &self.session_name
3956    }
3957    pub fn clear_session_name(&mut self) {
3958        self.session_name.clear();
3959    }
3960
3961    // Param is passed by value, moved
3962    pub fn set_session_name(&mut self, v: ::std::string::String) {
3963        self.session_name = v;
3964    }
3965
3966    // Mutable pointer to the field.
3967    // If field is not initialized, it is initialized with default value first.
3968    pub fn mut_session_name(&mut self) -> &mut ::std::string::String {
3969        &mut self.session_name
3970    }
3971
3972    // Take field
3973    pub fn take_session_name(&mut self) -> ::std::string::String {
3974        ::std::mem::replace(&mut self.session_name, ::std::string::String::new())
3975    }
3976
3977    // .tensorboardrs.hparam.MetricName metric_name = 2;
3978
3979
3980    pub fn get_metric_name(&self) -> &MetricName {
3981        self.metric_name.as_ref().unwrap_or_else(|| <MetricName as ::protobuf::Message>::default_instance())
3982    }
3983    pub fn clear_metric_name(&mut self) {
3984        self.metric_name.clear();
3985    }
3986
3987    pub fn has_metric_name(&self) -> bool {
3988        self.metric_name.is_some()
3989    }
3990
3991    // Param is passed by value, moved
3992    pub fn set_metric_name(&mut self, v: MetricName) {
3993        self.metric_name = ::protobuf::SingularPtrField::some(v);
3994    }
3995
3996    // Mutable pointer to the field.
3997    // If field is not initialized, it is initialized with default value first.
3998    pub fn mut_metric_name(&mut self) -> &mut MetricName {
3999        if self.metric_name.is_none() {
4000            self.metric_name.set_default();
4001        }
4002        self.metric_name.as_mut().unwrap()
4003    }
4004
4005    // Take field
4006    pub fn take_metric_name(&mut self) -> MetricName {
4007        self.metric_name.take().unwrap_or_else(|| MetricName::new())
4008    }
4009}
4010
4011impl ::protobuf::Message for ListMetricEvalsRequest {
4012    fn is_initialized(&self) -> bool {
4013        for v in &self.metric_name {
4014            if !v.is_initialized() {
4015                return false;
4016            }
4017        };
4018        true
4019    }
4020
4021    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4022        while !is.eof()? {
4023            let (field_number, wire_type) = is.read_tag_unpack()?;
4024            match field_number {
4025                3 => {
4026                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.experiment_name)?;
4027                },
4028                1 => {
4029                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session_name)?;
4030                },
4031                2 => {
4032                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.metric_name)?;
4033                },
4034                _ => {
4035                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4036                },
4037            };
4038        }
4039        ::std::result::Result::Ok(())
4040    }
4041
4042    // Compute sizes of nested messages
4043    #[allow(unused_variables)]
4044    fn compute_size(&self) -> u32 {
4045        let mut my_size = 0;
4046        if !self.experiment_name.is_empty() {
4047            my_size += ::protobuf::rt::string_size(3, &self.experiment_name);
4048        }
4049        if !self.session_name.is_empty() {
4050            my_size += ::protobuf::rt::string_size(1, &self.session_name);
4051        }
4052        if let Some(ref v) = self.metric_name.as_ref() {
4053            let len = v.compute_size();
4054            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4055        }
4056        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4057        self.cached_size.set(my_size);
4058        my_size
4059    }
4060
4061    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4062        if !self.experiment_name.is_empty() {
4063            os.write_string(3, &self.experiment_name)?;
4064        }
4065        if !self.session_name.is_empty() {
4066            os.write_string(1, &self.session_name)?;
4067        }
4068        if let Some(ref v) = self.metric_name.as_ref() {
4069            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4070            os.write_raw_varint32(v.get_cached_size())?;
4071            v.write_to_with_cached_sizes(os)?;
4072        }
4073        os.write_unknown_fields(self.get_unknown_fields())?;
4074        ::std::result::Result::Ok(())
4075    }
4076
4077    fn get_cached_size(&self) -> u32 {
4078        self.cached_size.get()
4079    }
4080
4081    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4082        &self.unknown_fields
4083    }
4084
4085    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4086        &mut self.unknown_fields
4087    }
4088
4089    fn as_any(&self) -> &dyn (::std::any::Any) {
4090        self as &dyn (::std::any::Any)
4091    }
4092    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4093        self as &mut dyn (::std::any::Any)
4094    }
4095    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4096        self
4097    }
4098
4099    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4100        Self::descriptor_static()
4101    }
4102
4103    fn new() -> ListMetricEvalsRequest {
4104        ListMetricEvalsRequest::new()
4105    }
4106
4107    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4108        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
4109        descriptor.get(|| {
4110            let mut fields = ::std::vec::Vec::new();
4111            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4112                "experiment_name",
4113                |m: &ListMetricEvalsRequest| { &m.experiment_name },
4114                |m: &mut ListMetricEvalsRequest| { &mut m.experiment_name },
4115            ));
4116            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4117                "session_name",
4118                |m: &ListMetricEvalsRequest| { &m.session_name },
4119                |m: &mut ListMetricEvalsRequest| { &mut m.session_name },
4120            ));
4121            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MetricName>>(
4122                "metric_name",
4123                |m: &ListMetricEvalsRequest| { &m.metric_name },
4124                |m: &mut ListMetricEvalsRequest| { &mut m.metric_name },
4125            ));
4126            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ListMetricEvalsRequest>(
4127                "ListMetricEvalsRequest",
4128                fields,
4129                file_descriptor_proto()
4130            )
4131        })
4132    }
4133
4134    fn default_instance() -> &'static ListMetricEvalsRequest {
4135        static instance: ::protobuf::rt::LazyV2<ListMetricEvalsRequest> = ::protobuf::rt::LazyV2::INIT;
4136        instance.get(ListMetricEvalsRequest::new)
4137    }
4138}
4139
4140impl ::protobuf::Clear for ListMetricEvalsRequest {
4141    fn clear(&mut self) {
4142        self.experiment_name.clear();
4143        self.session_name.clear();
4144        self.metric_name.clear();
4145        self.unknown_fields.clear();
4146    }
4147}
4148
4149impl ::std::fmt::Debug for ListMetricEvalsRequest {
4150    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4151        ::protobuf::text_format::fmt(self, f)
4152    }
4153}
4154
4155impl ::protobuf::reflect::ProtobufValue for ListMetricEvalsRequest {
4156    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4157        ::protobuf::reflect::ReflectValueRef::Message(self)
4158    }
4159}
4160
4161#[derive(Clone,PartialEq,Eq,Debug,Hash)]
4162pub enum DataType {
4163    DATA_TYPE_UNSET = 0,
4164    DATA_TYPE_STRING = 1,
4165    DATA_TYPE_BOOL = 2,
4166    DATA_TYPE_FLOAT64 = 3,
4167}
4168
4169impl ::protobuf::ProtobufEnum for DataType {
4170    fn value(&self) -> i32 {
4171        *self as i32
4172    }
4173
4174    fn from_i32(value: i32) -> ::std::option::Option<DataType> {
4175        match value {
4176            0 => ::std::option::Option::Some(DataType::DATA_TYPE_UNSET),
4177            1 => ::std::option::Option::Some(DataType::DATA_TYPE_STRING),
4178            2 => ::std::option::Option::Some(DataType::DATA_TYPE_BOOL),
4179            3 => ::std::option::Option::Some(DataType::DATA_TYPE_FLOAT64),
4180            _ => ::std::option::Option::None
4181        }
4182    }
4183
4184    fn values() -> &'static [Self] {
4185        static values: &'static [DataType] = &[
4186            DataType::DATA_TYPE_UNSET,
4187            DataType::DATA_TYPE_STRING,
4188            DataType::DATA_TYPE_BOOL,
4189            DataType::DATA_TYPE_FLOAT64,
4190        ];
4191        values
4192    }
4193
4194    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
4195        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
4196        descriptor.get(|| {
4197            ::protobuf::reflect::EnumDescriptor::new_pb_name::<DataType>("DataType", file_descriptor_proto())
4198        })
4199    }
4200}
4201
4202impl ::std::marker::Copy for DataType {
4203}
4204
4205impl ::std::default::Default for DataType {
4206    fn default() -> Self {
4207        DataType::DATA_TYPE_UNSET
4208    }
4209}
4210
4211impl ::protobuf::reflect::ProtobufValue for DataType {
4212    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4213        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
4214    }
4215}
4216
4217#[derive(Clone,PartialEq,Eq,Debug,Hash)]
4218pub enum DatasetType {
4219    DATASET_UNKNOWN = 0,
4220    DATASET_TRAINING = 1,
4221    DATASET_VALIDATION = 2,
4222}
4223
4224impl ::protobuf::ProtobufEnum for DatasetType {
4225    fn value(&self) -> i32 {
4226        *self as i32
4227    }
4228
4229    fn from_i32(value: i32) -> ::std::option::Option<DatasetType> {
4230        match value {
4231            0 => ::std::option::Option::Some(DatasetType::DATASET_UNKNOWN),
4232            1 => ::std::option::Option::Some(DatasetType::DATASET_TRAINING),
4233            2 => ::std::option::Option::Some(DatasetType::DATASET_VALIDATION),
4234            _ => ::std::option::Option::None
4235        }
4236    }
4237
4238    fn values() -> &'static [Self] {
4239        static values: &'static [DatasetType] = &[
4240            DatasetType::DATASET_UNKNOWN,
4241            DatasetType::DATASET_TRAINING,
4242            DatasetType::DATASET_VALIDATION,
4243        ];
4244        values
4245    }
4246
4247    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
4248        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
4249        descriptor.get(|| {
4250            ::protobuf::reflect::EnumDescriptor::new_pb_name::<DatasetType>("DatasetType", file_descriptor_proto())
4251        })
4252    }
4253}
4254
4255impl ::std::marker::Copy for DatasetType {
4256}
4257
4258impl ::std::default::Default for DatasetType {
4259    fn default() -> Self {
4260        DatasetType::DATASET_UNKNOWN
4261    }
4262}
4263
4264impl ::protobuf::reflect::ProtobufValue for DatasetType {
4265    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4266        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
4267    }
4268}
4269
4270#[derive(Clone,PartialEq,Eq,Debug,Hash)]
4271pub enum Status {
4272    STATUS_UNKNOWN = 0,
4273    STATUS_SUCCESS = 1,
4274    STATUS_FAILURE = 2,
4275    STATUS_RUNNING = 3,
4276}
4277
4278impl ::protobuf::ProtobufEnum for Status {
4279    fn value(&self) -> i32 {
4280        *self as i32
4281    }
4282
4283    fn from_i32(value: i32) -> ::std::option::Option<Status> {
4284        match value {
4285            0 => ::std::option::Option::Some(Status::STATUS_UNKNOWN),
4286            1 => ::std::option::Option::Some(Status::STATUS_SUCCESS),
4287            2 => ::std::option::Option::Some(Status::STATUS_FAILURE),
4288            3 => ::std::option::Option::Some(Status::STATUS_RUNNING),
4289            _ => ::std::option::Option::None
4290        }
4291    }
4292
4293    fn values() -> &'static [Self] {
4294        static values: &'static [Status] = &[
4295            Status::STATUS_UNKNOWN,
4296            Status::STATUS_SUCCESS,
4297            Status::STATUS_FAILURE,
4298            Status::STATUS_RUNNING,
4299        ];
4300        values
4301    }
4302
4303    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
4304        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
4305        descriptor.get(|| {
4306            ::protobuf::reflect::EnumDescriptor::new_pb_name::<Status>("Status", file_descriptor_proto())
4307        })
4308    }
4309}
4310
4311impl ::std::marker::Copy for Status {
4312}
4313
4314impl ::std::default::Default for Status {
4315    fn default() -> Self {
4316        Status::STATUS_UNKNOWN
4317    }
4318}
4319
4320impl ::protobuf::reflect::ProtobufValue for Status {
4321    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4322        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
4323    }
4324}
4325
4326#[derive(Clone,PartialEq,Eq,Debug,Hash)]
4327pub enum SortOrder {
4328    ORDER_UNSPECIFIED = 0,
4329    ORDER_ASC = 1,
4330    ORDER_DESC = 2,
4331}
4332
4333impl ::protobuf::ProtobufEnum for SortOrder {
4334    fn value(&self) -> i32 {
4335        *self as i32
4336    }
4337
4338    fn from_i32(value: i32) -> ::std::option::Option<SortOrder> {
4339        match value {
4340            0 => ::std::option::Option::Some(SortOrder::ORDER_UNSPECIFIED),
4341            1 => ::std::option::Option::Some(SortOrder::ORDER_ASC),
4342            2 => ::std::option::Option::Some(SortOrder::ORDER_DESC),
4343            _ => ::std::option::Option::None
4344        }
4345    }
4346
4347    fn values() -> &'static [Self] {
4348        static values: &'static [SortOrder] = &[
4349            SortOrder::ORDER_UNSPECIFIED,
4350            SortOrder::ORDER_ASC,
4351            SortOrder::ORDER_DESC,
4352        ];
4353        values
4354    }
4355
4356    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
4357        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
4358        descriptor.get(|| {
4359            ::protobuf::reflect::EnumDescriptor::new_pb_name::<SortOrder>("SortOrder", file_descriptor_proto())
4360        })
4361    }
4362}
4363
4364impl ::std::marker::Copy for SortOrder {
4365}
4366
4367impl ::std::default::Default for SortOrder {
4368    fn default() -> Self {
4369        SortOrder::ORDER_UNSPECIFIED
4370    }
4371}
4372
4373impl ::protobuf::reflect::ProtobufValue for SortOrder {
4374    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4375        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
4376    }
4377}
4378
4379#[derive(Clone,PartialEq,Eq,Debug,Hash)]
4380pub enum AggregationType {
4381    AGGREGATION_UNSET = 0,
4382    AGGREGATION_AVG = 1,
4383    AGGREGATION_MEDIAN = 2,
4384    AGGREGATION_MIN = 3,
4385    AGGREGATION_MAX = 4,
4386}
4387
4388impl ::protobuf::ProtobufEnum for AggregationType {
4389    fn value(&self) -> i32 {
4390        *self as i32
4391    }
4392
4393    fn from_i32(value: i32) -> ::std::option::Option<AggregationType> {
4394        match value {
4395            0 => ::std::option::Option::Some(AggregationType::AGGREGATION_UNSET),
4396            1 => ::std::option::Option::Some(AggregationType::AGGREGATION_AVG),
4397            2 => ::std::option::Option::Some(AggregationType::AGGREGATION_MEDIAN),
4398            3 => ::std::option::Option::Some(AggregationType::AGGREGATION_MIN),
4399            4 => ::std::option::Option::Some(AggregationType::AGGREGATION_MAX),
4400            _ => ::std::option::Option::None
4401        }
4402    }
4403
4404    fn values() -> &'static [Self] {
4405        static values: &'static [AggregationType] = &[
4406            AggregationType::AGGREGATION_UNSET,
4407            AggregationType::AGGREGATION_AVG,
4408            AggregationType::AGGREGATION_MEDIAN,
4409            AggregationType::AGGREGATION_MIN,
4410            AggregationType::AGGREGATION_MAX,
4411        ];
4412        values
4413    }
4414
4415    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
4416        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
4417        descriptor.get(|| {
4418            ::protobuf::reflect::EnumDescriptor::new_pb_name::<AggregationType>("AggregationType", file_descriptor_proto())
4419        })
4420    }
4421}
4422
4423impl ::std::marker::Copy for AggregationType {
4424}
4425
4426impl ::std::default::Default for AggregationType {
4427    fn default() -> Self {
4428        AggregationType::AGGREGATION_UNSET
4429    }
4430}
4431
4432impl ::protobuf::reflect::ProtobufValue for AggregationType {
4433    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4434        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
4435    }
4436}
4437
4438static file_descriptor_proto_data: &'static [u8] = b"\
4439    \n\rsrc/api.proto\x12\x14tensorboardrs.hparam\x1a\x1cgoogle/protobuf/str\
4440    uct.proto\"\x8c\x02\n\nExperiment\x12\x12\n\x04name\x18\x06\x20\x01(\tR\
4441    \x04name\x12\x20\n\x0bdescription\x18\x01\x20\x01(\tR\x0bdescription\x12\
4442    \x12\n\x04user\x18\x02\x20\x01(\tR\x04user\x12*\n\x11time_created_secs\
4443    \x18\x03\x20\x01(\x01R\x0ftimeCreatedSecs\x12C\n\x0chparam_infos\x18\x04\
4444    \x20\x03(\x0b2\x20.tensorboardrs.hparam.HParamInfoR\x0bhparamInfos\x12C\
4445    \n\x0cmetric_infos\x18\x05\x20\x03(\x0b2\x20.tensorboardrs.hparam.Metric\
4446    InfoR\x0bmetricInfos\"\xb5\x02\n\nHParamInfo\x12\x12\n\x04name\x18\x01\
4447    \x20\x01(\tR\x04name\x12!\n\x0cdisplay_name\x18\x02\x20\x01(\tR\x0bdispl\
4448    ayName\x12\x20\n\x0bdescription\x18\x03\x20\x01(\tR\x0bdescription\x122\
4449    \n\x04type\x18\x04\x20\x01(\x0e2\x1e.tensorboardrs.hparam.DataTypeR\x04t\
4450    ype\x12E\n\x0fdomain_discrete\x18\x05\x20\x01(\x0b2\x1a.google.protobuf.\
4451    ListValueH\0R\x0edomainDiscrete\x12I\n\x0fdomain_interval\x18\x06\x20\
4452    \x01(\x0b2\x1e.tensorboardrs.hparam.IntervalH\0R\x0edomainIntervalB\x08\
4453    \n\x06domain\"D\n\x08Interval\x12\x1b\n\tmin_value\x18\x01\x20\x01(\x01R\
4454    \x08minValue\x12\x1b\n\tmax_value\x18\x02\x20\x01(\x01R\x08maxValue\"4\n\
4455    \nMetricName\x12\x14\n\x05group\x18\x01\x20\x01(\tR\x05group\x12\x10\n\
4456    \x03tag\x18\x02\x20\x01(\tR\x03tag\"\xcd\x01\n\nMetricInfo\x124\n\x04nam\
4457    e\x18\x01\x20\x01(\x0b2\x20.tensorboardrs.hparam.MetricNameR\x04name\x12\
4458    !\n\x0cdisplay_name\x18\x03\x20\x01(\tR\x0bdisplayName\x12\x20\n\x0bdesc\
4459    ription\x18\x04\x20\x01(\tR\x0bdescription\x12D\n\x0cdataset_type\x18\
4460    \x05\x20\x01(\x0e2!.tensorboardrs.hparam.DatasetTypeR\x0bdatasetType\"\
4461    \xe5\x02\n\x0cSessionGroup\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\
4462    \x12I\n\x07hparams\x18\x02\x20\x03(\x0b2/.tensorboardrs.hparam.SessionGr\
4463    oup.HparamsEntryR\x07hparams\x12F\n\rmetric_values\x18\x03\x20\x03(\x0b2\
4464    !.tensorboardrs.hparam.MetricValueR\x0cmetricValues\x129\n\x08sessions\
4465    \x18\x04\x20\x03(\x0b2\x1d.tensorboardrs.hparam.SessionR\x08sessions\x12\
4466    \x1f\n\x0bmonitor_url\x18\x05\x20\x01(\tR\nmonitorUrl\x1aR\n\x0cHparamsE\
4467    ntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12,\n\x05value\x18\x02\
4468    \x20\x01(\x0b2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xa4\x01\n\
4469    \x0bMetricValue\x124\n\x04name\x18\x01\x20\x01(\x0b2\x20.tensorboardrs.h\
4470    param.MetricNameR\x04name\x12\x14\n\x05value\x18\x02\x20\x01(\x01R\x05va\
4471    lue\x12#\n\rtraining_step\x18\x03\x20\x01(\x05R\x0ctrainingStep\x12$\n\
4472    \x0ewall_time_secs\x18\x04\x20\x01(\x01R\x0cwallTimeSecs\"\xa5\x02\n\x07\
4473    Session\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12&\n\x0fstart_ti\
4474    me_secs\x18\x02\x20\x01(\x01R\rstartTimeSecs\x12\"\n\rend_time_secs\x18\
4475    \x03\x20\x01(\x01R\x0bendTimeSecs\x124\n\x06status\x18\x04\x20\x01(\x0e2\
4476    \x1c.tensorboardrs.hparam.StatusR\x06status\x12\x1b\n\tmodel_uri\x18\x05\
4477    \x20\x01(\tR\x08modelUri\x12F\n\rmetric_values\x18\x06\x20\x03(\x0b2!.te\
4478    nsorboardrs.hparam.MetricValueR\x0cmetricValues\x12\x1f\n\x0bmonitor_url\
4479    \x18\x07\x20\x01(\tR\nmonitorUrl\"?\n\x14GetExperimentRequest\x12'\n\x0f\
4480    experiment_name\x18\x01\x20\x01(\tR\x0eexperimentName\"\xaf\x03\n\x18Lis\
4481    tSessionGroupsRequest\x12'\n\x0fexperiment_name\x18\x06\x20\x01(\tR\x0ee\
4482    xperimentName\x12G\n\x10allowed_statuses\x18\x07\x20\x03(\x0e2\x1c.tenso\
4483    rboardrs.hparam.StatusR\x0fallowedStatuses\x12>\n\ncol_params\x18\x01\
4484    \x20\x03(\x0b2\x1f.tensorboardrs.hparam.ColParamsR\tcolParams\x12P\n\x10\
4485    aggregation_type\x18\x02\x20\x01(\x0e2%.tensorboardrs.hparam.Aggregation\
4486    TypeR\x0faggregationType\x12O\n\x12aggregation_metric\x18\x03\x20\x01(\
4487    \x0b2\x20.tensorboardrs.hparam.MetricNameR\x11aggregationMetric\x12\x1f\
4488    \n\x0bstart_index\x18\x04\x20\x01(\x05R\nstartIndex\x12\x1d\n\nslice_siz\
4489    e\x18\x05\x20\x01(\x05R\tsliceSize\"\xcb\x03\n\tColParams\x12:\n\x06metr\
4490    ic\x18\x01\x20\x01(\x0b2\x20.tensorboardrs.hparam.MetricNameH\0R\x06metr\
4491    ic\x12\x18\n\x06hparam\x18\x02\x20\x01(\tH\0R\x06hparam\x125\n\x05order\
4492    \x18\x03\x20\x01(\x0e2\x1f.tensorboardrs.hparam.SortOrderR\x05order\x120\
4493    \n\x14missing_values_first\x18\x04\x20\x01(\x08R\x12missingValuesFirst\
4494    \x12%\n\rfilter_regexp\x18\x05\x20\x01(\tH\x01R\x0cfilterRegexp\x12I\n\
4495    \x0ffilter_interval\x18\x06\x20\x01(\x0b2\x1e.tensorboardrs.hparam.Inter\
4496    valH\x01R\x0efilterInterval\x12E\n\x0ffilter_discrete\x18\x07\x20\x01(\
4497    \x0b2\x1a.google.protobuf.ListValueH\x01R\x0efilterDiscrete\x124\n\x16ex\
4498    clude_missing_values\x18\x08\x20\x01(\x08R\x14excludeMissingValuesB\x06\
4499    \n\x04nameB\x08\n\x06filter\"\x85\x01\n\x19ListSessionGroupsResponse\x12\
4500    I\n\x0esession_groups\x18\x01\x20\x03(\x0b2\".tensorboardrs.hparam.Sessi\
4501    onGroupR\rsessionGroups\x12\x1d\n\ntotal_size\x18\x03\x20\x01(\x05R\ttot\
4502    alSize\"\xa7\x01\n\x16ListMetricEvalsRequest\x12'\n\x0fexperiment_name\
4503    \x18\x03\x20\x01(\tR\x0eexperimentName\x12!\n\x0csession_name\x18\x01\
4504    \x20\x01(\tR\x0bsessionName\x12A\n\x0bmetric_name\x18\x02\x20\x01(\x0b2\
4505    \x20.tensorboardrs.hparam.MetricNameR\nmetricName*`\n\x08DataType\x12\
4506    \x13\n\x0fDATA_TYPE_UNSET\x10\0\x12\x14\n\x10DATA_TYPE_STRING\x10\x01\
4507    \x12\x12\n\x0eDATA_TYPE_BOOL\x10\x02\x12\x15\n\x11DATA_TYPE_FLOAT64\x10\
4508    \x03*P\n\x0bDatasetType\x12\x13\n\x0fDATASET_UNKNOWN\x10\0\x12\x14\n\x10\
4509    DATASET_TRAINING\x10\x01\x12\x16\n\x12DATASET_VALIDATION\x10\x02*X\n\x06\
4510    Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\0\x12\x12\n\x0eSTATUS_SUCCESS\x10\
4511    \x01\x12\x12\n\x0eSTATUS_FAILURE\x10\x02\x12\x12\n\x0eSTATUS_RUNNING\x10\
4512    \x03*A\n\tSortOrder\x12\x15\n\x11ORDER_UNSPECIFIED\x10\0\x12\r\n\tORDER_\
4513    ASC\x10\x01\x12\x0e\n\nORDER_DESC\x10\x02*\x7f\n\x0fAggregationType\x12\
4514    \x15\n\x11AGGREGATION_UNSET\x10\0\x12\x13\n\x0fAGGREGATION_AVG\x10\x01\
4515    \x12\x16\n\x12AGGREGATION_MEDIAN\x10\x02\x12\x13\n\x0fAGGREGATION_MIN\
4516    \x10\x03\x12\x13\n\x0fAGGREGATION_MAX\x10\x04J\xc3\x84\x01\n\x07\x12\x05\
4517    \x1e\0\x8f\x03\x01\n\x95\x0b\n\x01\x0c\x12\x03\x1e\0\x122\x94\x05\x20Cop\
4518    yright\x202019\x20The\x20TensorFlow\x20Authors.\x20All\x20Rights\x20Rese\
4519    rved.\n\nLicensed\x20under\x20the\x20Apache\x20License,\x20Version\x202.\
4520    0\x20(the\x20\"License\");\nyou\x20may\x20not\x20use\x20this\x20file\x20\
4521    except\x20in\x20compliance\x20with\x20the\x20License.\nYou\x20may\x20obt\
4522    ain\x20a\x20copy\x20of\x20the\x20License\x20at\n\nhttp://www.apache.org/\
4523    licenses/LICENSE-2.0\n\nUnless\x20required\x20by\x20applicable\x20law\
4524    \x20or\x20agreed\x20to\x20in\x20writing,\x20software\ndistributed\x20und\
4525    er\x20the\x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\
4526    \x20BASIS,\nWITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KI\
4527    ND,\x20either\x20express\x20or\x20implied.\nSee\x20the\x20License\x20for\
4528    \x20the\x20specific\x20language\x20governing\x20permissions\x20and\nlimi\
4529    tations\x20under\x20the\x20License.\n===================================\
4530    ===========================================2\xfd\x02\x20Defines\x20a\x20\
4531    proto3-based\x20REST\x20API\x20that\x20the\x20HParams\x20web-component\
4532    \x20of\x20the\x20plugin\n\x20would\x20use\x20to\x20read\x20data\x20from\
4533    \x20a\x20hyperparameter-tuning\x20experiment.\n\x20This\x20file\x20defin\
4534    es\x20the\x20message\x20types\x20(resources)\x20used\n\x20to\x20pass\x20\
4535    information\x20into\x20and\x20out\x20of\x20the\x20API\x20methods.\x20The\
4536    se\x20messages\x20will\x20be\n\x20transmitted\x20using\x20proto3\x20nati\
4537    ve\x20JSON\x20encoding.\x20See\x20http_api.md\x20for\x20a\n\x20descripti\
4538    on\x20of\x20the\x20actual\x20HTTP\x20API.\n2\x8d\x02\x20General\x20note:\
4539    \x20in\x20what\x20follows\x20we\x20use\x20the\x20field\x20'name'\x20of\
4540    \x20a\x20message\x20to\n\x20stores\x20its\x20id.\x20We\x20avoid\x20calli\
4541    ng\x20this\x20field\x20'id'\x20since\x20it\x20is\x20a\x20reserved\x20wor\
4542    d\n\x20in\x20Python,\x20as\x20well\x20as\x20to\x20be\x20more\x20complian\
4543    t\x20with\x20the\x20API\x20style\x20guide\n\x20detailed\x20in\x20https:/\
4544    /cloud.google.com/apis/design/.\n2d\x20IMPORTANT:\x20If\x20you\x20change\
4545    \x20any\x20of\x20the\x20messages\x20here,\x20make\x20sure\x20to\x20also\
4546    \x20update\n\x20api.d.ts\x20accordingly.\n\n\t\n\x02\x03\0\x12\x03\x20\0\
4547    &\n\x08\n\x01\x02\x12\x03\"\0\x1d\n\x8d\x06\n\x02\x04\0\x12\x042\0E\x01\
4548    \x1a\x80\x06\x20Represents\x20a\x20single\x20experiment.\n\x20An\x20expe\
4549    riment\x20consists\x20of\x20multiple\x20\"sessions\".\x20Typically,\x20i\
4550    n\x20each\x20session\n\x20a\x20model\x20is\x20trained\x20for\x20a\x20giv\
4551    en\x20set\x20of\x20hyperparameter\x20values.\x20In\x20each\x20session\n\
4552    \x20a\x20training\x20program\x20may\x20generate\x20one\x20or\x20more\x20\
4553    series\x20of\x20real\x20numbers--each\n\x20containing\x20the\x20evaluati\
4554    on\x20of\x20some\x20metric\x20on\x20the\x20model\x20at\x20different\x20t\
4555    raining\n\x20steps.\n\n\x20Note\x20that\x20Sessions\x20can\x20consist\
4556    \x20of\x20multiple\x20Tensorboard\x20\"runs\",\x20since\x20in\n\x20a\x20\
4557    distributed\x20Tensorflow\x20deployment,\x20training\x20can\x20be\x20acc\
4558    omplished\x20using\n\x20several\x20cooporating\x20processes,\x20each\x20\
4559    one\x20emitting\x20Summary\x20data\x20to\x20a\x20different\n\x20log\x20d\
4560    irectory\x20or\x20run.\x20For\x20example,\x20in\x20a\x20single\x20sessio\
4561    n\x20one\x20process\x20could\n\x20periodically\x20compute\x20the\x20loss\
4562    \x20on\x20the\x20validation\x20set,\x20and\x20another\x20could\n\x20comp\
4563    ute\x20the\x20loss\x20on\x20the\x20training\x20set.\n\x20NEXT_TAG:\x207\
4564    \n\n\n\n\x03\x04\0\x01\x12\x032\x08\x12\n\x84\x01\n\x04\x04\0\x02\0\x12\
4565    \x035\x02\x12\x1aw\x20--\x20Experiments\x20are\x20scoped\x20by\x20a\x20g\
4566    lobal\x20name.\n\x20Currently,\x20Tensorboard\x20supports\x20displaying\
4567    \x20data\x20for\x20a\x20single\x20experiment.\n\n\x0c\n\x05\x04\0\x02\0\
4568    \x05\x12\x035\x02\x08\n\x0c\n\x05\x04\0\x02\0\x01\x12\x035\t\r\n\x0c\n\
4569    \x05\x04\0\x02\0\x03\x12\x035\x10\x11\n3\n\x04\x04\0\x02\x01\x12\x038\
4570    \x02\x19\x1a&\x20A\x20description.\x20May\x20contain\x20markdown.\n\n\
4571    \x0c\n\x05\x04\0\x02\x01\x05\x12\x038\x02\x08\n\x0c\n\x05\x04\0\x02\x01\
4572    \x01\x12\x038\t\x14\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x038\x17\x18\n2\n\
4573    \x04\x04\0\x02\x02\x12\x03;\x02\x12\x1a%\x20An\x20id\x20for\x20the\x20ow\
4574    ning\x20user\x20or\x20group.\n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03;\
4575    \x02\x08\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03;\t\r\n\x0c\n\x05\x04\0\
4576    \x02\x02\x03\x12\x03;\x10\x11\nT\n\x04\x04\0\x02\x03\x12\x03>\x02\x1f\
4577    \x1aG\x20The\x20time\x20the\x20experiment\x20was\x20created.\x20In\x20se\
4578    conds\x20since\x20the\x20UNIX\x20epoch.\n\n\x0c\n\x05\x04\0\x02\x03\x05\
4579    \x12\x03>\x02\x08\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03>\t\x1a\n\x0c\n\
4580    \x05\x04\0\x02\x03\x03\x12\x03>\x1d\x1e\nL\n\x04\x04\0\x02\x04\x12\x03A\
4581    \x02'\x1a?\x20Information\x20about\x20each\x20hyperparameter\x20used\x20\
4582    in\x20the\x20experiment.\n\n\x0c\n\x05\x04\0\x02\x04\x04\x12\x03A\x02\n\
4583    \n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03A\x0b\x15\n\x0c\n\x05\x04\0\x02\
4584    \x04\x01\x12\x03A\x16\"\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03A%&\nD\n\
4585    \x04\x04\0\x02\x05\x12\x03D\x02'\x1a7\x20Information\x20about\x20each\
4586    \x20metric\x20used\x20in\x20the\x20experiment.\n\n\x0c\n\x05\x04\0\x02\
4587    \x05\x04\x12\x03D\x02\n\n\x0c\n\x05\x04\0\x02\x05\x06\x12\x03D\x0b\x15\n\
4588    \x0c\n\x05\x04\0\x02\x05\x01\x12\x03D\x16\"\n\x0c\n\x05\x04\0\x02\x05\
4589    \x03\x12\x03D%&\n\x19\n\x02\x04\x01\x12\x04H\0c\x01\x1a\r\x20NEXT_TAG:\
4590    \x207\n\n\n\n\x03\x04\x01\x01\x12\x03H\x08\x12\n,\n\x04\x04\x01\x02\0\
4591    \x12\x03J\x02\x12\x1a\x1f\x20An\x20id\x20for\x20the\x20hyperparameter.\n\
4592    \n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03J\x02\x08\n\x0c\n\x05\x04\x01\x02\
4593    \0\x01\x12\x03J\t\r\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03J\x10\x11\nv\n\
4594    \x04\x04\x01\x02\x01\x12\x03N\x02\x1a\x1ai\x20A\x20string\x20used\x20to\
4595    \x20display\x20the\x20hyperparameter\x20in\x20the\x20UI.\x20If\x20empty,\
4596    \x20the\x20UI\n\x20will\x20display\x20the\x20'name'\x20field.\n\n\x0c\n\
4597    \x05\x04\x01\x02\x01\x05\x12\x03N\x02\x08\n\x0c\n\x05\x04\x01\x02\x01\
4598    \x01\x12\x03N\t\x15\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03N\x18\x19\n3\
4599    \n\x04\x04\x01\x02\x02\x12\x03Q\x02\x19\x1a&\x20A\x20description.\x20May\
4600    \x20contain\x20markdown.\n\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03Q\x02\
4601    \x08\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03Q\t\x14\n\x0c\n\x05\x04\x01\
4602    \x02\x02\x03\x12\x03Q\x17\x18\n4\n\x04\x04\x01\x02\x03\x12\x03T\x02\x14\
4603    \x1a'\x20The\x20data\x20type\x20of\x20this\x20hyperparameter.\n\n\x0c\n\
4604    \x05\x04\x01\x02\x03\x06\x12\x03T\x02\n\n\x0c\n\x05\x04\x01\x02\x03\x01\
4605    \x12\x03T\x0b\x0f\n\x0c\n\x05\x04\x01\x02\x03\x03\x12\x03T\x12\x13\n\xa9\
4606    \x03\n\x04\x04\x01\x08\0\x12\x04\\\x02b\x03\x1a\x9a\x03\x20Specifies\x20\
4607    the\x20set\x20of\x20values\x20this\x20hyperparameter\x20can\x20hold.\x20\
4608    The\x20UI\x20assumes\n\x20every\x20instance\x20of\x20this\x20hyperparame\
4609    ter\x20will\x20hold\x20a\x20value\x20from\x20this\x20set.\x20It\n\x20is\
4610    \x20used\x20by\x20the\x20UI\x20to\x20allow\x20filtering\x20so\x20that\
4611    \x20only\x20session\x20groups\x20(see\n\x20below)\x20whose\x20associated\
4612    \x20hyperparameter\x20value\x20\"passes\"\x20the\x20filter\x20are\n\x20d\
4613    isplayed.\x20If\x20this\x20is\x20not\x20populated,\x20the\x20domain\x20i\
4614    s\x20assumed\x20to\x20be\x20the\n\x20entire\x20domain\x20of\x20the\x20ty\
4615    pe\x20of\x20the\x20hyperparameter.\n\n\x0c\n\x05\x04\x01\x08\0\x01\x12\
4616    \x03\\\x08\x0e\nI\n\x04\x04\x01\x02\x04\x12\x03^\x042\x1a<\x20A\x20discr\
4617    ete\x20set\x20of\x20the\x20values\x20this\x20hyperparameter\x20can\x20ho\
4618    ld.\n\n\x0c\n\x05\x04\x01\x02\x04\x06\x12\x03^\x04\x1d\n\x0c\n\x05\x04\
4619    \x01\x02\x04\x01\x12\x03^\x1e-\n\x0c\n\x05\x04\x01\x02\x04\x03\x12\x03^0\
4620    1\no\n\x04\x04\x01\x02\x05\x12\x03a\x04!\x1ab\x20Numeric\x20data\x20type\
4621    \x20only.\x20The\x20(real)\x20interval\x20from\x20which\x20values\x20of\
4622    \x20this\n\x20hyperparameter\x20are\x20taken.\n\n\x0c\n\x05\x04\x01\x02\
4623    \x05\x06\x12\x03a\x04\x0c\n\x0c\n\x05\x04\x01\x02\x05\x01\x12\x03a\r\x1c\
4624    \n\x0c\n\x05\x04\x01\x02\x05\x03\x12\x03a\x1f\x20\n\n\n\x02\x05\0\x12\
4625    \x04e\0j\x01\n\n\n\x03\x05\0\x01\x12\x03e\x05\r\n\x0b\n\x04\x05\0\x02\0\
4626    \x12\x03f\x02\x16\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03f\x02\x11\n\x0c\n\
4627    \x05\x05\0\x02\0\x02\x12\x03f\x14\x15\n\x0b\n\x04\x05\0\x02\x01\x12\x03g\
4628    \x02\x17\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03g\x02\x12\n\x0c\n\x05\x05\
4629    \0\x02\x01\x02\x12\x03g\x15\x16\n\x0b\n\x04\x05\0\x02\x02\x12\x03h\x02\
4630    \x15\n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03h\x02\x10\n\x0c\n\x05\x05\0\
4631    \x02\x02\x02\x12\x03h\x13\x14\n\x0b\n\x04\x05\0\x02\x03\x12\x03i\x02\x18\
4632    \n\x0c\n\x05\x05\0\x02\x03\x01\x12\x03i\x02\x13\n\x0c\n\x05\x05\0\x02\
4633    \x03\x02\x12\x03i\x16\x17\nb\n\x02\x04\x02\x12\x04n\0q\x01\x1aV\x20Repre\
4634    sents\x20the\x20closed\x20interval\x20[min_value,\x20max_value]\x20of\
4635    \x20the\x20real\x20line.\n\x20NEXT_TAG:\x203\n\n\n\n\x03\x04\x02\x01\x12\
4636    \x03n\x08\x10\n\x0b\n\x04\x04\x02\x02\0\x12\x03o\x02\x17\n\x0c\n\x05\x04\
4637    \x02\x02\0\x05\x12\x03o\x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03o\t\
4638    \x12\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03o\x15\x16\n\x0b\n\x04\x04\x02\
4639    \x02\x01\x12\x03p\x02\x17\n\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03p\x02\
4640    \x08\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03p\t\x12\n\x0c\n\x05\x04\x02\
4641    \x02\x01\x03\x12\x03p\x15\x16\n\x1a\n\x02\x04\x03\x12\x05t\0\x92\x01\x01\
4642    \x1a\r\x20NEXT_TAG:\x203\n\n\n\n\x03\x04\x03\x01\x12\x03t\x08\x12\n\xb0\
4643    \x0c\n\x04\x04\x03\x02\0\x12\x04\x90\x01\x02\x13\x1a\xa1\x0c\x20An\x20id\
4644    entifier\x20for\x20a\x20metric.\x20A\x20metric\x20is\x20a\x20real-valued\
4645    \x20function\x20of\x20the\n\x20model.\x20The\x20UI\x20can\x20plot\x20met\
4646    rics\x20for\x20a\x20session\x20evaluated\x20on\x20the\x20model\x20at\n\
4647    \x20different\x20training\x20steps.\n\n\x20We\x20identify\x20a\x20metric\
4648    \x20by\x20a\x20(group,\x20tag)\x20pair\x20of\x20strings.\x20The\x20UI\
4649    \x20treats\n\x20both\x20of\x20these\x20as\x20opaque\x20strings.\x20The\
4650    \x20only\x20requirement\x20is\x20that\x20the\x20pair\n\x20uniquely\x20id\
4651    entifies\x20a\x20metric\x20in\x20the\x20experiment.\n\n\x20We\x20use\x20\
4652    a\x20pair\x20so\x20the\x20UI\x20could\x20allow\x20the\x20user\x20to\x20g\
4653    roup\x20metrics\x20for\x20a\n\x20single\x20session\x20by\x20either\x20gr\
4654    oup\x20or\x20tag\x20to\x20be\x20displayed\x20in\x20the\x20same\x20chart.\
4655    \n\x20For\x20instance,\x20one\x20can\x20set\x20the\x20metric\x20group\
4656    \x20to\x20correspond\x20to\x20the\x20dataset\n\x20on\x20which\x20the\x20\
4657    model\x20was\x20evaluated,\x20and\x20the\x20UI\x20can\x20then\x20display\
4658    \x20different\n\x20metrics\x20describing\x20the\x20same\x20underlying\
4659    \x20computation\x20and\x20using\x20different\n\x20datasets,\x20on\x20the\
4660    \x20same\x20chart.\n\n\x20When\x20exporting\x20summaries\x20from\x20Tens\
4661    orflow,\x20in\x20a\x20typical\x20setup,\x20a\n\x20training\x20session\
4662    \x20exports\x20evaluations\x20of\x20metrics\x20at\x20different\x20traini\
4663    ng\x20steps\n\x20as\x20Scalar-plugin\x20summaries--each\x20having\x20a\
4664    \x20run\x20of\x20the\x20form\n\x20\"<session_base_log_dir>/<sub_dir>\",\
4665    \x20and\x20some\x20associated\x20tag.\x20The\x20same\n\x20metric\x20for\
4666    \x20different\x20sessions\x20would\x20use\x20the\x20same\x20sub_dir\x20a\
4667    nd\x20tag,\x20but\n\x20would\x20have\x20a\x20different\x20session_base_l\
4668    og_dir.\x20For\x20example,\x20a\x20session\n\x20computing\x20two\x20metr\
4669    ics:\x20model\x20loss\x20on\x20the\x20validation\x20set\x20and\x20model\
4670    \x20loss\x20on\n\x20the\x20training\x20set,\x20can\x20export\x20these\
4671    \x20as\x20scalar\x20summaries\x20with\x20the\x20tag\x20\"loss\"\n\x20and\
4672    \x20runs\x20session_base_log_dir/validation\x20and\x20session_base_log_d\
4673    ir/training,\n\x20respectively.\x20In\x20this\x20setup,\x20the\x20'group\
4674    '\x20field\x20can\x20be\x20populated\x20with\n\x20the\x20\"sub_dir\"\x20\
4675    associated\x20with\x20the\x20metric,\x20and\x20the\x20'tag'\x20field\x20\
4676    can\x20be\n\x20populated\x20with\x20the\x20tag:\x20\"loss\".\n\n\r\n\x05\
4677    \x04\x03\x02\0\x05\x12\x04\x90\x01\x02\x08\n\r\n\x05\x04\x03\x02\0\x01\
4678    \x12\x04\x90\x01\t\x0e\n\r\n\x05\x04\x03\x02\0\x03\x12\x04\x90\x01\x11\
4679    \x12\n\x0c\n\x04\x04\x03\x02\x01\x12\x04\x91\x01\x02\x11\n\r\n\x05\x04\
4680    \x03\x02\x01\x05\x12\x04\x91\x01\x02\x08\n\r\n\x05\x04\x03\x02\x01\x01\
4681    \x12\x04\x91\x01\t\x0c\n\r\n\x05\x04\x03\x02\x01\x03\x12\x04\x91\x01\x0f\
4682    \x10\n\x1b\n\x02\x04\x04\x12\x06\x95\x01\0\xa1\x01\x01\x1a\r\x20NEXT_TAG\
4683    :\x206\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x95\x01\x08\x12\n\x0c\n\x04\x04\
4684    \x04\x02\0\x12\x04\x96\x01\x02\x16\n\r\n\x05\x04\x04\x02\0\x06\x12\x04\
4685    \x96\x01\x02\x0c\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\x96\x01\r\x11\n\r\n\
4686    \x05\x04\x04\x02\0\x03\x12\x04\x96\x01\x14\x15\no\n\x04\x04\x04\x02\x01\
4687    \x12\x04\x9a\x01\x02\x1a\x1aa\x20A\x20string\x20used\x20to\x20display\
4688    \x20the\x20metric\x20in\x20the\x20UI.\x20If\x20empty,\x20the\x20UI\n\x20\
4689    will\x20display\x20the\x20'name'\x20field.\n\n\r\n\x05\x04\x04\x02\x01\
4690    \x05\x12\x04\x9a\x01\x02\x08\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\x9a\
4691    \x01\t\x15\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\x9a\x01\x18\x19\n4\n\
4692    \x04\x04\x04\x02\x02\x12\x04\x9d\x01\x02\x19\x1a&\x20A\x20description.\
4693    \x20May\x20contain\x20markdown.\n\n\r\n\x05\x04\x04\x02\x02\x05\x12\x04\
4694    \x9d\x01\x02\x08\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\x9d\x01\t\x14\n\r\
4695    \n\x05\x04\x04\x02\x02\x03\x12\x04\x9d\x01\x17\x18\nX\n\x04\x04\x04\x02\
4696    \x03\x12\x04\xa0\x01\x02\x1f\x1aJ\x20The\x20dataset\x20type\x20(validati\
4697    on,\x20training)\x20on\x20which\x20the\x20metric\x20is\x20computed.\n\n\
4698    \r\n\x05\x04\x04\x02\x03\x06\x12\x04\xa0\x01\x02\r\n\r\n\x05\x04\x04\x02\
4699    \x03\x01\x12\x04\xa0\x01\x0e\x1a\n\r\n\x05\x04\x04\x02\x03\x03\x12\x04\
4700    \xa0\x01\x1d\x1e\n\x0c\n\x02\x05\x01\x12\x06\xa3\x01\0\xa7\x01\x01\n\x0b\
4701    \n\x03\x05\x01\x01\x12\x04\xa3\x01\x05\x10\n\x0c\n\x04\x05\x01\x02\0\x12\
4702    \x04\xa4\x01\x02\x16\n\r\n\x05\x05\x01\x02\0\x01\x12\x04\xa4\x01\x02\x11\
4703    \n\r\n\x05\x05\x01\x02\0\x02\x12\x04\xa4\x01\x14\x15\n\x0c\n\x04\x05\x01\
4704    \x02\x01\x12\x04\xa5\x01\x02\x17\n\r\n\x05\x05\x01\x02\x01\x01\x12\x04\
4705    \xa5\x01\x02\x12\n\r\n\x05\x05\x01\x02\x01\x02\x12\x04\xa5\x01\x15\x16\n\
4706    \x0c\n\x04\x05\x01\x02\x02\x12\x04\xa6\x01\x02\x19\n\r\n\x05\x05\x01\x02\
4707    \x02\x01\x12\x04\xa6\x01\x02\x14\n\r\n\x05\x05\x01\x02\x02\x02\x12\x04\
4708    \xa6\x01\x17\x18\n\x93\x04\n\x02\x04\x05\x12\x06\xb1\x01\0\xc5\x01\x01\
4709    \x1a\x84\x04\x20In\x20some\x20experiments,\x20the\x20user\x20trains\x20a\
4710    \x20model\x20with\x20the\x20same\x20set\x20of\n\x20hyperparameters\x20mu\
4711    ltiple\x20times\x20to\x20get\x20the\x20distribution\x20of\x20metric\n\
4712    \x20evaluations,\x20when\x20the\x20computation\x20(such\x20as\x20the\x20\
4713    training\x20algorithm,\x20or\x20metric\n\x20evaluation)\x20is\x20non-det\
4714    erministic.\x20To\x20make\x20the\x20UI\x20aware\x20of\x20this,\x20sessio\
4715    ns\n\x20are\x20partitioned\x20into\x20groups:\x20each\x20group\x20consis\
4716    ts\x20of\x20all\x20training\x20sessions\n\x20which\x20share\x20the\x20sa\
4717    me\x20values\x20for\x20the\x20hyperparameters.\x20In\x20experiments\x20w\
4718    ith\x20no\n\x20repeated\x20executions,\x20each\x20group\x20consists\x20o\
4719    f\x20exactly\x20one\x20session.\n\x20NEXT_TAG:\x206\n\n\x0b\n\x03\x04\
4720    \x05\x01\x12\x04\xb1\x01\x08\x14\n\x0c\n\x04\x04\x05\x02\0\x12\x04\xb2\
4721    \x01\x02\x12\n\r\n\x05\x04\x05\x02\0\x05\x12\x04\xb2\x01\x02\x08\n\r\n\
4722    \x05\x04\x05\x02\0\x01\x12\x04\xb2\x01\t\r\n\r\n\x05\x04\x05\x02\0\x03\
4723    \x12\x04\xb2\x01\x10\x11\n\x82\x01\n\x04\x04\x05\x02\x01\x12\x04\xb6\x01\
4724    \x02C\x1at\x20Stores\x20the\x20hyperparameters\x20for\x20sessions\x20wit\
4725    hin\x20this\x20group\x20as\x20a\x20mapping\n\x20from\x20the\x20hyperpara\
4726    meter\x20name\x20to\x20its\x20value.\n\n\r\n\x05\x04\x05\x02\x01\x06\x12\
4727    \x04\xb6\x01\x026\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\xb6\x017>\n\r\n\
4728    \x05\x04\x05\x02\x01\x03\x12\x04\xb6\x01AB\n\x87\x03\n\x04\x04\x05\x02\
4729    \x02\x12\x04\xbe\x01\x02)\x1a\xf8\x02\x20A\x20list\x20of\x20pairs\x20(me\
4730    tric,\x20value)--one\x20for\x20each\x20metric\x20in\x20the\x20experiment\
4731    .\n\x20The\x20value\x20denotes\x20the\x20evaluation\x20of\x20the\x20corr\
4732    esponding\x20metric\x20on\n\x20the\x20model\x20aggregated\x20across\x20t\
4733    he\x20sessions\x20in\x20this\x20group.\x20The\x20exact\x20method\n\x20of\
4734    \x20aggregation\x20is\x20specified\x20in\x20the\x20comments\x20of\x20Lis\
4735    tSessionGroupsRequest.\n\x20Unfortunately,\x20we\x20can't\x20store\x20th\
4736    ese\x20as\x20a\x20map,\x20since\x20proto\x20maps\x20can't\x20have\n\x20m\
4737    essage\x20keys.\n\n\r\n\x05\x04\x05\x02\x02\x04\x12\x04\xbe\x01\x02\n\n\
4738    \r\n\x05\x04\x05\x02\x02\x06\x12\x04\xbe\x01\x0b\x16\n\r\n\x05\x04\x05\
4739    \x02\x02\x01\x12\x04\xbe\x01\x17$\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\
4740    \xbe\x01'(\n5\n\x04\x04\x05\x02\x03\x12\x04\xc1\x01\x02\x20\x1a'\x20The\
4741    \x20sessions\x20belonging\x20to\x20this\x20group.\n\n\r\n\x05\x04\x05\
4742    \x02\x03\x04\x12\x04\xc1\x01\x02\n\n\r\n\x05\x04\x05\x02\x03\x06\x12\x04\
4743    \xc1\x01\x0b\x12\n\r\n\x05\x04\x05\x02\x03\x01\x12\x04\xc1\x01\x13\x1b\n\
4744    \r\n\x05\x04\x05\x02\x03\x03\x12\x04\xc1\x01\x1e\x1f\nL\n\x04\x04\x05\
4745    \x02\x04\x12\x04\xc4\x01\x02\x19\x1a>\x20An\x20optional\x20link\x20to\
4746    \x20a\x20web\x20page\x20monitoring\x20the\x20session\x20group.\n\n\r\n\
4747    \x05\x04\x05\x02\x04\x05\x12\x04\xc4\x01\x02\x08\n\r\n\x05\x04\x05\x02\
4748    \x04\x01\x12\x04\xc4\x01\t\x14\n\r\n\x05\x04\x05\x02\x04\x03\x12\x04\xc4\
4749    \x01\x17\x18\n\x1b\n\x02\x04\x06\x12\x06\xc8\x01\0\xd2\x01\x01\x1a\r\x20\
4750    NEXT_TAG:\x205\n\n\x0b\n\x03\x04\x06\x01\x12\x04\xc8\x01\x08\x13\n\x0c\n\
4751    \x04\x04\x06\x02\0\x12\x04\xc9\x01\x02\x16\n\r\n\x05\x04\x06\x02\0\x06\
4752    \x12\x04\xc9\x01\x02\x0c\n\r\n\x05\x04\x06\x02\0\x01\x12\x04\xc9\x01\r\
4753    \x11\n\r\n\x05\x04\x06\x02\0\x03\x12\x04\xc9\x01\x14\x15\n\x0c\n\x04\x04\
4754    \x06\x02\x01\x12\x04\xcb\x01\x02\x13\n\r\n\x05\x04\x06\x02\x01\x05\x12\
4755    \x04\xcb\x01\x02\x08\n\r\n\x05\x04\x06\x02\x01\x01\x12\x04\xcb\x01\t\x0e\
4756    \n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\xcb\x01\x11\x12\nB\n\x04\x04\x06\
4757    \x02\x02\x12\x04\xce\x01\x02\x1a\x1a4\x20The\x20training\x20step\x20at\
4758    \x20which\x20this\x20value\x20is\x20computed.\n\n\r\n\x05\x04\x06\x02\
4759    \x02\x05\x12\x04\xce\x01\x02\x07\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\
4760    \xce\x01\x08\x15\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xce\x01\x18\x19\n\
4761    Z\n\x04\x04\x06\x02\x03\x12\x04\xd1\x01\x02\x1c\x1aL\x20The\x20wall\x20t\
4762    ime\x20in\x20seconds\x20since\x20UNIX\x20epoch\x20at\x20which\x20this\
4763    \x20value\x20is\x20computed.\n\n\r\n\x05\x04\x06\x02\x03\x05\x12\x04\xd1\
4764    \x01\x02\x08\n\r\n\x05\x04\x06\x02\x03\x01\x12\x04\xd1\x01\t\x17\n\r\n\
4765    \x05\x04\x06\x02\x03\x03\x12\x04\xd1\x01\x1a\x1b\n\x1b\n\x02\x04\x07\x12\
4766    \x06\xd5\x01\0\xf0\x01\x01\x1a\r\x20NEXT_TAG:\x208\n\n\x0b\n\x03\x04\x07\
4767    \x01\x12\x04\xd5\x01\x08\x0f\nX\n\x04\x04\x07\x02\0\x12\x04\xd7\x01\x02\
4768    \x12\x1aJ\x20An\x20id\x20for\x20the\x20session.\x20Unique\x20within\x20a\
4769    n\x20experiment\x20(not\x20just\x20the\x20group).\n\n\r\n\x05\x04\x07\
4770    \x02\0\x05\x12\x04\xd7\x01\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\
4771    \xd7\x01\t\r\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xd7\x01\x10\x11\n0\n\
4772    \x04\x04\x07\x02\x01\x12\x04\xda\x01\x02\x1d\x1a\"\x20In\x20seconds\x20s\
4773    ince\x20the\x20UNIX\x20epoch.\n\n\r\n\x05\x04\x07\x02\x01\x05\x12\x04\
4774    \xda\x01\x02\x08\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xda\x01\t\x18\n\r\
4775    \n\x05\x04\x07\x02\x01\x03\x12\x04\xda\x01\x1b\x1c\nn\n\x04\x04\x07\x02\
4776    \x02\x12\x04\xde\x01\x02\x1b\x1a`\x20In\x20seconds\x20since\x20the\x20UN\
4777    IX\x20epoch.\n\x20May\x20be\x200\x20if\x20unavailable\x20or\x20the\x20se\
4778    ssion\x20has\x20not\x20finished\x20yet.\n\n\r\n\x05\x04\x07\x02\x02\x05\
4779    \x12\x04\xde\x01\x02\x08\n\r\n\x05\x04\x07\x02\x02\x01\x12\x04\xde\x01\t\
4780    \x16\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xde\x01\x19\x1a\n5\n\x04\x04\
4781    \x07\x02\x03\x12\x04\xe1\x01\x02\x14\x1a'\x20May\x20be\x20STATUS_UNKNOWN\
4782    \x20if\x20unavailable.\n\n\r\n\x05\x04\x07\x02\x03\x06\x12\x04\xe1\x01\
4783    \x02\x08\n\r\n\x05\x04\x07\x02\x03\x01\x12\x04\xe1\x01\t\x0f\n\r\n\x05\
4784    \x04\x07\x02\x03\x03\x12\x04\xe1\x01\x12\x13\n\xa5\x02\n\x04\x04\x07\x02\
4785    \x04\x12\x04\xe7\x01\x02\x17\x1a\x96\x02\x20A\x20URI\x20for\x20a\x20reso\
4786    urce\x20that\x20will\x20allow\x20the\x20user\x20to\x20reconstruct\x20the\
4787    \x20model\x20for\n\x20this\x20session.\x20E.g.,\x20in\x20Tensorflow\x20t\
4788    his\x20could\x20point\x20to\x20a\x20directory\x20where\x20the\n\x20check\
4789    points\x20are\x20stored.\x20Currently,\x20this\x20is\x20treated\x20opaqu\
4790    ely\x20by\x20the\x20UI\n\x20and\x20only\x20displayed\x20to\x20the\x20use\
4791    r\x20as\x20it\x20is\x20passed\x20here.\n\n\r\n\x05\x04\x07\x02\x04\x05\
4792    \x12\x04\xe7\x01\x02\x08\n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\xe7\x01\t\
4793    \x12\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\xe7\x01\x15\x16\n\xb3\x01\n\
4794    \x04\x04\x07\x02\x05\x12\x04\xec\x01\x02)\x1a\xa4\x01\x20Stores\x20each\
4795    \x20metric\x20evaluation\x20on\x20the\x20model\x20at\x20the\x20current\
4796    \x20training\x20step.\n\x20Unfortunately,\x20we\x20can't\x20store\x20the\
4797    se\x20as\x20a\x20map,\x20since\x20proto\x20maps\x20can't\x20have\n\x20me\
4798    ssage\x20keys.\n\n\r\n\x05\x04\x07\x02\x05\x04\x12\x04\xec\x01\x02\n\n\r\
4799    \n\x05\x04\x07\x02\x05\x06\x12\x04\xec\x01\x0b\x16\n\r\n\x05\x04\x07\x02\
4800    \x05\x01\x12\x04\xec\x01\x17$\n\r\n\x05\x04\x07\x02\x05\x03\x12\x04\xec\
4801    \x01'(\nF\n\x04\x04\x07\x02\x06\x12\x04\xef\x01\x02\x19\x1a8\x20An\x20op\
4802    tional\x20link\x20to\x20a\x20web\x20page\x20monitoring\x20the\x20session\
4803    .\n\n\r\n\x05\x04\x07\x02\x06\x05\x12\x04\xef\x01\x02\x08\n\r\n\x05\x04\
4804    \x07\x02\x06\x01\x12\x04\xef\x01\t\x14\n\r\n\x05\x04\x07\x02\x06\x03\x12\
4805    \x04\xef\x01\x17\x18\n3\n\x02\x05\x02\x12\x06\xf3\x01\0\xf8\x01\x01\x1a%\
4806    \x20Represents\x20the\x20status\x20of\x20a\x20Session.\n\n\x0b\n\x03\x05\
4807    \x02\x01\x12\x04\xf3\x01\x05\x0b\n\x0c\n\x04\x05\x02\x02\0\x12\x04\xf4\
4808    \x01\x02\x15\n\r\n\x05\x05\x02\x02\0\x01\x12\x04\xf4\x01\x02\x10\n\r\n\
4809    \x05\x05\x02\x02\0\x02\x12\x04\xf4\x01\x13\x14\n\x0c\n\x04\x05\x02\x02\
4810    \x01\x12\x04\xf5\x01\x02\x15\n\r\n\x05\x05\x02\x02\x01\x01\x12\x04\xf5\
4811    \x01\x02\x10\n\r\n\x05\x05\x02\x02\x01\x02\x12\x04\xf5\x01\x13\x14\n\x0c\
4812    \n\x04\x05\x02\x02\x02\x12\x04\xf6\x01\x02\x15\n\r\n\x05\x05\x02\x02\x02\
4813    \x01\x12\x04\xf6\x01\x02\x10\n\r\n\x05\x05\x02\x02\x02\x02\x12\x04\xf6\
4814    \x01\x13\x14\n\x0c\n\x04\x05\x02\x02\x03\x12\x04\xf7\x01\x02\x15\n\r\n\
4815    \x05\x05\x02\x02\x03\x01\x12\x04\xf7\x01\x02\x10\n\r\n\x05\x05\x02\x02\
4816    \x03\x02\x12\x04\xf7\x01\x13\x14\nw\n\x02\x04\x08\x12\x06\xfd\x01\0\x80\
4817    \x02\x01\x1ai\x20Parameters\x20for\x20a\x20GetExperiment\x20API\x20call.\
4818    \n\x20Each\x20experiment\x20is\x20scoped\x20by\x20a\x20unique\x20global\
4819    \x20id.\n\x20NEXT_TAG:\x202\n\n\x0b\n\x03\x04\x08\x01\x12\x04\xfd\x01\
4820    \x08\x1c\n\x18\n\x04\x04\x08\x02\0\x12\x04\xff\x01\x02\x1d\x1a\n\x20REQU\
4821    IRED\n\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xff\x01\x02\x08\n\r\n\x05\x04\
4822    \x08\x02\0\x01\x12\x04\xff\x01\t\x18\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\
4823    \xff\x01\x1b\x1c\n\x8c\x02\n\x02\x04\t\x12\x06\x87\x02\0\xb8\x02\x01\x1a\
4824    \xfd\x01\x20Parameters\x20for\x20a\x20ListSessionGroups\x20API\x20call.\
4825    \n\x20Computes\x20a\x20list\x20of\x20the\x20current\x20session\x20groups\
4826    \x20allowing\x20for\x20filtering\x20and\n\x20sorting\x20by\x20metrics\
4827    \x20and\x20hyperparameter\x20values.\x20Returns\x20a\x20\"slice\"\x20of\
4828    \n\x20that\x20list\x20specified\x20by\x20start_index\x20and\x20slice_siz\
4829    e.\n\x20NEXT_TAG:\x208\n\n\x0b\n\x03\x04\t\x01\x12\x04\x87\x02\x08\x20\n\
4830    \x0c\n\x04\x04\t\x02\0\x12\x04\x88\x02\x02\x1d\n\r\n\x05\x04\t\x02\0\x05\
4831    \x12\x04\x88\x02\x02\x08\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x88\x02\t\x18\
4832    \n\r\n\x05\x04\t\x02\0\x03\x12\x04\x88\x02\x1b\x1c\n\xa9\x01\n\x04\x04\t\
4833    \x02\x01\x12\x04\x8d\x02\x02'\x1a\x9a\x01\x20Filters\x20the\x20set\x20of\
4834    \x20sessions\x20(from\x20which\x20the\x20session\x20groups\x20are\x20for\
4835    med)\x20to\n\x20contain\x20only\x20these\x20sessions\x20whose\x20status\
4836    \x20is\x20contained\x20in\n\x20'allowed_statuses'.\n\n\r\n\x05\x04\t\x02\
4837    \x01\x04\x12\x04\x8d\x02\x02\n\n\r\n\x05\x04\t\x02\x01\x06\x12\x04\x8d\
4838    \x02\x0b\x11\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x8d\x02\x12\"\n\r\n\x05\
4839    \x04\t\x02\x01\x03\x12\x04\x8d\x02%&\n\x8f\x05\n\x04\x04\t\x02\x02\x12\
4840    \x04\x9a\x02\x02$\x1a\x80\x05\x20A\x20list\x20of\x20ColParams\x20message\
4841    s--one\x20for\x20each\x20\"column\"\x20of\x20a\x20session\x20group.\x20A\
4842    \n\x20session\x20group\x20column\x20contains\x20either\x20a\x20metric\
4843    \x20evaluated\x20at\x20the\x20current\n\x20reported\x20computation\x20st\
4844    ep\x20or\x20a\x20hyperparameter\x20value.\x20In\x20addition\x20to\n\x20'\
4845    regular'\x20values,\x20a\x20column\x20may\x20take\x20on\x20a\x20special\
4846    \x20'missing-value'\x20which\n\x20denotes\x20that\x20the\x20hyperparamet\
4847    er\x20or\x20metric\x20is\x20not\x20available\n\x20for\x20the\x20session\
4848    \x20group\x20(for\x20example,\x20if\x20the\x20metric\x20is\x20not\x20use\
4849    d\x20in\x20the\n\x20group).\n\n\x20The\x20ColParams\x20messages\x20in\
4850    \x20the\x20repeated\x20field\x20below\x20configure\x20filtering\x20and\n\
4851    \x20sorting\x20of\x20the\x20resulting\x20collection\x20of\x20session\x20\
4852    groups.\x20See\x20the\x20comments\x20of\n\x20the\x20fields\x20in\x20the\
4853    \x20ColParam\x20message\x20below\x20for\x20more\x20details.\n\n\r\n\x05\
4854    \x04\t\x02\x02\x04\x12\x04\x9a\x02\x02\n\n\r\n\x05\x04\t\x02\x02\x06\x12\
4855    \x04\x9a\x02\x0b\x14\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\x9a\x02\x15\x1f\
4856    \n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x9a\x02\"#\n\x84\x05\n\x04\x04\t\
4857    \x02\x03\x12\x04\xa7\x02\x02'\x1a\xf5\x04\x20Fields\x20controlling\x20ho\
4858    w\x20to\x20aggregate\x20metrics\x20across\x20sessions\x20within\x20a\n\
4859    \x20session\x20group.\n\x20If\x20aggregation_type\x20is\x20AGGREGATION_A\
4860    VG,\x20each\x20metric\x20value\x20of\x20the\n\x20session\x20group\x20is\
4861    \x20the\x20average\x20of\x20the\x20values\x20of\x20the\x20metric\x20acro\
4862    ss\x20the\n\x20sessions.\n\x20Otherwise,\x20the\x20session\x20group\x20m\
4863    etric\x20values\x20are\x20taken\x20directly\x20from\x20a\n\x20\"represen\
4864    tative\"\x20session\x20in\x20the\x20group,\x20selected\x20as\x20a\x20ses\
4865    sion\x20for\x20which\n\x20primary_metric\x20takes\x20on\x20its\x20minimu\
4866    m,\x20maximum,\x20or\x20median\x20value,\x20as\n\x20specified\x20by\x20t\
4867    he\x20choice\x20of\x20aggregation_type\x20(for\x20median,\x20if\x20the\
4868    \x20number\x20of\n\x20sessions\x20in\x20the\x20group\x20is\x20even,\x20a\
4869    \x20session\x20with\x20a\x20lower\x20\"middle\"\x20value\x20is\n\x20chos\
4870    en\x20as\x20the\x20representative\x20session).\n\n\r\n\x05\x04\t\x02\x03\
4871    \x06\x12\x04\xa7\x02\x02\x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\xa7\x02\
4872    \x12\"\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\xa7\x02%&\n9\n\x04\x04\t\x02\
4873    \x04\x12\x04\xaa\x02\x02$\x1a+\x20See\x20comment\x20for\x20'aggregation_\
4874    type'\x20above.\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\xaa\x02\x02\x0c\n\
4875    \r\n\x05\x04\t\x02\x04\x01\x12\x04\xaa\x02\r\x1f\n\r\n\x05\x04\t\x02\x04\
4876    \x03\x12\x04\xaa\x02\"#\n\xd4\x01\n\x04\x04\t\x02\x05\x12\x04\xaf\x02\
4877    \x02\x18\x1a\xc5\x01\x20The\x20next\x20two\x20parameters\x20determine\
4878    \x20the\x20\"slice\"\x20of\x20the\x20full\x20list\x20of\n\x20session\x20\
4879    groups--sorted\x20and\x20filtered\x20by\x20the\x20parameters\x20above--t\
4880    o\x20return.\n\x20The\x200-based\x20index\x20of\x20the\x20first\x20sessi\
4881    on\x20group\x20to\x20return.\n\n\r\n\x05\x04\t\x02\x05\x05\x12\x04\xaf\
4882    \x02\x02\x07\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\xaf\x02\x08\x13\n\r\n\
4883    \x05\x04\t\x02\x05\x03\x12\x04\xaf\x02\x16\x17\n\xfb\x02\n\x04\x04\t\x02\
4884    \x06\x12\x04\xb7\x02\x02\x17\x1a\xec\x02\x20The\x20number\x20of\x20sessi\
4885    on\x20groups\x20to\x20return\x20starting\x20at\x20the\x20session\x20grou\
4886    p\n\x20indexed\x20by\x20'start_index'.\x20The\x20actual\x20number\x20of\
4887    \x20session\x20groups\x20returned\n\x20is\x20min{slice_size,\x20total_si\
4888    ze\x20-\x20start_index},\x20where\n\x20total_size\x20is\x20the\x20number\
4889    \x20of\x20session\x20groups\x20in\x20the\x20full\x20list\n\x20sorted\x20\
4890    and\x20filtered\x20by\x20the\x20parameters\x20above\x20(if\x20start_inde\
4891    x\x20>\x20total_size\n\x20no\x20session\x20groups\x20are\x20returned).\n\
4892    \n\r\n\x05\x04\t\x02\x06\x05\x12\x04\xb7\x02\x02\x07\n\r\n\x05\x04\t\x02\
4893    \x06\x01\x12\x04\xb7\x02\x08\x12\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xb7\
4894    \x02\x15\x16\n\xad\x01\n\x02\x04\n\x12\x06\xbd\x02\0\xed\x02\x01\x1a\x9e\
4895    \x01\x20Defines\x20parmeters\x20for\x20a\x20ListSessionGroupsRequest\x20\
4896    for\x20a\x20specific\x20column.\n\x20See\x20the\x20comment\x20for\x20\"L\
4897    istSessionGroupsRequest\"\x20above\x20for\x20more\x20details.\n\x20NEXT_\
4898    TAG:\x209\n\n\x0b\n\x03\x04\n\x01\x12\x04\xbd\x02\x08\x11\n\x0e\n\x04\
4899    \x04\n\x08\0\x12\x06\xbe\x02\x02\xc1\x02\x03\n\r\n\x05\x04\n\x08\0\x01\
4900    \x12\x04\xbe\x02\x08\x0c\n\x0c\n\x04\x04\n\x02\0\x12\x04\xbf\x02\x04\x1a\
4901    \n\r\n\x05\x04\n\x02\0\x06\x12\x04\xbf\x02\x04\x0e\n\r\n\x05\x04\n\x02\0\
4902    \x01\x12\x04\xbf\x02\x0f\x15\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xbf\x02\
4903    \x18\x19\n\x0c\n\x04\x04\n\x02\x01\x12\x04\xc0\x02\x04\x16\n\r\n\x05\x04\
4904    \n\x02\x01\x05\x12\x04\xc0\x02\x04\n\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\
4905    \xc0\x02\x0b\x11\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\xc0\x02\x14\x15\n\
4906    \xc1\x06\n\x04\x04\n\x02\x02\x12\x04\xd1\x02\x02\x16\x1a\xb2\x06\x20Sort\
4907    ing.\n\x20The\x20final\x20order\x20of\x20session\x20groups\x20in\x20the\
4908    \x20response\x20is\x20defined\x20by\x20the\x20sub\n\x20collection\x20of\
4909    \x20ColParams\x20messages\x20(out\x20of\x20the\n\x20ListSessionGroupsReq\
4910    uest.col_params\x20repeated\x20field)\x20whose\x20'order'\x20field\n\x20\
4911    (below)\x20is\x20not\x20ORDER_UNSPECIFIED.\x20In\x20each\x20of\x20the\
4912    \x20messages\x20in\x20this\n\x20sub-collection,\x20the\x20next\x20two\
4913    \x20fields\x20specify\x20the\x20ordering\x20of\x20the\x20values\n\x20and\
4914    \x20missing_values\x20in\x20the\x20associated\x20column\x20of\x20the\x20\
4915    session\x20group.\x20The\n\x20order\x20of\x20the\x20ColParams\x20message\
4916    s\x20themselves\x20within\x20the\x20sub-collection\n\x20determines\x20th\
4917    e\x20\"significance\"\x20of\x20the\x20associated\x20column\x20as\x20a\
4918    \x20sorting\x20key:\n\x20with\x20the\x20first\x20being\x20the\x20primary\
4919    \x20sorting\x20key,\x20the\x20second\x20being\x20the\n\x20secondary\x20s\
4920    orting\x20key,\x20etc.\n\x20Note:\x20The\x20'session\x20group\x20name'\
4921    \x20is\x20added\x20as\x20a\x20least\x20significant\x20sorting\n\x20key\
4922    \x20to\x20the\x20keys\x20defined\x20by\x20the\x20user,\x20so\x20the\x20o\
4923    rder\x20in\x20the\x20response\x20is\x20always\n\x20deterministic.\n\n\r\
4924    \n\x05\x04\n\x02\x02\x06\x12\x04\xd1\x02\x02\x0b\n\r\n\x05\x04\n\x02\x02\
4925    \x01\x12\x04\xd1\x02\x0c\x11\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xd1\x02\
4926    \x14\x15\n\xe0\x01\n\x04\x04\n\x02\x03\x12\x04\xd6\x02\x02\x20\x1a\xd1\
4927    \x01\x20This\x20field\x20is\x20ignored\x20if\x20order\x20is\x20ORDER_UNS\
4928    PECIFIED.\n\x20Otherwise,\x20if\x20true,\x20missing\x20values\x20are\x20\
4929    ordered\x20before\x20every\x20other\x20value\x20in\n\x20the\x20column;\
4930    \x20if\x20false\x20they\x20are\x20ordered\x20after\x20every\x20other\x20\
4931    value\x20in\x20the\n\x20column.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\
4932    \xd6\x02\x02\x06\n\r\n\x05\x04\n\x02\x03\x01\x12\x04\xd6\x02\x07\x1b\n\r\
4933    \n\x05\x04\n\x02\x03\x03\x12\x04\xd6\x02\x1e\x1f\n\xb6\x02\n\x04\x04\n\
4934    \x08\x01\x12\x06\xdd\x02\x02\xe9\x02\x03\x1a\xa5\x02\x20Filtering.\n\x20\
4935    The\x20'filter'\x20oneof\x20specifies\x20a\x20subset\x20of\x20the\x20dom\
4936    ain\x20of\x20the\x20values\x20a\x20column\n\x20may\x20take.\x20Only\x20s\
4937    ession\x20groups\x20with\x20each\x20of\x20their\x20column\x20values\x20b\
4938    elonging\n\x20to\x20this\x20subset\x20are\x20included\x20in\x20the\x20re\
4939    sponse.\x20If\x20this\x20field\x20is\x20not\n\x20specified,\x20the\x20su\
4940    bset\x20is\x20taken\x20to\x20be\x20the\x20entire\x20column\x20domain.\n\
4941    \n\r\n\x05\x04\n\x08\x01\x01\x12\x04\xdd\x02\x08\x0e\n\xeb\x01\n\x04\x04\
4942    \n\x02\x04\x12\x04\xe2\x02\x04\x1d\x1a\xdc\x01\x20Only\x20valid\x20for\
4943    \x20string-valued\x20hyperparameter\x20columns.\x20The\x20subset\x20is\n\
4944    \x20the\x20set\x20of\x20all\x20strings\x20matching\x20the\x20regular\x20\
4945    expression\x20stored\n\x20in\x20'regexp'\x20as\x20a\x20partial\x20match\
4946    \x20(use\x20'^<regexp>$'\x20to\x20have\x20a\x20full\n\x20match\x20agains\
4947    t\x20regexp).\n\n\r\n\x05\x04\n\x02\x04\x05\x12\x04\xe2\x02\x04\n\n\r\n\
4948    \x05\x04\n\x02\x04\x01\x12\x04\xe2\x02\x0b\x18\n\r\n\x05\x04\n\x02\x04\
4949    \x03\x12\x04\xe2\x02\x1b\x1c\nX\n\x04\x04\n\x02\x05\x12\x04\xe5\x02\x04!\
4950    \x1aJ\x20Only\x20valid\x20for\x20numeric-valued\x20columns.\x20The\x20su\
4951    bset\x20is\x20the\x20given\x20interval.\n\n\r\n\x05\x04\n\x02\x05\x06\
4952    \x12\x04\xe5\x02\x04\x0c\n\r\n\x05\x04\n\x02\x05\x01\x12\x04\xe5\x02\r\
4953    \x1c\n\r\n\x05\x04\n\x02\x05\x03\x12\x04\xe5\x02\x1f\x20\nK\n\x04\x04\n\
4954    \x02\x06\x12\x04\xe8\x02\x042\x1a=\x20Valid\x20for\x20all\x20data\x20typ\
4955    es.\x20The\x20subset\x20is\x20defined\x20explicitly.\n\n\r\n\x05\x04\n\
4956    \x02\x06\x06\x12\x04\xe8\x02\x04\x1d\n\r\n\x05\x04\n\x02\x06\x01\x12\x04\
4957    \xe8\x02\x1e-\n\r\n\x05\x04\n\x02\x06\x03\x12\x04\xe8\x0201\nm\n\x04\x04\
4958    \n\x02\x07\x12\x04\xec\x02\x02\"\x1a_\x20Specifies\x20whether\x20to\x20e\
4959    xclude\x20session\x20groups\x20whose\x20column\x20value\x20is\x20missing\
4960    \n\x20from\x20the\x20response.\n\n\r\n\x05\x04\n\x02\x07\x05\x12\x04\xec\
4961    \x02\x02\x06\n\r\n\x05\x04\n\x02\x07\x01\x12\x04\xec\x02\x07\x1d\n\r\n\
4962    \x05\x04\n\x02\x07\x03\x12\x04\xec\x02\x20!\n\x0c\n\x02\x05\x03\x12\x06\
4963    \xef\x02\0\xf3\x02\x01\n\x0b\n\x03\x05\x03\x01\x12\x04\xef\x02\x05\x0e\n\
4964    \x0c\n\x04\x05\x03\x02\0\x12\x04\xf0\x02\x02\x18\n\r\n\x05\x05\x03\x02\0\
4965    \x01\x12\x04\xf0\x02\x02\x13\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\xf0\x02\
4966    \x16\x17\n\x0c\n\x04\x05\x03\x02\x01\x12\x04\xf1\x02\x02\x10\n\r\n\x05\
4967    \x05\x03\x02\x01\x01\x12\x04\xf1\x02\x02\x0b\n\r\n\x05\x05\x03\x02\x01\
4968    \x02\x12\x04\xf1\x02\x0e\x0f\n\x0c\n\x04\x05\x03\x02\x02\x12\x04\xf2\x02\
4969    \x02\x11\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\xf2\x02\x02\x0c\n\r\n\x05\
4970    \x05\x03\x02\x02\x02\x12\x04\xf2\x02\x0f\x10\n\x0c\n\x02\x05\x04\x12\x06\
4971    \xf5\x02\0\xfb\x02\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\xf5\x02\x05\x14\n\
4972    \x0c\n\x04\x05\x04\x02\0\x12\x04\xf6\x02\x02\x18\n\r\n\x05\x05\x04\x02\0\
4973    \x01\x12\x04\xf6\x02\x02\x13\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\xf6\x02\
4974    \x16\x17\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xf7\x02\x02\x16\n\r\n\x05\
4975    \x05\x04\x02\x01\x01\x12\x04\xf7\x02\x02\x11\n\r\n\x05\x05\x04\x02\x01\
4976    \x02\x12\x04\xf7\x02\x14\x15\n\x0c\n\x04\x05\x04\x02\x02\x12\x04\xf8\x02\
4977    \x02\x19\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xf8\x02\x02\x14\n\r\n\x05\
4978    \x05\x04\x02\x02\x02\x12\x04\xf8\x02\x17\x18\n\x0c\n\x04\x05\x04\x02\x03\
4979    \x12\x04\xf9\x02\x02\x16\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\xf9\x02\
4980    \x02\x11\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xf9\x02\x14\x15\n\x0c\n\
4981    \x04\x05\x04\x02\x04\x12\x04\xfa\x02\x02\x16\n\r\n\x05\x05\x04\x02\x04\
4982    \x01\x12\x04\xfa\x02\x02\x11\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\xfa\
4983    \x02\x14\x15\nB\n\x02\x04\x0b\x12\x06\xff\x02\0\x87\x03\x01\x1a4\x20See\
4984    \x20ListSessionGroups\x20in\x20http_api.md.\n\x20NEXT_TAG:\x204\n\n\x0b\
4985    \n\x03\x04\x0b\x01\x12\x04\xff\x02\x08!\n\x0c\n\x04\x04\x0b\x02\0\x12\
4986    \x04\x80\x03\x02+\n\r\n\x05\x04\x0b\x02\0\x04\x12\x04\x80\x03\x02\n\n\r\
4987    \n\x05\x04\x0b\x02\0\x06\x12\x04\x80\x03\x0b\x17\n\r\n\x05\x04\x0b\x02\0\
4988    \x01\x12\x04\x80\x03\x18&\n\r\n\x05\x04\x0b\x02\0\x03\x12\x04\x80\x03)*\
4989    \n\xef\x01\n\x04\x04\x0b\x02\x01\x12\x04\x86\x03\x02\x17\x1a\xe0\x01\x20\
4990    Denotes\x20the\x20total\x20number\x20of\x20session\x20groups\x20in\x20th\
4991    e\x20full\x20filtered\x20list.\n\x20(Recall\x20that\x20this\x20response\
4992    \x20may\x20only\x20be\x20a\x20slice).\n\x20It\x20is\x20used\x20by\x20the\
4993    \x20UI\x20to\x20calculate\x20total\x20number\x20of\x20pages\x20and\x20ca\
4994    n\x20be\n\x20set\x20here\x20to\x20-1\x20to\x20mean\x20\"unknown\".\n\n\r\
4995    \n\x05\x04\x0b\x02\x01\x05\x12\x04\x86\x03\x02\x07\n\r\n\x05\x04\x0b\x02\
4996    \x01\x01\x12\x04\x86\x03\x08\x12\n\r\n\x05\x04\x0b\x02\x01\x03\x12\x04\
4997    \x86\x03\x15\x16\nG\n\x02\x04\x0c\x12\x06\x8b\x03\0\x8f\x03\x01\x1a9\x20\
4998    See\x20ListMetricEvalsRequest\x20in\x20http_api.md.\n\x20NEXT_TAG:\x204\
4999    \n\n\x0b\n\x03\x04\x0c\x01\x12\x04\x8b\x03\x08\x1e\n\x0c\n\x04\x04\x0c\
5000    \x02\0\x12\x04\x8c\x03\x02\x1d\n\r\n\x05\x04\x0c\x02\0\x05\x12\x04\x8c\
5001    \x03\x02\x08\n\r\n\x05\x04\x0c\x02\0\x01\x12\x04\x8c\x03\t\x18\n\r\n\x05\
5002    \x04\x0c\x02\0\x03\x12\x04\x8c\x03\x1b\x1c\n\x0c\n\x04\x04\x0c\x02\x01\
5003    \x12\x04\x8d\x03\x02\x1a\n\r\n\x05\x04\x0c\x02\x01\x05\x12\x04\x8d\x03\
5004    \x02\x08\n\r\n\x05\x04\x0c\x02\x01\x01\x12\x04\x8d\x03\t\x15\n\r\n\x05\
5005    \x04\x0c\x02\x01\x03\x12\x04\x8d\x03\x18\x19\n\x0c\n\x04\x04\x0c\x02\x02\
5006    \x12\x04\x8e\x03\x02\x1d\n\r\n\x05\x04\x0c\x02\x02\x06\x12\x04\x8e\x03\
5007    \x02\x0c\n\r\n\x05\x04\x0c\x02\x02\x01\x12\x04\x8e\x03\r\x18\n\r\n\x05\
5008    \x04\x0c\x02\x02\x03\x12\x04\x8e\x03\x1b\x1cb\x06proto3\
5009";
5010
5011static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
5012
5013fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
5014    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
5015}
5016
5017pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
5018    file_descriptor_proto_lazy.get(|| {
5019        parse_descriptor_proto()
5020    })
5021}