Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Make v1 the default arithmetic convention (Stage 2)

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

Nobody has claimed this yet.

Assessment

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

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.

Description

enhancement model formulation v1

[!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.

Dominant language
Python
Stars
257
Forks
87
Avg merge
1d 8h
Merged PRs (30d)
32

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.

More from PyPSA/linopy

All issues in PyPSA/linopy

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.