1) To me, "the function I am calling is deprecated" does not seem to violate any typing-related constraints, at least not in a traditional sense.
Well, deprecation in Python usually implies that at some future point the function (etc.) won't exist at all, so we can see this as type-checking for multiple versions at once.
2) Let's assume that we end up deciding we want to support deprecation detection in the type system. In that case, I would still argue against relying on `Annotated` for the job.
Agreed. `Annotated` is a measure of last resort.