8000 Add a clear() method to metric objects to remove all labelsets (#642) · quanuw/client_python@1a3ba21 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1a3ba21

Browse files
authored
Add a clear() method to metric objects to remove all labelsets (prometheus#642)
Add a clear() method to metric objects to remove all labelsets
1 parent 5dffc77 commit 1a3ba21

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

prometheus_client/metrics.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ def remove(self, *labelvalues):
186186
with self._lock:
187187
del self._metrics[labelvalues]
188188

189+
def clear(self):
190+
"""Remove all labelsets from the metric"""
191+
with self._lock:
192+
self._metrics = {}
193+
189194
def _samples(self):
190195
if self._is_parent():
191196
return self._multi_samples()

tests/test_core.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,15 @@ def test_remove(self):
456456
self.assertEqual(None, self.registry.get_sam 8D1A ple_value('c_total', {'l': 'x'}))
457457
self.assertEqual(2, self.registry.get_sample_value('c_total', {'l': 'y'}))
458458

459+
def test_clear(self):
460+
self.counter.labels('x').inc()
461+
self.counter.labels('y').inc(2)
462+
self.assertEqual(1, self.registry.get_sample_value('c_total', {'l': 'x'}))
463+
self.assertEqual(2, self.registry.get_sample_value('c_total', {'l': 'y'}))
464+
self.counter.clear()
465+
self.assertEqual(None, self.registry.get_sample_value('c_total', {'l': 'x'}))
466+
self.assertEqual(None, self.registry.get_sample_value('c_total', {'l': 'y'}))
467+
459468
def test_incorrect_label_count_raises(self):
460469
self.assertRaises(ValueError, self.counter.labels)
461470
self.assertRaises(ValueError, self.counter.labels, 'a', 'b')

0 commit comments

Comments
 (0)
0