def _create_id_string(self, meter_id: MeterId, meter_type: str) -> str: s = "{}:{}".format(meter_type, self._replace_invalid_chars(meter_id.name)) for key, value in sorted(meter_id.tags().items()): k = self._replace_invalid_chars(key) v = self._replace_invalid_chars(value) s += ",{}={}".format(k, v) return s + ":"
def test_with_tags_returns_new_object(self): id1 = MeterId("foo") id2 = id1.with_tags({"a": "1", "b": "2"}) self.assertNotEqual(id1, id2) self.assertEqual({}, id1.tags()) self.assertEqual({"a": "1", "b": "2"}, id2.tags())
def test_tags_defensive_copy(self): id1 = MeterId("foo", {"a": "1"}) tags = id1.tags() tags["b"] = "2" self.assertEqual({"a": "1", "b": "2"}, tags) self.assertEqual({"a": "1"}, id1.tags())
def test_tags(self): id1 = MeterId("foo", {"a": "1"}) self.assertEqual({"a": "1"}, id1.tags())