jenkins-bot submitted this change.
[IMPR] Add Namespace attributes during class creation
Add class attributes during class creation and not during import.
Change-Id: I32783800dc1aec0e0823fa8dc6bc5309dea93ca7
---
M pywikibot/site/_namespace.py
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/pywikibot/site/_namespace.py b/pywikibot/site/_namespace.py
index 44114ec..8c0c46a 100644
--- a/pywikibot/site/_namespace.py
+++ b/pywikibot/site/_namespace.py
@@ -6,6 +6,7 @@
#
from __future__ import annotations
+from abc import ABCMeta
from collections.abc import Iterable, Mapping
from enum import IntEnum
from typing import Union
@@ -51,7 +52,16 @@
return name.replace('Mediawiki', 'MediaWiki')
-class Namespace(Iterable, ComparableMixin):
+class MetaNamespace(ABCMeta):
+ """Metaclass for Namespace attribute settings."""
+
+ def __new__(cls, name, bases, dic):
+ """Set Namespace.FOO to BuiltinNamespace.FOO for each builtin ns."""
+ dic.update(BuiltinNamespace.__members__)
+ return super().__new__(cls, name, bases, dic)
+
+
+class Namespace(Iterable, ComparableMixin, metaclass=MetaNamespace):
"""
Namespace site data object.
@@ -305,11 +315,6 @@
return False
-# Set Namespace.FOO to be BuiltinNamespace.FOO for each builtin namespace
-for item in BuiltinNamespace:
- setattr(Namespace, item.name, item)
-
-
class NamespacesDict(Mapping, SelfCallMixin):
"""
To view, visit change 981611. To unsubscribe, or for help writing mail filters, visit settings.