commit:     45aab3976aa9b7f3c17d6a41e93554e0c4cbd9ab
Author:     Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Fri Nov 28 21:42:05 2025 +0000
Commit:     Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Fri Nov 28 21:46:31 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=45aab397

feat!: remove klass.aliased

I already marked it deprecated, but in tracing, nothing uses it,
so remove it fully now.

Signed-off-by: Brian Harring <ferringb <AT> gmail.com>

 src/snakeoil/klass/__init__.py   |  4 ----
 src/snakeoil/klass/properties.py | 46 ----------------------------------------
 2 files changed, 50 deletions(-)

diff --git a/src/snakeoil/klass/__init__.py b/src/snakeoil/klass/__init__.py
index 15102e2..1e5516a 100644
--- a/src/snakeoil/klass/__init__.py
+++ b/src/snakeoil/klass/__init__.py
@@ -27,8 +27,6 @@ __all__ = (
     "immutable_instance",
     "inject_immutable_instance",
     "alias_method",
-    "aliased",
-    "alias",
     "SlotsPicklingMixin",
     "DirProxy",
     "GetAttrProxy",
@@ -54,10 +52,8 @@ from .deprecated import (
 )
 from .properties import (
     _uncached_singleton,  # noqa: F401 .  This exists purely due to a stupid 
usage of pkgcore.ebuild.profile which is being removed.
-    alias,
     alias_attr,
     alias_method,
-    aliased,
     cached_property,
     cached_property_named,
     jit_attr,

diff --git a/src/snakeoil/klass/properties.py b/src/snakeoil/klass/properties.py
index 0ebc373..82e471f 100644
--- a/src/snakeoil/klass/properties.py
+++ b/src/snakeoil/klass/properties.py
@@ -302,49 +302,3 @@ def alias_method(attr, name=None, doc=None):
     if name:
         _asecond_level_call.__name__ = name
     return _asecond_level_call
-
-
-@deprecated("snakeoil.klass.alias will be removed in future versions")
-class alias:
-    """Decorator for making methods callable through aliases.
-
-    This decorator must be used inside a class decorated with @aliased.
-
-    Example usage:
-
-    >>> from snakeoil.klass import aliased, alias
-    >>> @aliased
-    >>> class Speak:
-    ...     @alias('yell', 'scream')
-    ...     def shout(message):
-    ...         return message.upper()
-    >>>
-    >>> speak = Speak()
-    >>> assert speak.shout('foo') == speak.yell('foo') == speak.scream('foo')
-    """
-
-    def __init__(self, *aliases):
-        self.aliases = set(aliases)
-
-    def __call__(self, func):
-        func._aliases = self.aliases
-        return func
-
-
-def aliased(cls):
-    """Class decorator used in combination with @alias method decorator."""
-    orig_methods = cls.__dict__.copy()
-    seen_aliases = set()
-    for _name, method in orig_methods.items():
-        if hasattr(method, "_aliases"):
-            collisions = method._aliases.intersection(
-                orig_methods.keys() | seen_aliases
-            )
-            if collisions:
-                raise ValueError(
-                    f"aliases collide with existing attributes: {', 
'.join(collisions)}"
-                )
-            seen_aliases |= method._aliases
-            for alias in method._aliases:
-                setattr(cls, alias, method)
-    return cls

Reply via email to