Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions doc/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,6 @@ Release Notes
Upcoming Version
----------------

**Bug fixes**

* A multi-key ``groupby`` now returns its groups sorted by key tuple, like the single-key path. The key combinations were numbered by iterating a ``set``, so the group order was arbitrary and changed between processes with ``PYTHONHASHSEED``.


Version 0.9.1
-------------

**Features**

*Strict "v1" arithmetic semantics (opt-in)*

Expand Down Expand Up @@ -59,6 +50,17 @@ Version 0.9.1
* Mutation via assignment to ``Variable.lower`` / ``Variable.upper`` / ``Constraint.coeffs`` / ``Constraint.vars`` / ``Constraint.lhs`` / ``Constraint.sign`` / ``Constraint.rhs`` is deprecated and emits a ``DeprecationWarning``. Use ``Variable.update(...)`` / ``Constraint.update(...)`` instead — the canonical mutation API with one validation path and one place that flips the persistent-solver dirty flag. Read access to these properties is unchanged. The setters will be removed in a future release.
* Passing a raw ``DataArray`` of integer labels to ``Constraint.vars = ...`` setter is deprecated and emits a ``FutureWarning``. Pass a ``Variable`` to ``Constraint.update()`` instead — it is the supported input. The ``DataArray`` path will be removed in a future release.


**Bug fixes**

* A multi-key ``groupby`` now returns its groups sorted by key tuple, like the single-key path. The key combinations were numbered by iterating a ``set``, so the group order was arbitrary and changed between processes with ``PYTHONHASHSEED``.


Version 0.9.1
-------------

**Features**

*Named expressions*

* You can now store expressions in the model and get them back by name. ``Model.add_expressions`` registers a ``LinearExpression`` or ``QuadraticExpression`` under a name (auto-named ``expr0``, ``expr1``, ... if you don't pass one). Registered expressions live in ``Model.expressions``, a container that works like ``Model.variables`` and ``Model.constraints``, and are removed with ``Model.remove_expressions``. They survive ``Model.to_netcdf``/``linopy.read_netcdf``, ``Model.copy``, ``copy.copy``, ``copy.deepcopy`` and pickling. (`#882 <https://github.com/PyPSA/linopy/pull/882>`__)
Expand Down
Loading