diff --git a/prometheus_client/core.py b/prometheus_client/core.py index adc012bb..510c8c14 100644 --- a/prometheus_client/core.py +++ b/prometheus_client/core.py @@ -506,6 +506,11 @@ def remove(self, *labelvalues): with self._lock: del self._metrics[labelvalues] + def removeall(self): + rmlabelvalues = self._metrics.keys() + for labelvalues in rmlabelvalues: + self.remove(*labelvalues) + def _samples(self): with self._lock: metrics = self._metrics.copy() diff --git a/tests/test_core.py b/tests/test_core.py index f0eca1fc..36910210 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -253,6 +253,15 @@ def test_remove(self): self.assertEqual(None, self.registry.get_sample_value('c', {'l': 'x'})) self.assertEqual(2, self.registry.get_sample_value('c', {'l': 'y'})) + def test_removeall(self): + self.counter.labels('x').inc() + self.counter.labels('y').inc(2) + self.assertEqual(1, self.registry.get_sample_value('c', {'l': 'x'})) + self.assertEqual(2, self.registry.get_sample_value('c', {'l': 'y'})) + self.counter.removeall() + self.assertEqual(None, self.registry.get_sample_value('c', {'l': 'x'})) + self.assertEqual(None, self.registry.get_sample_value('c', {'l': 'y'})) + def test_incorrect_label_count_raises(self): self.assertRaises(ValueError, self.counter.labels) self.assertRaises(ValueError, self.counter.labels, 'a', 'b')