
This inconsistency should be resolved now. It turned out the `ClassVar` and `Final` behavior wasn't specified in a PEP or test at all so I opened an issue at https://bugs.python.org/issue46491 Since there was agreement, it was merged in 3.11 and backported to 3.10 and 3.9. I've also backported the change to `typing_extensions` and opened issues to change type checker behavior or verified it already works in mypy, pyright, pyre, and pytype. Thanks everyone for help. I've opened an issue for the corresponding change in `dataclasses` at https://bugs.python.org/issue46511 which is a tad more involved and currently seeking feedback on the typing approach to take. https://github.com/python/mypy/issues/12061 https://github.com/microsoft/pyright/commit/8ce7fa6e0ad883fb17407add955273bb... https://github.com/facebook/pyre-check/issues/577 https://github.com/google/pytype/issues/1110