@@ -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:
368368def _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