| [case updateMagicField] | |
| from attrs import Attribute | |
| import m | |
| def g() -> Attribute[int]: | |
| return m.A.__attrs_attrs__[0] | |
| [file m.py] | |
| from attrs import define | |
| @define | |
| class A: | |
| a: int | |
| [file m.py.2] | |
| from attrs import define | |
| @define | |
| class A: | |
| a: float | |
| [builtins fixtures/plugin_attrs.pyi] | |
| [out] | |
| == | |
| main:5: error: Incompatible return value type (got "Attribute[float]", expected "Attribute[int]") | |
| [case magicAttributeConsistency] | |
| import m | |
| [file c.py] | |
| from attrs import define | |
| @define | |
| class A: | |
| a: float | |
| b: int | |
| [builtins fixtures/plugin_attrs.pyi] | |
| [file m.py] | |
| from c import A | |
| A.__attrs_attrs__.a | |
| [file m.py.2] | |
| from c import A | |
| A.__attrs_attrs__.b | |
| [out] | |
| == | |
| [case magicAttributeConsistency2-only_when_cache] | |
| [file c.py] | |
| import attrs | |
| @attrs.define | |
| class Entry: | |
| var: int | |
| [builtins fixtures/plugin_attrs.pyi] | |
| [file m.py] | |
| from typing import Any, ClassVar, Protocol | |
| from c import Entry | |
| class AttrsInstance(Protocol): | |
| __attrs_attrs__: ClassVar[Any] | |
| def func(e: AttrsInstance) -> None: ... | |
| func(Entry(2)) | |
| [file m.py.2] | |
| from typing import Any, ClassVar, Protocol | |
| from c import Entry | |
| class AttrsInstance(Protocol): | |
| __attrs_attrs__: ClassVar[Any] | |
| def func(e: AttrsInstance) -> int: | |
| return 2 # Change return type to force reanalysis | |
| func(Entry(2)) | |
| [out] | |
| == |