![](/static/253f0d9b/assets/icons/icon-96x96.png)
![](https://lemmy.wtf/api/v3/image_proxy?url=https%3A%2F%2Fprogramming.dev%2Fpictrs%2Fimage%2F1d99f7cb-50e7-4994-94c4-fd23f30209b7.png)
1·
10 months agoThis is the real answer, overloads are meant for exactly this purpose.
It’ll be something like this:
from typing import Literal, overload
@overload
def foo() -> Data: …
@overload
def foo(return_more: Literal[True]) -> tuple[Data, Data]: …
def foo(return_more: bool = False) -> Data | tuple[Data, Data]
...
if return_more:
return data, more_data
return data
YES! I rewatched recently. I thought it would age poorly but it’s still extremely watchable.