• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FlexMeasures / flexmeasures / 35093099521
86%

Build:
DEFAULT BRANCH: main
Ran 16 Sep 2026 12:09PM UTC
Jobs 1
Files 183
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Sep 2026 11:57AM UTC coverage: 85.524% (+0.005%) from 85.519%
35093099521

push

github

web-flow
Hold an automation's schedule to the sensors it was checked against (#2536)

* Hold an automation's schedule to the sensors it was checked against

An automation's output sensors are checked against its creator's permissions when the automation is created,
which is the only moment a user is present.
They are predicted from the fields that name them, and a sensor the prediction misses is not left unchecked
so much as checked for the wrong thing: it is read as an input, so read access is asked for
where recording data calls for create-children access.

A schedule job created by an automation is now held to that prediction, and refuses to record on any other sensor.
Where there is nothing to hold the job to, it proceeds as before: a job that is not an automation's,
an automation deleted since the job was queued, or one whose sensors cannot be determined, which is logged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WS6V8nZyRzMxsvqGnNpUTk
Signed-off-by: F.N. Claessen <claessen@seita.nl>

* changelog: point at the PR number

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WS6V8nZyRzMxsvqGnNpUTk
Signed-off-by: F.N. Claessen <claessen@seita.nl>

* Give the scheduler its flex config as written, and hold the guard to it

`resolve_schedule_automation_sensors` handed the scheduler a flex config that had already
been through `AssetTriggerSchema`, so `collect_flex_config` — which merges the asset tree's
config with the message's, reading sensors by id — met `Sensor` objects where it expects ids
and raised a `ProgrammingError` no caller catches.

A data generator deserializes its own config, so the scheduler now receives the config as it
was written and does that itself. The trigger message is loaded for its timing and its asset
only. A database error joins what is reported as unknown sensors, that being what it means
here.

With resolution reliable, th... (continued)

30 of 32 new or added lines in 2 files covered. (93.75%)

4 existing lines in 1 file now uncovered.

19077 of 22306 relevant lines covered (85.52%)

0.86 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.52
-0.41% flexmeasures/data/services/automations.py
1
91.65
0.26% flexmeasures/data/services/scheduling.py

Coverage Regressions

Lines Coverage ∆ File
4
92.52
-0.41% flexmeasures/data/services/automations.py
Jobs
ID Job ID Ran Files Coverage
1 35093099521.1 16 Sep 2026 12:09PM UTC 183
85.52
GitHub Action Run
Source Files on build 35093099521
  • Tree
  • List 183
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35093099521
  • e990c8f6 on github
  • Prev Build on main (#35088468426)
  • Next Build on main (#35149948841)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc