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

openego / eDisGo / 35752408267
84%

Build:
DEFAULT BRANCH: dev
Ran 22 Sep 2026 05:27PM UTC
Jobs 1
Files 68
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

22 Sep 2026 04:11PM UTC coverage: 83.987% (+0.1%) from 83.86%
35752408267

push

github

web-flow
fix(opf): narrow flexibility inputs per interval in a split OPF (#763)

When the time index is non-contiguous, pm_optimize splits it into contiguous
intervals and solves each separately, narrowing the active index per interval
with set_timeindex. That only assigns TimeSeries.timeindex; the OverlyingGrid,
DSM, HeatPump and Electromobility containers carry their own DatetimeIndex and
stayed on the full reduced one.

to_powermodels reads those four containers raw and positionally (.iloc[0] for a
scalar target, .tolist() for a per-time-step series) — unlike the grid side,
which goes through to_pypsa and follows the active index — so every interval
received the FIRST interval's overlying-grid requirements, EV flexibility bands,
heat demand and COP, and DSM energy envelopes. With opf_version 3 the HV
requirements are the only thing steering flexible dispatch, so all intervals
produced near-identical dispatch and slacks despite being solved independently.

Where inflexible components exist the mis-alignment was worse than a wrong
value: _build_hv_requirements subtracts an interval-scoped psa_net series from
the full-index requirement, and pandas aligns the two on their indices, giving
NaN for the non-overlapping steps and so a NaN scalar target.

_narrow_flex_inputs now narrows all four containers to the interval before each
solve, reusing reduce_timeseries_data_to_given_timeindex, and the loop's
existing snapshot is extended to restore them afterwards. TimeSeries is
deliberately excluded (timeseries=False): its active-power frames accumulate
each interval's results and slicing them would drop the intervals solved so far.
Each interval now also reseeds its own EV initial state of charge, which was
likewise computed once for the first interval and reused.

to_powermodels additionally rejects an overlying grid that does not match the
active time index exactly, naming the offending attributes, so this class of
mis-alignment fails loudly for any caller instead o... (continued)

32 of 35 new or added lines in 2 files covered. (91.43%)

1 existing line in 1 file now uncovered.

9551 of 11372 relevant lines covered (83.99%)

0.84 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
94.19
-0.73% edisgo/opf/powermodels_opf.py
1
92.96
0.8% edisgo/io/powermodels_io.py

Coverage Regressions

Lines Coverage ∆ File
1
92.96
0.8% edisgo/io/powermodels_io.py
Jobs
ID Job ID Ran Files Coverage
1 35752408267.1 22 Sep 2026 05:27PM UTC 68
83.99
GitHub Action Run
Source Files on build 35752408267
  • Tree
  • List 68
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • a33e3d7e on github
  • Prev Build on dev (#35732745361)
  • Next Build on dev (#35856695870)
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