diff --git a/crates/ty_python_semantic/resources/mdtest/dataclasses/dataclasses.md b/crates/ty_python_semantic/resources/mdtest/dataclasses/dataclasses.md index 7ed6ea8962..814be60a1c 100644 --- a/crates/ty_python_semantic/resources/mdtest/dataclasses/dataclasses.md +++ b/crates/ty_python_semantic/resources/mdtest/dataclasses/dataclasses.md @@ -444,6 +444,29 @@ To do To do +## `Final` fields + +Dataclass fields can be annotated with `Final`, which means that the field cannot be reassigned +after the instance is created. Fields that are additionally annotated with `ClassVar` are not part +of the `__init__` signature. + +```py +from dataclasses import dataclass +from typing import Final, ClassVar + +@dataclass +class C: + instance_variable: Final[int] = 1 + class_variable1: ClassVar[Final[int]] = 1 + class_variable2: ClassVar[Final[int]] = 1 + +reveal_type(C.__init__) # revealed: (self: C, instance_variable: int = Literal[1]) -> None + +c = C() +# TODO: this should be an error +c.instance_variable = 2 +``` + ## Inheritance ### Normal class inheriting from a dataclass