
Following up on Gregory's good overview on my bpo comment, If you add this rule, I'll need to add logic that works around this for runtime annotation using library. The primary motivation of Annotated[T, x, y, ...] is for x to be used for non-type checkers to attach arbitrary metadata they use as needed. I currently use the metadata to define parser information + docstrings on top of the type T as a way to have type safe json/yaml for more complex python objects. For my usage anywhere var: T is legal, var: Annotated[T, ...] should be legal and each edge case requires adding an edge condition to my parsing rules to work around it. Annotated I ideally would view as purely Identity to any typeform. Not just python class types, but other special type form like final/classvar/others I'm unaware of. The only type checker expectation I have is the first argument is a valid type annotation and other arguments are syntactically valid python objects. I would expect any other library using Annotated for it's purpose of examining other metadata will need similar edge case logic to handle typeddicts properly.