From 8c89c5237de56c55d01ac063fd42044185970302 Mon Sep 17 00:00:00 2001 From: jorenham Date: Tue, 27 Oct 2026 10:27:18 +0100 Subject: [PATCH] Fix `{Success, Failure}.swap` returning `Any` --- CHANGELOG.md | 6 ++++++ returns/result.py | 12 ++++++------ typesafety/test_result/test_construct_failure.yml | 8 ++++++++ typesafety/test_result/test_construct_success.yml | 8 ++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ef7f7032..f0b9d3250 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ Versions before `1.0.0` are `0Ver`-based: incremental in minor, bugfixes only are patches. See [0Ver](https://0ver.org/). +## 0.31.0 WIP + +### Bugfixes + +- Fix `{Success, Failure}.swap` returning `Any` + ## 0.30.0 ### Features diff --git a/returns/result.py b/returns/result.py index 860bfa302..470432363 100644 --- a/returns/result.py +++ b/returns/result.py @@ -389,9 +389,9 @@ def value_or(self, default_value): """Returns default value for failed container.""" return default_value - def swap(self): - """Failures swap to :class:`Success`.""" - return Success(self._inner_value) + def swap(self): + """Failures swap to :class:`Success`.""" + return Success(self._inner_value) def unwrap(self) -> Never: """Raises an exception, since it does not have a value inside.""" @@ -454,9 +454,9 @@ def value_or(self, default_value): """Returns the value for successful container.""" return self._inner_value - def swap(self): - """Successes swap to :class:`Failure`.""" - return Failure(self._inner_value) + def swap(self): + """Successes swap to :class:`Failure`.""" + return Failure(self._inner_value) def unwrap(self) -> _ValueType_co: """Returns the unwrapped value from successful container.""" diff --git a/typesafety/test_result/test_construct_failure.yml b/typesafety/test_result/test_construct_failure.yml index f4156e253..3de16a335 100644 --- a/typesafety/test_result/test_construct_failure.yml +++ b/typesafety/test_result/test_construct_failure.yml @@ -24,3 +24,11 @@ from returns.result import Failure reveal_type(Failure(1).failure()) # N: Revealed type is "int" + + +- case: failure_swap + disable_cache: false + main: | + from returns.result import Failure + + reveal_type(Failure(1).swap()) # N: Revealed type is "returns.result.Result[int, Any]" diff --git a/typesafety/test_result/test_construct_success.yml b/typesafety/test_result/test_construct_success.yml index 7d0ed6729..e28705f8d 100644 --- a/typesafety/test_result/test_construct_success.yml +++ b/typesafety/test_result/test_construct_success.yml @@ -65,3 +65,11 @@ from returns.result import Success reveal_type(Success(1).unwrap()) # N: Revealed type is "int" + + +- case: success_swap + disable_cache: false + main: | + from returns.result import Success + + reveal_type(Success(1).swap()) # N: Revealed type is "returns.result.Result[Any, int]"