I don't know Python too well but I think this is covered in TFA. There's a comparison between a Result type using https://github.com/rustedpy/result and an ADT/sum type — and the sum type looks like it's way more ergonomic with Python's current typechecker.
While I like Rust — and Result works really well with `?` — it doesn't actually look like that's the best pattern for Python?