# SPDX-License-Identifier: MIT import attr import attrs @attr.define() class Define: a: str b: int reveal_type(Define.__init__) # noqa: F821 @attr.define() class DefineConverter: with_converter: int = attr.field(converter=int) reveal_type(DefineConverter.__init__) # noqa: F821 DefineConverter(with_converter=b"42") @attr.frozen() class Frozen: a: str d = Frozen("a") d.a = "new" reveal_type(d.a) # noqa: F821 @attr.define(frozen=True) class FrozenDefine: a: str d2 = FrozenDefine("a") d2.a = "new" reveal_type(d2.a) # noqa: F821 # Field-aliasing works @attrs.define class AliasedField: _a: int = attrs.field(alias="_a") af = AliasedField(42) reveal_type(af.__init__) # noqa: F821 # unsafe_hash is accepted @attrs.define(unsafe_hash=True) class Hashable: pass