commit: 9f82623555bffdc6a0a3a9ff7e0b6b60962b57b8
Author: Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Sun Dec 14 17:00:57 2025 +0000
Commit: Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Mon Dec 15 12:42:10 2025 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=9f826235
s/combine_classes/combine_metaclasses/ since it's just for metaclasses
Signed-off-by: Brian Harring <ferringb <AT> gmail.com>
src/snakeoil/klass/__init__.py | 6 +++---
src/snakeoil/klass/util.py | 4 ++--
tests/klass/test_util.py | 18 ++++++++++--------
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/snakeoil/klass/__init__.py b/src/snakeoil/klass/__init__.py
index 36f5cc7..4603a08 100644
--- a/src/snakeoil/klass/__init__.py
+++ b/src/snakeoil/klass/__init__.py
@@ -8,7 +8,7 @@ involved in writing classes.
__all__ = (
"abstractclassvar",
- "combine_classes",
+ "combine_metaclasses",
"generic_equality",
"reflective_hash",
"inject_richcmp_methods_from_cmp",
@@ -66,7 +66,7 @@ from .properties import (
jit_attr_none,
)
from .util import (
- combine_classes,
+ combine_metaclasses,
copy_docs,
get_attrs_of,
get_slot_of,
@@ -350,7 +350,7 @@ def generic_equality(
removal_in=(0, 12, 0),
)
class chained_getter(
- GenericEquality, metaclass=combine_classes(WeakInstMeta, abc.ABCMeta)
+ GenericEquality, metaclass=combine_metaclasses(WeakInstMeta, abc.ABCMeta)
):
"""
Deprecated. Use operator.attrgetter instead.
diff --git a/src/snakeoil/klass/util.py b/src/snakeoil/klass/util.py
index 6d39a97..b92950b 100644
--- a/src/snakeoil/klass/util.py
+++ b/src/snakeoil/klass/util.py
@@ -5,7 +5,7 @@ __all__ = (
"get_slots_of",
"get_subclasses_of",
"is_metaclass",
- "combine_classes",
+ "combine_metaclasses",
"copy_class_docs",
"copy_docs",
"ClassSlotting",
@@ -162,7 +162,7 @@ def get_instances_of(cls: type, getattribute=False) ->
list[type]:
@functools.lru_cache
-def combine_classes(kls: type, *extra: type) -> type:
+def combine_metaclasses(kls: type, *extra: type) -> type:
"""Given a set of classes, combine this as if one had wrote the class by
hand
This is primarily for composing metaclasses on the fly; this:
diff --git a/tests/klass/test_util.py b/tests/klass/test_util.py
index 3fc4008..d33ec9a 100644
--- a/tests/klass/test_util.py
+++ b/tests/klass/test_util.py
@@ -8,7 +8,7 @@ import pytest
from snakeoil.klass.util import (
ClassSlotting,
- combine_classes,
+ combine_metaclasses,
get_attrs_of,
get_instances_of,
get_slots_of,
@@ -103,7 +103,7 @@ def test_slots_of():
] == list(get_slots_of(kls4))
-def test_combine_classes():
+def test_combine_metaclasses():
class kls1(type):
pass
@@ -114,20 +114,22 @@ def test_combine_classes():
pass
# assert it requires at least one arg
- pytest.raises(TypeError, combine_classes)
+ pytest.raises(TypeError, combine_metaclasses)
- assert combine_classes(kls1) is kls1, "unneeded derivative metaclass was
created"
+ assert combine_metaclasses(kls1) is kls1, (
+ "unneeded derivative metaclass was created"
+ )
# assert that it refuses duplicats
- pytest.raises(TypeError, combine_classes, kls1, kls1)
+ pytest.raises(TypeError, combine_metaclasses, kls1, kls1)
# there is caching, thus also do identity check whilst checking the MRO
chain
- kls = combine_classes(kls1, kls2, kls3)
- assert kls is combine_classes(kls1, kls2, kls3), (
+ kls = combine_metaclasses(kls1, kls2, kls3)
+ assert kls is combine_metaclasses(kls1, kls2, kls3), (
"combine_metaclass uses lru_cache to avoid generating duplicate
classes, however this didn't cache"
)
- combined = combine_classes(kls1, kls2)
+ combined = combine_metaclasses(kls1, kls2)
assert [combined, kls1, kls2, type, object] == list(combined.__mro__)