8000 Rename choose_formatter back to choose_encoder · barbdowns/client_python@ff2e7a4 · GitHub
[go: up one dir, main page]

Skip to content 8000

Commit ff2e7a4

Browse files
committed
Rename choose_formatter back to choose_encoder
Temporarily keep an alias so that choose_formatter will work for the 0.14.x release cycle. Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>
1 parent 041e0f5 commit ff2e7a4

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

prometheus_client/exposition.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from urllib.request import (
1414
build_opener, HTTPHandler, HTTPRedirectHandler, Request,
1515
)
16+
import warnings
1617
from wsgiref.simple_server import make_server, WSGIRequestHandler, WSGIServer
1718

1819
from .openmetrics import exposition as openmetrics
@@ -97,10 +98,10 @@ def redirect_request(self, req, fp, code, msg, headers, newurl):
9798
def _bake_output(registry, accept_header, accept_encoding_header, params, disable_compression):
9899
"""Bake output for metrics output."""
99100
# Choose the correct plain text format of the output.
100-
formatter, content_type = choose_formatter(accept_header)
101+
encoder, content_type = choose_encoder(accept_header)
101102
if 'name[]' in params:
102103
registry = registry.restricted_registry(params['name[]'])
103-
output = formatter(registry)
104+
output = encoder(registry)
104105
headers = [('Content-Type', content_type)]
105106
# If gzip encoding required, gzip the output.
106107
if not disable_compression and gzip_accepted(accept_encoding_header):
@@ -237,7 +238,7 @@ def sample_line(line):
237238
return ''.join(output).encode('utf-8')
238239

239240

240-
def choose_formatter(accept_header: str) -> Tuple[Callable[[CollectorRegistry], bytes], str]:
241+
def choose_encoder(accept_header: str) -> Tuple[Callable[[CollectorRegistry], bytes], str]:
241242
accept_header = accept_header or ''
242243
for accepted in accept_header.split(','):
243244
if accepted.split(';')[0].strip() == 'application/openmetrics-text':
@@ -246,6 +247,15 @@ def choose_formatter(accept_header: str) -> Tuple[Callable[[CollectorRegistry],
246247
return generate_latest, CONTENT_TYPE_LATEST
247248

248249

250+
def choose_formatter(accept_header: str) -> Tuple[Callable[[CollectorRegistry], bytes], str]:
251+
warnings.warn(
252+
"choose_formatter is deprecated and will be removed in 0.15.0, please use choose_encoder instead",
253+
DeprecationWarning,
254+
stacklevel=2
255+
)
256+
return choose_encoder(accept_header)
257+
258+
249259
def gzip_accepted(accept_encoding_header: str) -> bool:
250260
accept_encoding_header = accept_encoding_header or ''
251261
for accepted in accept_encoding_header.split(','):

tests/test_exposition.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import threading
33
import time
44
import unittest
5+
import warnings
56

67
import pytest
78

@@ -12,9 +13,10 @@
1213
)
1314
from prometheus_client.core import GaugeHistogramMetricFamily, Timestamp
1415
from prometheus_client.exposition import (
15-
basic_auth_handler, default_handler, MetricsHandler,
16-
passthrough_redirect_handler,
16+
basic_auth_handler, choose_encoder, choose_formatter, default_handler,
17+
MetricsHandler, passthrough_redirect_handler,
1718
)
19+
import prometheus_client.openmetrics.exposition as openmetrics
1820

1921

2022
class TestGenerateText(unittest.TestCase):
@@ -460,5 +462,19 @@ def test_histogram_metric_families(MetricFamily, registry, buckets, sum_value, e
460462
_expect_metric_exception(registry, error)
461463

462464

465+
def test_choose_encoder():
466+
assert choose_encoder(None) == (generate_latest, CONTENT_TYPE_LATEST)
467+
assert choose_encoder(CONTENT_TYPE_LATEST) == (generate_latest, CONTENT_TYPE_LATEST)
468+
assert choose_encoder(openmetrics.CONTENT_TYPE_LATEST) == (openmetrics.generate_latest, openmetrics.CONTENT_TYPE_LATEST)
469+
470+
471+
def test_choose_formatter():
472+
with warnings.catch_warnings(record=True) as w:
473+
assert choose_formatter('') == (generate_latest, CONTENT_TYPE_LATEST)
474+
assert len(w) == 1
475+
assert issubclass(w[-1].category, DeprecationWarning)
476+
assert "choose_formatter is deprecated" in str(w[-1].message)
477+
478+
463479
if __name__ == '__main__':
464480
unittest.main()

0 commit comments

Comments
 (0)
0