mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
43 lines
869 B
Python
43 lines
869 B
Python
# 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
|