|
7 | 7 | from collections import defaultdict |
8 | 8 | from typing import TYPE_CHECKING, Any |
9 | 9 |
|
10 | | -from griffe.agents.extensions import VisitorExtension, When |
11 | | -from griffe.agents.nodes import safe_get_annotation |
| 10 | +from griffe import Extension, safe_get_annotation |
12 | 11 | from griffe.docstrings.dataclasses import DocstringParameter, DocstringSectionParameters |
13 | 12 |
|
14 | 13 | from griffe_typingdoc.typing_doc import __typing_doc__ |
|
20 | 19 | from typing import Annotated |
21 | 20 |
|
22 | 21 | if TYPE_CHECKING: |
23 | | - from griffe.dataclasses import Function |
| 22 | + from griffe import Function, ObjectNode |
24 | 23 |
|
25 | 24 |
|
26 | 25 | @__typing_doc__(description="Griffe extension parsing the `typing.doc` decorator.") |
27 | | -class TypingDocExtension(VisitorExtension): |
| 26 | +class TypingDocExtension(Extension): |
28 | 27 | """Griffe extension parsing the `typing.doc` decorator.""" |
29 | 28 |
|
30 | | - when = When.after_all |
31 | | - |
32 | 29 | @__typing_doc__(description="Visit a function definition.") |
33 | | - def visit_functiondef( |
| 30 | + def on_function_instance( |
34 | 31 | self, |
35 | 32 | node: Annotated[ |
36 | | - ast.FunctionDef, |
37 | | - __typing_doc__( |
38 | | - description="The AST node describing the function definition.", |
39 | | - ), |
| 33 | + ast.AST | ObjectNode, |
| 34 | + __typing_doc__(description="The object/AST node describing the function or its definition."), |
40 | 35 | ], |
| 36 | + func: Annotated[Function, __typing_doc__(description="The Griffe function just instantiated.")], |
41 | 37 | ) -> None: |
42 | 38 | """Visit a function definition. |
43 | 39 |
|
44 | 40 | This function takes a function definition node and visits its contents, |
45 | 41 | particularly its decorators, to build up the documentation metadata. |
46 | 42 | """ |
47 | | - func: Function = self.visitor.current.members[node.name] # type: ignore[assignment] |
48 | | - |
49 | 43 | func_doc = {} |
50 | 44 | for decorator_node in node.decorator_list: |
51 | 45 | if isinstance(decorator_node, ast.Call) and decorator_node.func.id == "__typing_doc__": # type: ignore[attr-defined] |
|
0 commit comments