Yes, exactly. x would have to be str | None to be reachable.
Exactly - something along the lines of "Statement is unreachable".
isn't it perfectly valid to pass None to that function ? It's not like python enforces types at runtime nor at compile time. Right ?
It's not valid from a typing perspective, but python will let you. If you want to disregard types though then none of this matters anyway and you won't get much benefit from these tools
Sure, it's valid python to do that. By that logic you could also pass an int. But the context of this post is that you're using a static type checker.