# Interaction between special forms and \`type\[T\]\`

**URL:** <https://discuss.python.org/t/interaction-between-special-forms-and-type-t/105455>\
**Category:** Typing\
**Created:** [December 30, 2025, 12:52am UTC](https://discuss.python.org/t/interaction-between-special-forms-and-type-t/105455 "2025-12-30T00:52:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![fangyi-zhou](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/fangyi-zhou/32/33331_2.png) [@fangyi-zhou](https://discuss.python.org/u/fangyi-zhou)\
**Post date:** [December 30, 2025, 12:52am UTC](https://discuss.python.org/t/interaction-between-special-forms-and-type-t/105455/1 "2025-12-30T00:52:08Z")

</div>

I noticed that the spec for the `Annotation` type qualifier has a requirement that `Annotation` cannot be assigned to `type[T]`( [Type qualifiers — typing documentation](https://typing.python.org/en/latest/spec/qualifiers.html#annotated) )

> As with most [special forms](https://typing.python.org/en/latest/spec/glossary.html#term-special-form), `Annotated` is not assignable to `type` or `type[T]`

However, the spec for `type[]` ( [Special types in annotations — typing documentation](https://typing.python.org/en/latest/spec/special-types.html#type) ) seems to disagree on “as with most“ part.

> The value corresponding to `type[C]` must be an actual class object that’s a subtype of `C`, not a [special form](https://typing.python.org/en/latest/spec/glossary.html#term-special-form) or other kind of type.

Digging a little more on the context of the introduction of additional explanation on `Annotated`, I found out this discussion thread ( [Is `Annotated` compatible with `type[T]`?](https://discuss.python.org/t/is-annotated-compatible-with-type-t/43898) ), where it is suggested that a value of `type[T]` should be an instance of `type` from the builtins ( [Is `Annotated` compatible with `type[T]`? - #2 by Jelle](https://discuss.python.org/t/is-annotated-compatible-with-type-t/43898/2) )

Out of curiosity, I checked what are instances of `type` from the `typing` module, and this is what I found [what-are-instance-of-types · GitHub](https://gist.github.com/fangyi-zhou/8d09ee8def2f03f6b72bb48540991def) (running on Python 3.14). Interestingly, I found out that `Generic` is an instance of `type`, although `Generic[T]` isn’t. (In fact, mypy accepts `Generic` as a valid `type[T]`, whereas pyright doesn’t). Similar observation applies to `Union` (although mypy rejects `Union`as a valid `type[T]`)

With that said, I’m seeking clarification on the expected interaction between special forms and `type`.

On the one hand, I don’t see a particular reason why `Annotated` should be a special case in the specification and the conformance test suite. It seems possible to replicate this requirement for other special forms and add corresponding conformance test cases.

Moreover, we could further clarify in the specification which special forms are permitted as assignments to `type` and create positive conformance test cases for them.
