# from __future__ import annotations import dataclasses import types from typing import Annotated @dataclasses.dataclass(frozen=True) class FuncValidator: func: types.FunctionType @dataclasses.dataclass(frozen=True) class MaxLen: max_length: int whitelisted_words: list[str] def validate(value: str) -> str: return value #: Type alias for a validated string. ValidatedString = Annotated[str, FuncValidator(validate)] def hello(name: Annotated[str, "attribute"]) -> None: """docstring""" pass class AnnotatedAttributes: """docstring""" #: Docstring about the ``name`` attribute. name: Annotated[str, "attribute"] #: Docstring about the ``max_len`` attribute. max_len: list[Annotated[str, MaxLen(10, ['word_one', 'word_two'])]] #: Docstring about the ``validated`` attribute. validated: ValidatedString