Skip to content

refactor(observers): Meter (revert AvgMeter) + string-secured reduction=#15

Merged
adnanhd merged 1 commit into
mainfrom
feat/meter-reduction
May 27, 2026
Merged

refactor(observers): Meter (revert AvgMeter) + string-secured reduction=#15
adnanhd merged 1 commit into
mainfrom
feat/meter-reduction

Conversation

@adnanhd

@adnanhd adnanhd commented May 27, 2026

Copy link
Copy Markdown
Owner

Reverts AvgMeter -> Meter (the family base) and replaces hardcoded averaging with a validated reduction= string ('mean'/'max'/'min'/'sum'/'last'/'count'; unknown raises ValueError) mapped to an internal reducer. stats is now {value, count}; .value/.reduction expose the result. Concrete meters pass an overridable default (TimingMeter mean, MemoryMeter max, CPUMeter mean, MetricsMeter mean). Tests, README, docs/observers.md, docs/task.md, examples/03 and the agent file all migrated off the old val/avg/sum stats. mypy strict 0, ruff+format clean, 183 passed / 3 skipped.

…tion=

Revert the AvgMeter rename back to Meter -- it is the family base
(TimingMeter / MemoryMeter / CPUMeter / MetricsMeter are Meters) -- and make
the aggregation configurable instead of hardcoded "average":

- Meter(name=None, *, reduction="mean"): reduction is a validated STRING
  ("mean"/"max"/"min"/"sum"/"last"/"count"; unknown -> ValueError) mapped to
  an internal reducer in the REDUCTIONS registry (callers pass a name, not a
  raw callable).
- State accumulates sum/count/max/min/last; .value reduces it; .reduction
  exposes the name; stats == {value, count} (was {val, avg, sum, count}).
- Concrete meters pass an overridable default: TimingMeter "mean",
  MemoryMeter "max" (peak), CPUMeter "mean", MetricsMeter "mean".
- tests: new reduction tests (max, unknown->ValueError); stats assertions
  updated to {value, count}; a call-counter via reduction="sum".
- docs (README, observers.md, task.md) + examples/03 + agent file migrated
  off the old val/avg/sum stats and "running average" language.

mypy strict 0, ruff + format clean, 183 passed / 3 skipped.
@adnanhd adnanhd merged commit c8b5b14 into main May 27, 2026
@adnanhd adnanhd deleted the feat/meter-reduction branch May 27, 2026 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant