Skip to content

Commit 8d3795e

Browse files
committed
Ensure we get a float value.
1 parent 742dd40 commit 8d3795e

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

prometheus_client/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ def _floatToGoString(d):
370370
elif d == _MINUS_INF:
371371
return '-Inf'
372372
else:
373-
return repr(d)
373+
return repr(float(d))
374374

375375

376376
@_MetricWrapper

tests/test_client.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import unittest
44

55

6-
from prometheus_client import Gauge, Counter, Summary, Histogram
6+
from prometheus_client import Gauge, Counter, Summary, Histogram, Metric
77
from prometheus_client import CollectorRegistry, generate_latest, ProcessCollector
88

99

@@ -304,6 +304,20 @@ def test_escaping(self):
304304
c.labels('\\x\n"').inc(1)
305305
self.assertEqual(b'# HELP cc A\\ncount\\\\er\n# TYPE cc counter\ncc{a="\\\\x\\n\\""} 1.0\n', generate_latest(self.registry))
306306

307+
def test_nonnumber(self):
308+
class MyNumber():
309+
def __repr__(self):
310+
return "MyNumber(123)"
311+
def __float__(self):
312+
return 123.0
313+
class MyCollector():
314+
def collect(self):
315+
metric = Metric("nonnumber", "Non number", 'untyped')
316+
metric.add_sample("nonnumber", {}, MyNumber())
317+
yield metric
318+
self.registry.register(MyCollector())
319+
self.assertEqual(b'# HELP nonnumber Non number\n# TYPE nonnumber untyped\nnonnumber 123.0\n', generate_latest(self.registry))
320+
307321

308322
class TestProcessCollector(unittest.TestCase):
309323
def setUp(self):

0 commit comments

Comments
 (0)