attrs/tests/dataclass_transform_example.py

58 lines
832 B
Python
Raw Normal View History

2021-12-27 08:29:09 +00:00
# SPDX-License-Identifier: MIT
import attr
2022-11-30 15:04:57 +00:00
import attrs
@attr.define()
class Define:
a: str
b: int
reveal_type(Define.__init__) # noqa
@attr.define()
class DefineConverter:
# mypy plugin adapts the "int" method signature, pyright does not
with_converter: int = attr.field(converter=int)
reveal_type(DefineConverter.__init__) # noqa
# mypy plugin supports attr.frozen, pyright does not
@attr.frozen()
class Frozen:
a: str
d = Frozen("a")
d.a = "new"
reveal_type(d.a) # noqa
# but pyright supports attr.define(frozen)
@attr.define(frozen=True)
class FrozenDefine:
a: str
d2 = FrozenDefine("a")
d2.a = "new"
reveal_type(d2.a) # noqa
2022-11-30 15:04:57 +00:00
# Field-aliasing works
@attrs.define
class AliasedField:
_a: int = attrs.field(alias="_a")
af = AliasedField(42)
reveal_type(af.__init__) # noqa