Skip to content

Commit ebfc789

Browse files
committed
fix: use tuples instead of packaging Version
Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
1 parent b9e78a3 commit ebfc789

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

prometheus_client/exposition.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@
1818
)
1919
from wsgiref.simple_server import make_server, WSGIRequestHandler, WSGIServer
2020

21-
from packaging.version import Version
22-
2321
from .openmetrics import exposition as openmetrics
2422
from .registry import CollectorRegistry, REGISTRY
25-
from .utils import floatToGoString
23+
from .utils import floatToGoString, parse_version
2624

2725
__all__ = (
2826
'CONTENT_TYPE_LATEST',
@@ -346,7 +344,7 @@ def choose_encoder(accept_header: str) -> Tuple[Callable[[CollectorRegistry], by
346344
# mimetype.
347345
if not version:
348346
return (partial(openmetrics.generate_latest, escaping=openmetrics.UNDERSCORES, version="1.0.0"), openmetrics.CONTENT_TYPE_LATEST)
349-
if version and Version(version) >= Version('1.0.0'):
347+
if version and parse_version(version) >= (1, 0, 0):
350348
return (partial(openmetrics.generate_latest, escaping=escaping, version=version),
351349
f'application/openmetrics-text; version={version}; charset=utf-8; escaping=' + str(escaping))
352350
elif accepted.split(';')[0].strip() == 'text/plain':
@@ -355,7 +353,7 @@ def choose_encoder(accept_header: str) -> Tuple[Callable[[CollectorRegistry], by
355353
escaping = _get_escaping(toks)
356354
# Only return an escaping header if we have a good version and
357355
# mimetype.
358-
if version and Version(version) >= Version('1.0.0'):
356+
if version and parse_version(version) >= (1, 0, 0):
359357
return (partial(generate_latest, escaping=escaping),
360358
CONTENT_TYPE_LATEST + '; escaping=' + str(escaping))
361359
return generate_latest, CONTENT_TYPE_PLAIN_0_0_4

prometheus_client/openmetrics/exposition.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
from sys import maxunicode
55
from typing import Callable
66

7-
from packaging.version import Version
8-
9-
from ..utils import floatToGoString
7+
from ..utils import floatToGoString, parse_version
108
from ..validation import (
119
_is_valid_legacy_labelname, _is_valid_legacy_metric_name,
1210
)
@@ -94,7 +92,7 @@ def generate_latest(registry, escaping=UNDERSCORES, version="1.0.0"):
9492
timestamp = f' {s.timestamp}'
9593

9694
# Skip native histogram samples entirely if version < 2.0.0
97-
if s.native_histogram and Version(version) < Version('2.0.0'):
95+
if s.native_histogram and parse_version(version) < (2, 0, 0):
9896
continue
9997

10098
native_histogram = ''

prometheus_client/utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import math
2+
from typing import Union
23

34
INF = float("inf")
45
MINUS_INF = float("-inf")
@@ -22,3 +23,14 @@ def floatToGoString(d):
2223
mantissa = f'{s[0]}.{s[1:dot]}{s[dot + 1:]}'.rstrip('0.')
2324
return f'{mantissa}e+0{dot - 1}'
2425
return s
26+
27+
28+
def parse_version(version_str: str) -> tuple[Union[int, str], ...]:
29+
version: list[Union[int, str]] = []
30+
for part in version_str.split('.'):
31+
try:
32+
version.append(int(part))
33+
except ValueError:
34+
version.append(part)
35+
36+
return tuple(version)

0 commit comments

Comments
 (0)