def type_name(obj): """ Returns the C++ type to use for a given metric object. """ generate_enums = getattr(obj, "_generate_enums", []) # Extra Keys? Reasons? if len(generate_enums): for name, suffix in generate_enums: if not len(getattr(obj, name)) and suffix == "Keys": return util.Camelize(obj.type) + "Metric<uint32_t>" else: return "{}Metric<{}>".format(util.Camelize(obj.type), util.Camelize(obj.name) + suffix) return util.Camelize(obj.type) + "Metric"
def iterencode(self, value): if isinstance(value, dict): raise ValueError("RustEncoder doesn't know dicts {}".format( str(value))) elif isinstance(value, enum.Enum): yield (value.__class__.__name__ + "::" + util.Camelize(value.name)) elif isinstance(value, set): yield "vec![" first = True for subvalue in sorted(list(value)): if not first: yield ", " yield from self.iterencode(subvalue) first = False yield "]" elif isinstance(value, list): yield "vec![" first = True for subvalue in list(value): if not first: yield ", " yield from self.iterencode(subvalue) first = False yield "]" elif value is None: yield "None" elif isinstance(value, str): yield '"' + value + '".into()' else: yield from super().iterencode(value)
def type_name(obj): """ Returns the C++ type to use for a given metric object. """ if getattr(obj, "labeled", False): return "GleanLabeled" return "Glean" + util.Camelize(obj.type)
def class_name(obj_type): """ Returns the Rust class name for a given metric or ping type. """ if obj_type == "ping": return "Ping" if obj_type.startswith("labeled_"): obj_type = obj_type[8:] return util.Camelize(obj_type) + "Metric"
def type_name(obj): """ Returns the C++ type to use for a given metric object. """ if getattr(obj, "labeled", False): class_name = util.Camelize(obj.type[8:]) # strips "labeled_" off the front. return "Labeled<impl::{}Metric>".format(class_name) generate_enums = getattr(obj, "_generate_enums", []) # Extra Keys? Reasons? if len(generate_enums): for name, suffix in generate_enums: if not len(getattr(obj, name)) and suffix == "Keys": return util.Camelize(obj.type) + "Metric<uint32_t>" else: return "{}Metric<{}>".format( util.Camelize(obj.type), util.Camelize(obj.name) + suffix ) return util.Camelize(obj.type) + "Metric"
def subtype_name(obj): """ Returns the subtype name for labeled metrics. (e.g. 'boolean' for 'labeled_boolean'). Returns "" for non-labeled metrics. """ if getattr(obj, "labeled", False): type = obj.type[8:] # strips "labeled_" off the front return "Glean" + util.Camelize(type) return ""
def type_name(obj): """ Returns the Rust type to use for a given metric or ping object. """ if getattr(obj, "labeled", False): return "LabeledMetric<{}>".format(class_name(obj.type)) generate_enums = getattr(obj, "_generate_enums", []) # Extra Keys? Reasons? if len(generate_enums): for name, suffix in generate_enums: if not len(getattr(obj, name)) and suffix == "Keys": return class_name(obj.type) + "::<NoExtraKeys>" else: return "{}::<{}>".format(class_name(obj.type), util.Camelize(obj.name) + suffix) return class_name(obj.type)
def type_name(obj): """ Returns the Rust type to use for a given metric or ping object. """ if getattr(obj, "labeled", False): return "LabeledMetric<Labeled{}>".format(class_name(obj.type)) generate_enums = getattr(obj, "_generate_enums", []) # Extra Keys? Reasons? if len(generate_enums): for name, suffix in generate_enums: if not len(getattr(obj, name)) and suffix == "Keys": return class_name(obj.type) + "<NoExtraKeys>" else: # we always use the `extra` suffix, # because we only expose the new event API suffix = "Extra" return "{}<{}>".format(class_name(obj.type), util.Camelize(obj.name) + suffix) return class_name(obj.type)
def iterencode(self, value): if isinstance(value, dict): raise ValueError("RustEncoder doesn't know dicts {}".format( str(value))) elif isinstance(value, enum.Enum): yield (value.__class__.__name__ + "::" + util.Camelize(value.name)) elif isinstance(value, set): yield "vec![" first = True for subvalue in sorted(list(value)): if not first: yield ", " yield from self.iterencode(subvalue) first = False yield "]" elif isinstance(value, list): yield "vec![" first = True for subvalue in list(value): if not first: yield ", " yield from self.iterencode(subvalue) first = False yield "]" elif value is None: yield "None" elif isinstance(value, str): yield '"' + value + '".into()' elif isinstance(value, Rate): yield "CommonMetricData {" for arg_name in common_metric_data_args: if hasattr(value, arg_name): yield f"{arg_name}: " yield from self.iterencode(getattr(value, arg_name)) yield ", " yield " ..Default::default()}" else: yield from super().iterencode(value)
def type_name(type): """ Returns the C++ type to use for a given metric object. """ return "Glean" + util.Camelize(type)
def type_name(obj): """ Returns the C++ type to use for a given metric object. """ return util.Camelize(obj.type) + "Metric"