What does it mean for a `TypedDict` to have a `ClassVar` field?

Consider the following snippet:

(playgrounds: Pyright, Mypy, Pyre)

from typing import ClassVar, TypedDict

class TD(TypedDict):
    v: ClassVar[int]

TD(a = 0)  # pyright => error: No overloads for "__init__" match the provided arguments
           # mypy    => error: Missing key "v" for TypedDict "TD"
           # pyre    => error: Unexpected keyword argument `a` to call `TD.__init__`.
           # pytype  => error: Expected: (*, v); Actually passed: (a)

TD(v = 0)  # pyright => fine
           # mypy    => fine
           # pyre    => fine
           # pytype  => error: Expected: (*, v: ClassVar[int]); Actually passed: (v: int)

TD()       # pyright => error: No overloads for "__init__" match the provided arguments
           # mypy    => error: Missing key "v" for TypedDict "TD"
           # pyre    => error: Call `TD.__init__` expects argument `v`.
           # pytype  => error: Expected: (*, v); Actually passed: ()

Pyright, Mypy and Pyre consider v a required keyword argument, while Pytype fails all calls. Yet none of them thinks the declaration of v is a problem.

The specification’s ClassVar and TypedDict chapters currently don’t say anything about their interactions.

Should ClassVar be allowed within the body of a TypedDict?

Probably it should be disallowed, type checkers should raise an error stating ClassVar is invalid in this context. I don’t know if is worth updating the typing specification?

I think that TypedDict definition will error at runtime, right? So yeah, seems like a diagnostic a type checker could provide.

correct:

>>> from typing import ClassVar, TypedDict
... 
... class TD(TypedDict):
...     v: ClassVar[int]
...     
Traceback (most recent call last):
  File "<python-input-0>", line 3, in <module>
    class TD(TypedDict):
        v: ClassVar[int]
  File "/Users/alexw/.pyenv/versions/3.13.0/lib/python3.13/typing.py", line 3164, in __new__
    n: _type_check(tp, msg, module=tp_dict.__module__)
       ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alexw/.pyenv/versions/3.13.0/lib/python3.13/typing.py", line 194, in _type_check
    raise TypeError(f"{arg} is not valid as type argument")
TypeError: typing.ClassVar[int] is not valid as type argument