PyPSA / PyPSA/linopy

Make v1 the default arithmetic convention (Stage 2)

Open
#845 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement model formulation v1
Dominant language
Python
Stars
257
Forks
87
Avg merge
1d 3h
Merged PRs (30d)
29

Description

[!NOTE]
The following was generated by AI.

Tracks Stage 2 of the v1 arithmetic-convention rollout (opt-in → default → 1.0). v1 shipped opt-in in #717 (linopy.options["semantics"] = "v1", legacy the default). This issue is the decision and work to flip the default to v1.

Prerequisites (done)
  • v1 opt-in released — #717
  • Transition surface complete — every legacy→v1 divergence warns under legacy (LinopySemanticsWarning, naming the fix)
  • Migration guide — doc/migrating-to-v1.rst
To make v1 the default
  • Pick the release for the flip — a pre-1.0 minor, so 1.0 can ship legacy-free (#846). The flip must precede 1.0; otherwise it collides with the removal in a single release, leaving no window where v1 is the default and legacy is still opt-out.
  • Flip the options["semantics"] default to "v1". Legacy stays reachable via options["semantics"] = "legacy" from the flip through to 1.0 (however many minors that spans), and is removed at 1.0.
  • Add a dedicated opt-out deprecation warning: once v1 is the default, setting options["semantics"] = "legacy" emits a "legacy is deprecated, removed at 1.0" signal — distinct from the per-site LinopySemanticsWarning (which flags behaviour changes, not "on borrowed time"). Use whichever unified warning channel #738 settles on.
  • Gate the flip on downstream readiness — the check-in in #857 (PyPSA, PyPSA-Eur, Calliope, flixopt) so they opt in / pin before it lands.
  • Announce ahead of time: changelog note + downstream heads-up.
  • Re-frame any docs/notebooks that still describe legacy as the default.

The LinopySemanticsWarning is a FutureWarning firing since the opt-in release (#717), so the deprecation runway is already long by the time of the flip.

Legacy removal is a separate 1.0 step (arithmetics-design/legacy-removal.md). Spec: arithmetics-design/convention.md; rollout: arithmetics-design/open-items.md.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with arithmetics-design/convention.md and arithmetics-design/open-items.md, then inspect the options["semantics"] implementation and the migration guide at doc/migrating-to-v1.rst. Check the warning-channel decision in #738 and downstream readiness in #857 before changing the default. Done means the pre-1.0 release is selected, legacy remains an opt-out with its deprecation warning, and related docs and release notes are updated.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.