docs(pypsa): a fixed modular committable unit gets only its per-module commitment rows, as in pypsa master - #787
Open
FabianHofmann wants to merge 6 commits into
Open
FabianHofmann wants to merge 6 commits into
FabianHofmann wants to merge 6 commits into
Conversation
…e commitment rows, as in pypsa master
FabianHofmann
requested review from
FBumann and
brynpickering
as code owners
September 29, 2026 12:00
1 of 42 tasks
FBumann
added this pull request to stack #789
September 29, 2026 14:37
This was referenced Oct 1, 2026
This was referenced Oct 1, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
The following content was generated by AI.
A fixed modular committable Generator, Link or Process no longer gets
com-p-lower/upperormaint-status-*rows. It gets onlycom-mod-p-*andmaint-modstatus-*, as PyPSA master builds since PyPSA/PyPSA#1901. Part of #783, stacked on #786.Method, gate output, alternatives
PyPSA master
constraints.py:302-303on02bdcbba:com_fix_iselectscom-p-lower/upperandmaint-status-le-status/-le-maint/-lb(:421-476).com_mod_iselectscom-mod-p-*andmaint-modstatus-*for every modular unit, fixed or extendable (:480-551). The only other reader ofcom_fix_iis the linearized tightening (:654).pypsa_linearized_uc.yamldeclares nop_nom_mod, so no modular unit is on its surface, and it needs no change. The ramp rows keep their ownis_com_fix(:1041-1044), which still includes a fixed modular unit; that is the separate "N times too loose" item in #783.Change
examples/pypsa.yaml: the 15 blocks{Generator,Link,Process}_{com_p_lower,com_p_upper,maint_status_le_status,maint_status_le_maint,maint_status_lb}addAND NOT ({c}_p_nom_mod > 0)to theirwhere:.docs/examples/pypsa.md: three index notes (rung 7com-p-*, rung 8com-mod-p-*, the maintenance row) now say that a modular build takes the per-module rows in place of the whole-unit ones.tools.pypsa_split split examples/pypsa), the gallery pages, the golden typesetter output and the schema (the last two did not change).Reproduced first
test_a_fixed_modular_committable_unit_gets_only_its_per_module_commitment_rowsreads the four row families of each component fromto_spec(pypsa.yaml).program, so the loader parses and resolves eachwhere:. It decides each resolved mask for a fixed, modular, maintainable, committable unit withmathspec.exclusivity._evaluate, the evaluator the exclusivity check runs on one cell. A predicate on a parameter the unit does not set raisesKeyError; a node the evaluator cannot decide raisesAssertionError. The repository has no engine, so no test counts the spec's rows per rung.On the tree before the fix (
pypsa.yamlfrom the base branch) it fails for all three components, withcom_p_lower,com_p_upperandmaint_status_*as extra items: 3 failed. With the fix: 3 passed.Records
Unchanged here. #786 re-recorded rungs 8, 25 and 26 against master, which dropped these rows; this PR makes the file match those records.
Gates
pixi run lint: pass.pixi run ci: pass, 2604 tests, on the head with the evaluator, after the merge of the updated base branch ate4f919bb.uv run --script examples/references/pypsa/reference.py --check: "every rung solves to its record".Not done
02bdcbba(separate box in PyPSA parity with master: open points, new master changes and the PyPSA bugs found #783).{c}_p_nom_committed) is unchanged.