Not for nothing, but static type checking isn't some kind of fad. It's been the rule, not the exception, since the 1980s at least.
You will discover that you reversed the order for parameters to a function by running your code with much less effort than annotating all your code. This type annotation is entirely useless:
def get_user(email: str, create_if_not_exists: bool)