Skip to content

Commit

Permalink
fix: rename print methods to render
Browse files Browse the repository at this point in the history
BREAKING CHANGE: rename all print/print_* methods to render/render_*
to be more compatible with Python 3
  • Loading branch information
ssube committed Dec 23, 2019
1 parent 21564fa commit a1dcc99
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 17 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,2 +1,3 @@
*.swp
*.pyc
**/__pycache__/
32 changes: 17 additions & 15 deletions prometheus_express/metric.py
@@ -1,11 +1,11 @@
def print_help(name, desc, type):
def render_help(name, desc, type):
return [
'# HELP {} {}'.format(name, desc),
'# TYPE {} {}'.format(name, type),
]


def print_labels(keys, values):
def render_labels(keys, values):
if len(keys) != len(values):
raise ValueError('length of label values must equal label keys')

Expand All @@ -19,7 +19,7 @@ def print_labels(keys, values):
return '{' + ','.join(labels) + '}'


def print_name(namespace, name):
def render_name(namespace, name):
if namespace != '':
return '{}_{}'.format(namespace, name)
else:
Expand Down Expand Up @@ -53,8 +53,8 @@ def labels(self, *labelValues):
self.labelValues = labelValues
return self

def print(self, namespace):
return print_help(print_name(namespace, self.name), self.desc, self.metricType)
def render(self, namespace):
return render_help(render_name(namespace, self.name), self.desc, self.metricType)


class Counter(Metric):
Expand All @@ -76,11 +76,11 @@ def dec(self, value):

self.labelValues = self.emptyLabels

def print(self, namespace):
lines = super().print(namespace)
def render(self, namespace):
lines = super().render(namespace)
for l, v in self.values.items():
lines.append('{}{} {}'.format(print_name(
namespace, self.name), print_labels(self.labelKeys, l), v))
lines.append('{}{} {}'.format(render_name(
namespace, self.name), render_labels(self.labelKeys, l), v))

return lines

Expand Down Expand Up @@ -109,14 +109,16 @@ def observe(self, value):
else:
self.values[self.labelValues] = (1, value)

def print(self, namespace):
nn = print_name(namespace, self.name)
lines = super().print(namespace)
self.labelValues = self.emptyLabels

def render(self, namespace):
nn = render_name(namespace, self.name)
lines = super().render(namespace)
for l, v in self.values.items():
ll = print_labels(self.labelKeys, l)
lines.extend(print_help(nn + '_count', self.desc, self.metricType))
ll = render_labels(self.labelKeys, l)
lines.extend(render_help(nn + '_count', self.desc, self.metricType))
lines.append('{}_count{} {}'.format(nn, ll, v[0]))
lines.extend(print_help(nn + '_total', self.desc, self.metricType))
lines.extend(render_help(nn + '_total', self.desc, self.metricType))
lines.append('{}_total{} {}'.format(nn, ll, v[1]))

return lines
4 changes: 2 additions & 2 deletions prometheus_express/registry.py
Expand Up @@ -15,10 +15,10 @@ def register(self, metric):
self.metrics.add(metric)
return True

def print(self):
def render(self):
metrics = []
for m in self.metrics:
line = m.print(self.namespace)
line = m.render(self.namespace)
metrics.extend(line)

return metrics
27 changes: 27 additions & 0 deletions tests/test_metric.py
@@ -0,0 +1,27 @@
import prometheus_express.metric as pm
import unittest

class RenderHelpTest(unittest.TestCase):
def test(self):
self.assertEqual([
'# HELP foo bar',
'# TYPE foo bin',
], pm.render_help('foo', 'bar', 'bin'))

class RenderLabelsTest(unittest.TestCase):
def test(self):
self.assertEqual(
'{foo="bar",bin="baz"}',
pm.render_labels([
'foo', 'bin',
], [
'bar', 'baz',
])
)

class RenderNameTest(unittest.TestCase):
def test(self):
self.assertEqual(
'foo_bar',
pm.render_name('foo', 'bar')
)

0 comments on commit a1dcc99

Please sign in to comment.