File size: 1,111 Bytes
bbfde3f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Doc:
    """Define the documentation of a type annotation using `Annotated`, to be

        used in class attributes, function and method parameters, return values,

        and variables.



    The value should be a positional-only string literal to allow static tools

    like editors and documentation generators to use it.



    This complements docstrings.



    The string value passed is available in the attribute `documentation`.



    Example:



    ```Python

    from typing import Annotated

    from annotated_doc import Doc



    def hi(name: Annotated[str, Doc("Who to say hi to")]) -> None:

        print(f"Hi, {name}!")

    ```

    """

    def __init__(self, documentation: str, /) -> None:
        self.documentation = documentation

    def __repr__(self) -> str:
        return f"Doc({self.documentation!r})"

    def __hash__(self) -> int:
        return hash(self.documentation)

    def __eq__(self, other: object) -> bool:
        if not isinstance(other, Doc):
            return NotImplemented
        return self.documentation == other.documentation