Do you prefer:
@attr.s(frozen=True)
class Person(BaseModel):
"""Represents the author/committer of a revision or release."""
fullname = attrib_typecheck(type=bytes, validator=type_validator())
name = attrib_typecheck(type=Optional[bytes], validator=type_validator())
email = attrib_typecheck(type=Optional[bytes], validator=type_validator())
or
@attr.s(frozen=True)
class Person(BaseModel):
"""Represents the author/committer of a revision or release."""
fullname = attrib_typecheck(type=bytes)
name = attrib_typecheck(type=Optional[bytes])
email = attrib_typecheck(type=Optional[bytes])
fullname.validator(type_validator())
name.validator(type_validator())
email.validator(type_validator())