+1 for Immich, I tried photoprism and had a lot of trouble importing and organizing an existing library. Immich works much more intuitively and had all the features I needed.
YES! I rewatched recently. I thought it would age poorly but it’s still extremely watchable.
This 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
Quick mix some lime juice in there!