Skip to content

Commit a024d98

Browse files
authored
Merge pull request #9 from faucetsdn/v0.16.0
Upgrade python3-prometheus-client to v0.16.0.
2 parents 3d9d97c + 02806fd commit a024d98

17 files changed

Lines changed: 105 additions & 44 deletions

.circleci/config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
python:
3131
type: string
3232
docker:
33-
- image: circleci/python:<< parameters.python >>
33+
- image: cimg/python:<< parameters.python >>
3434
environment:
3535
TOXENV: "py<< parameters.python >>"
3636
steps:
@@ -80,6 +80,7 @@ workflows:
8080
- "3.8"
8181
- "3.9"
8282
- "3.10"
83+
- "3.11"
8384
- test_nooptionals:
8485
matrix:
8586
parameters:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ TLS Auth is also supported when using the push gateway with a special handler.
487487

488488
```python
489489
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
490-
from prometheus_client.exposition import tls_handler
490+
from prometheus_client.exposition import tls_auth_handler
491491

492492

493493
def my_auth_handler(url, method, timeout, headers, data):

prometheus_client/asgi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ async def prometheus_app(scope, receive, send):
1212
assert scope.get("type") == "http"
1313
# Prepare parameters
1414
params = parse_qs(scope.get('query_string', b''))
15-
accept_header = "Accept: " + ",".join([
15+
accept_header = ",".join([
1616
value.decode("utf8") for (name, value) in scope.get('headers')
1717
if name.decode("utf8").lower() == 'accept'
1818
])

prometheus_client/context_managers.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
22
from timeit import default_timer
33
from types import TracebackType
4-
from typing import Any, Callable, Optional, Type, TYPE_CHECKING, TypeVar
4+
from typing import (
5+
Any, Callable, Optional, Tuple, Type, TYPE_CHECKING, TypeVar, Union,
6+
)
57

68
if sys.version_info >= (3, 8, 0):
79
from typing import Literal
@@ -14,7 +16,7 @@
1416

1517

1618
class ExceptionCounter:
17-
def __init__(self, counter: "Counter", exception: Type[BaseException]) -> None:
19+
def __init__(self, counter: "Counter", exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]]) -> None:
1820
self._counter = counter
1921
self._exception = exception
2022

prometheus_client/exposition.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,8 @@ def basic_auth_handler(
370370
timeout: Optional[float],
371371
headers: List[Tuple[str, str]],
372372
data: bytes,
373-
username: str = None,
374-
password: str = None,
373+
username: Optional[str] = None,
374+
password: Optional[str] = None,
375375
) -> Callable[[], None]:
376376
"""Handler that implements HTTP/HTTPS connections with Basic Auth.
377377

prometheus_client/metrics.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import time
44
import types
55
from typing import (
6-
Any, Callable, Dict, Iterable, List, Optional, Sequence, Type, TypeVar,
7-
Union,
6+
Any, Callable, Dict, Iterable, List, Optional, Sequence, Tuple, Type,
7+
TypeVar, Union,
88
)
99

1010
from . import values # retain this import style for testability
@@ -275,7 +275,7 @@ def f():
275275

276276
def _metric_init(self) -> None:
277277
self._value = values.ValueClass(self._type, self._name, self._name + '_total', self._labelnames,
278-
self._labelvalues)
278+
self._labelvalues, self._documentation)
279279
self._created = time.time()
280280

281281
def inc(self, amount: float = 1, exemplar: Optional[Dict[str, str]] = None) -> None:
@@ -288,7 +288,7 @@ def inc(self, amount: float = 1, exemplar: Optional[Dict[str, str]] = None) -> N
288288
_validate_exemplar(exemplar)
289289
self._value.set_exemplar(Exemplar(exemplar, amount, time.time()))
290290

291-
def count_exceptions(self, exception: Type[BaseException] = Exception) -> ExceptionCounter:
291+
def count_exceptions(self, exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]] = Exception) -> ExceptionCounter:
292292
"""Count exceptions in a block of code or function.
293293
294294
Can be used as a function decorator or context manager.
@@ -377,7 +377,7 @@ def __init__(self,
377377
def _metric_init(self) -> None:
378378
self._value = values.ValueClass(
379379
self._type, self._name, self._name, self._labelnames, self._labelvalues,
380-
multiprocess_mode=self._multiprocess_mode
380+
self._documentation, multiprocess_mode=self._multiprocess_mode
381381
)
382382

383383
def inc(self, amount: float = 1) -> None:
@@ -469,8 +469,8 @@ def create_response(request):
469469

470470
def _metric_init(self) -> None:
471471
self._count = values.ValueClass(self._type, self._name, self._name + '_count', self._labelnames,
472-
self._labelvalues)
473-
self._sum = values.ValueClass(self._type, self._name, self._name + '_sum', self._labelnames, self._labelvalues)
472+
self._labelvalues, self._documentation)
473+
self._sum = values.ValueClass(self._type, self._name, self._name + '_sum', self._labelnames, self._labelvalues, self._documentation)
474474
self._created = time.time()
475475

476476
def observe(self, amount: float) -> None:
@@ -583,14 +583,15 @@ def _metric_init(self) -> None:
583583
self._buckets: List[values.ValueClass] = []
584584
self._created = time.time()
585585
bucket_labelnames = self._labelnames + ('le',)
586-
self._sum = values.ValueClass(self._type, self._name, self._name + '_sum', self._labelnames, self._labelvalues)
586+
self._sum = values.ValueClass(self._type, self._name, self._name + '_sum', self._labelnames, self._labelvalues, self._documentation)
587587
for b in self._upper_bounds:
588588
self._buckets.append(values.ValueClass(
589589
self._type,
590590
self._name,
591591
self._name + '_bucket',
592592
bucket_labelnames,
593-
self._labelvalues + (floatToGoString(b),))
593+
self._labelvalues + (floatToGoString(b),),
594+
self._documentation)
594595
)
595596

596597
def observe(self, amount: float, exemplar: Optional[Dict[str, str]] = None) -> None:

prometheus_client/metrics_core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def __init__(self,
113113
name: str,
114114
documentation: str,
115115
value: Optional[float] = None,
116-
labels: Sequence[str] = None,
116+
labels: Optional[Sequence[str]] = None,
117117
created: Optional[float] = None,
118118
unit: str = '',
119119
):

prometheus_client/mmap_dict.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
import mmap
33
import os
44
import struct
5+
from typing import List
56

6-
_INITIAL_MMAP_SIZE = 1 << 20
7+
_INITIAL_MMAP_SIZE = 1 << 16
78
_pack_integer_func = struct.Struct(b'i').pack
89
_pack_double_func = struct.Struct(b'd').pack
910
_unpack_integer = struct.Struct(b'i').unpack_from
@@ -137,8 +138,8 @@ def close(self):
137138
self._f = None
138139

139140

140-
def mmap_key(metric_name, name, labelnames, labelvalues):
141+
def mmap_key(metric_name: str, name: str, labelnames: List[str], labelvalues: List[str], help_text: str) -> str:
141142
"""Format a key for use in the mmap file."""
142143
# ensure labels are in consistent order for identity
143144
labels = dict(zip(labelnames, labelvalues))
144-
return json.dumps([metric_name, name, labels], sort_keys=True)
145+
return json.dumps([metric_name, name, labels, help_text], sort_keys=True)

prometheus_client/multiprocess.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
except NameError: # Python >= 2.5
1616
FileNotFoundError = IOError
1717

18-
MP_METRIC_HELP = 'Multiprocess metric'
19-
2018

2119
class MultiProcessCollector:
2220
"""Collector for files for multi-process mode."""
@@ -53,9 +51,9 @@ def _read_metrics(files):
5351
def _parse_key(key):
5452
val = key_cache.get(key)
5553
if not val:
56-
metric_name, name, labels = json.loads(key)
54+
metric_name, name, labels, help_text = json.loads(key)
5755
labels_key = tuple(sorted(labels.items()))
58-
val = key_cache[key] = (metric_name, name, labels, labels_key)
56+
val = key_cache[key] = (metric_name, name, labels, labels_key, help_text)
5957
return val
6058

6159
for f in files:
@@ -71,11 +69,11 @@ def _parse_key(key):
7169
continue
7270
raise
7371
for key, value, _ in file_values:
74-
metric_name, name, labels, labels_key = _parse_key(key)
72+
metric_name, name, labels, labels_key, help_text = _parse_key(key)
7573

7674
metric = metrics.get(metric_name)
7775
if metric is None:
78-
metric = Metric(metric_name, MP_METRIC_HELP, typ)
76+
metric = Metric(metric_name, help_text, typ)
7977
metrics[metric_name] = metric
8078

8179
if typ == 'gauge':

prometheus_client/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ def _parse_sample(text):
116116
name = text[:label_start].strip()
117117
# We ignore the starting curly brace
118118
label = text[label_start + 1:label_end]
119-
# The value is after the label end (ignoring curly brace and space)
120-
value, timestamp = _parse_value_and_timestamp(text[label_end + 2:])
119+
# The value is after the label end (ignoring curly brace)
120+
value, timestamp = _parse_value_and_timestamp(text[label_end + 1:])
121121
return Sample(name, _parse_labels(label), value, timestamp)
122122

123123
# We don't have labels

0 commit comments

Comments
 (0)