Skip to content

Commit d93fddd

Browse files
committed
imprv: Generator: Add deprecations
1 parent 7e1758c commit d93fddd

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

tools/generate.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,9 @@ def _build(parent: ObjectT, namespace: str, overrides: dict[str, str]) -> str:
339339
typings = "from typing import Any, Callable, Literal, Optional, Tuple, Type, TypeVar, Sequence"
340340

341341
typevars: list[str] = []
342-
imports: list[str] = []
342+
imports: list[str] = ["from typing_extensions import deprecated"]
343343
if "cairo" in ns:
344-
imports = ["import cairo"]
344+
imports += ["import cairo"]
345345
typevars.append('_SomeSurface = TypeVar("_SomeSurface", bound=cairo.Surface)')
346346
ns.remove("cairo")
347347

@@ -368,7 +368,7 @@ def _generate_full_name(prefix: str, name: str) -> str:
368368
def _build_function_info(
369369
current_namespace: str,
370370
name: str,
371-
function: (GI.FunctionInfo | GI.VFuncInfo),
371+
function: GI.FunctionInfo | GI.VFuncInfo,
372372
in_class: Optional[Any],
373373
needed_namespaces: set[str],
374374
return_signature: Optional[str] = None,
@@ -601,6 +601,14 @@ def _gi_build_stub(
601601

602602
# Functions
603603
for name in sorted(functions):
604+
if hasattr(functions[name], "is_deprecated"):
605+
deprecated = functions[name].is_deprecated()
606+
if deprecated:
607+
if in_class:
608+
ret += "@deprecated('This method is deprecated')\n"
609+
else:
610+
ret += "@deprecated('This function is deprecated')\n"
611+
604612
override = _check_override(prefix_name, name, overrides)
605613
if override:
606614
ret += override + "\n"
@@ -615,6 +623,11 @@ def _gi_build_stub(
615623

616624
# Classes
617625
for name, obj in sorted(classes.items()):
626+
if hasattr(obj, "__info__") and hasattr(obj.__info__, "is_deprecated"):
627+
deprecated = obj.__info__.is_deprecated()
628+
if deprecated:
629+
ret += "@deprecated('This class is deprecated')\n"
630+
618631
override = _check_override(prefix_name, name, overrides)
619632
if override:
620633
ret += override + "\n\n"

0 commit comments

Comments
 (0)