Skip to content

Plan: v1 semantics community discussion (open after #717 merges) #857

Description

@FBumann

Note

This tracking issue was drafted with AI.

Plan for a community Q&A discussion on the v1 arithmetic semantics, to open after #717 merges (so the convention.md and migration-guide links resolve on master).

Prerequisites / checklist

Why a discussion (and not just issues)

The discussion is the low-friction front door for "will this break my model?" / "intended or a bug?" questions, and Q&A answers can be marked into an FAQ. Concrete, reproducible breakages still get funneled to issues so they stay tracked.

Discussion skeleton (Q&A category, pinned) — draft

Intent line to be handwritten by the poster.

What's changing — linopy is introducing a stricter, opt-in arithmetic convention ("v1") that replaces legacy's silent guesses (filled NaN, positional joins, absent-as-zero) with explicit rules that raise, so a wrong model errors at build time instead of returning a wrong number.

Timeline — (1) now: opt-in via linopy.options["semantics"] = "v1", legacy default + warns; (2) later minor: v1 default, legacy one more cycle; (3) 1.0: legacy removed.

Try it — set the option; to surface every site, run the suite under legacy with warnings.filterwarnings("error", category=LinopySemanticsWarning).

How to use the thread — questions here (answers marked → FAQ); concrete breakages / gaps in the guide → open an issue and link back; downstream maintainers especially wanted early.

FAQ seed — change anything today? (no) · a warning I don't own? (upstream; silence meanwhile) · why raise? (no silent wrong answers) · when default? (a later minor, announced here) · maintainer recipe? (opt in on a branch → warning-as-error → fix → run v1 → release).

Downstream notice template

linopy v1 arithmetic semantics — opt-in now, default later.
linopy is rolling out a stricter arithmetic convention that raises where it used to guess (NaN fills, positional joins, absent-as-zero). It's opt-in today and warns under legacy, becoming the default in a later release. This likely affects <library>; the migration guide (<link>) has a situation→fix table, and there's a discussion for questions: <link>. Opting in early on a branch (linopy.options["semantics"] = "v1") will surface what changes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions