diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 263a5306..17547755 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -4,6 +4,10 @@ Release Notes Upcoming Version ---------------- +**Breaking Changes** + +* The selection of a single item in `__getitem__` now returns a `Variable` instead of a `ScalarVariable`. + Version 0.5.1 -------------- diff --git a/linopy/variables.py b/linopy/variables.py index d2dd3cd6..bd801b7e 100644 --- a/linopy/variables.py +++ b/linopy/variables.py @@ -192,22 +192,9 @@ def __init__( def __getitem__( self, selector: list[int] | int | slice | tuple[int64, str_] ) -> Variable | ScalarVariable: - keys = selector if isinstance(selector, tuple) else (selector,) - if all(map(pd.api.types.is_scalar, keys)): - warn( - "Accessing a single value with `Variable[...]` and return type " - "ScalarVariable is deprecated. In future, this will return a Variable." - "To get a ScalarVariable use `Variable.at[...]` instead.", - FutureWarning, - ) - return self.at[keys] - - else: - # return selected Variable - data = Dataset( - {k: self.data[k][selector] for k in self.data}, attrs=self.attrs - ) - return self.__class__(data, self.model, self.name) + # return selected Variable + data = Dataset({k: self.data[k][selector] for k in self.data}, attrs=self.attrs) + return self.__class__(data, self.model, self.name) @property def attrs(self) -> dict[str, Hashable]: diff --git a/test/test_variable.py b/test/test_variable.py index 065dd1ce..c7f2f691 100644 --- a/test/test_variable.py +++ b/test/test_variable.py @@ -72,11 +72,10 @@ def test_wrong_variable_init(m: Model, x: linopy.Variable) -> None: def test_variable_getter(x: linopy.Variable, z: linopy.Variable) -> None: - with pytest.warns(FutureWarning): - assert isinstance(x[0], linopy.variables.ScalarVariable) - assert isinstance(z[0], linopy.variables.ScalarVariable) + assert isinstance(x[0], linopy.variables.Variable) + assert isinstance(z[0], linopy.variables.Variable) - assert isinstance(x.at[0], linopy.variables.ScalarVariable) + assert isinstance(x.at[0], linopy.variables.Variable) def test_variable_getter_slice(x: linopy.Variable) -> None: