From 56ffa0fc4453da9bb09b165b386e18cd417e2ac2 Mon Sep 17 00:00:00 2001 From: Sebastian Schmitt Date: Thu, 25 Jun 2026 08:58:43 +0200 Subject: [PATCH] Allow to count number of entries of an aggregation Signed-off-by: Sebastian Schmitt --- reframe/frontend/reporting/utility.py | 4 +++- unittests/test_reporting.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/reframe/frontend/reporting/utility.py b/reframe/frontend/reporting/utility.py index d08be5713..891e9ad63 100644 --- a/reframe/frontend/reporting/utility.py +++ b/reframe/frontend/reporting/utility.py @@ -17,7 +17,7 @@ class Aggregation: AGG_REGEX = re.compile(r'(?P\S+)\((?P\S+)\)|(?P\S+)') OP_REGEX = re.compile( - r'min|max|median|mean|std|first|last|sum|stats|p\d{2}' + r'min|max|median|mean|std|first|last|sum|stats|count|p\d{2}' ) Q_REGEX = re.compile(r'p(\d{2})') @@ -89,6 +89,8 @@ def _expr_from_op(col, op): return pl.col(col).last().alias(f'{col} (last)') elif op == 'sum': return pl.col(col).sum().alias(f'{col} (sum)') + elif op == 'count': + return pl.col(col).count().alias(f'{col} (count)') elif m := self.Q_REGEX.match(op): perc = m.group(1) if perc == '00': diff --git a/unittests/test_reporting.py b/unittests/test_reporting.py index 2d1138f1c..64dca9c43 100644 --- a/unittests/test_reporting.py +++ b/unittests/test_reporting.py @@ -228,7 +228,8 @@ def test_parse_cmp_spec_period(time_period): @pytest.fixture(params=['first', 'last', 'mean', 'median', 'min', 'max', 'std', 'stats', 'sum', - 'p00', 'p01', 'p05', 'p95', 'p99']) + 'p00', 'p01', 'p05', 'p95', 'p99', + 'count']) def aggregator(request): return request.param @@ -289,6 +290,8 @@ def test_parse_cmp_spec_aggregations(aggregator): assert agg['pval (p95)'][0] == 10 elif aggregator == 'p05': assert agg['pval (p99)'][0] == 10 + elif aggregator == 'count': + assert 'pval (count)' in agg.columns # Check variant without base period match = parse_cmp_spec(f'now-1d:now/{aggregator}:/')