jenkins-bot submitted this change.

View Change


Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
[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.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I32783800dc1aec0e0823fa8dc6bc5309dea93ca7
Gerrit-Change-Number: 981611
Gerrit-PatchSet: 2
Gerrit-Owner: Mpaa <mpaa.wiki@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged