Skip to content

[pull] master from prometheus:master - #22

Merged
pull[bot] merged 5 commits into
TheTechOddBug:masterfrom
prometheus:master
Jul 24, 2026
Merged

[pull] master from prometheus:master#22
pull[bot] merged 5 commits into
TheTechOddBug:masterfrom
prometheus:master

Conversation

@pull

@pull pull Bot commented Jul 24, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

MelvinjoseC and others added 5 commits July 24, 2026 13:18
* fix: make test suite pass on Windows and Python 3.12+

- Fix event loop issues in ASGI tests under newer asgiref by wrapping communicator setup in an async coroutine run on the loop.
- Fix mmap file locking (PermissionError: [WinError 32]) on Windows in multiprocess tests by closing open database handles before unlinking/removing directories.
- Skip case-sensitive env var deprecation warning assertion on Windows where environment variables are case-insensitive.
- Conditionally define the parser benchmark test to avoid failure when pytest-benchmark is not installed.

Signed-off-by: MelvinjoseC <165891174+MelvinjoseC@users.noreply.github.com>

* fix: resolve lint/typing issues and add Windows CI coverage

Signed-off-by: MelvinjoseC <165891174+MelvinjoseC@users.noreply.github.com>

---------

Signed-off-by: MelvinjoseC <165891174+MelvinjoseC@users.noreply.github.com>
_parse_nh_struct parsed the sum field with int(), so a native histogram
whose sum is not integral failed to parse with

    ValueError: invalid literal for int() with base 10: '100.5'

NativeHistogram.sum_value is a float and the OpenMetrics writer emits the
sum verbatim (e.g. sum:100.5), so the library could not parse its own
output for the common case of a non-integer sum. Parse sum with float()
to match; count, schema and zero_count remain int as they are genuinely
integers.

Add test_native_histogram_float_sum, which parses a native histogram
with a fractional sum and checks it round-trips to sum_value 100.5.

Signed-off-by: Sean Kim <skim8705@gmail.com>
When a collector is registered under support_collectors_without_names
with no metric names, register() appends it to _collectors_without_names
in addition to the usual bookkeeping. unregister() only cleaned up
_collector_to_names and _names_to_collectors, so the collector stayed in
_collectors_without_names and kept being collected.

A normal collect() no longer returned the collector's metrics, but
RestrictedRegistry.collect() -- which seeds its collector set from
_collectors_without_names -- still did, so an unregistered collector's
samples reappeared under restricted_registry(). unregister() now also
drops the collector from that list.

Add test_unregister_removes_no_names_collector, asserting a nameless
collector is no longer collected by a restricted registry after it has
been unregistered.

Signed-off-by: Sean Kim <skim8705@gmail.com>
_is_valid_exemplar_metric() guarded histograms with

    if metric.type in ('histogram') and sample.name.endswith('_bucket') or sample.name == metric.name:

Because 'and' binds tighter than 'or', this parsed as

    (metric.type in ('histogram') and sample.name.endswith('_bucket')) or (sample.name == metric.name)

so the trailing 'sample.name == metric.name' clause fired for every
metric type. As a result the OpenMetrics writer emitted exemplars on
gauges, info, stateset, summary and untyped metrics whenever a sample
name equalled the metric name -- output that the library's own
OpenMetrics parser rejects (only histogram/gaugehistogram buckets,
counter _total, and native histograms may carry exemplars).

Group the histogram condition correctly so the same-name clause (which
exists to allow native-histogram exemplars) only applies to histograms.
While here, replace the 'metric.type in (...)' single-string membership
checks with '==' -- they were doing substring matching, not the
intended equality.

Add test_gauge_exemplar, which asserts a gauge sample carrying an
exemplar raises ValueError, matching the existing untyped/non-bucket
exemplar tests.

Signed-off-by: Sean Kim <skim8705@gmail.com>
@pull pull Bot locked and limited conversation to collaborators Jul 24, 2026
@pull pull Bot added the ⤵️ pull label Jul 24, 2026
@pull
pull Bot merged commit 9b6b971 into TheTechOddBug:master Jul 24, 2026
11 of 12 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

3 participants