From a538585ebb562bbf9c52587f0d4210029687e6e0 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 6 May 2026 22:43:52 -0400 Subject: [PATCH] De-duplicate deprecations of module attributes This allows generically deprecating a set of symbols (e.g., everything in `GLibUnix` that's in `GLib`) and then providing a more-specific deprecation for special symbols (e.g., `GLib.unix_signal_add_full`), without triggering a deprecation from the first when making the second. --- gi/overrides/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gi/overrides/__init__.py b/gi/overrides/__init__.py index c475b3953..bc2b3eec6 100644 --- a/gi/overrides/__init__.py +++ b/gi/overrides/__init__.py @@ -14,7 +14,7 @@ from pkgutil import extend_path __path__ = extend_path(__path__, __name__) -# namespace -> (attr, replacement) +# namespace -> {attr -> replacement} _deprecated_attrs = {} @@ -154,7 +154,7 @@ def load_overrides(introspection_module): # Replace deprecated module level attributes with a descriptor # which emits a warning when accessed. - for attr, replacement in _deprecated_attrs.pop(namespace, []): + for attr, replacement in _deprecated_attrs.pop(namespace, {}).items(): try: value = getattr(proxy, attr) except AttributeError: @@ -252,7 +252,7 @@ def deprecated_attr(namespace, attr, replacement): :param str replacement: The replacement text which will be included in the warning. """ - _deprecated_attrs.setdefault(namespace, []).append((attr, replacement)) + _deprecated_attrs.setdefault(namespace, {})[attr] = replacement def deprecated_init( -- GitLab