jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/981611 )

Change subject: [IMPR] Add Namespace attributes during class creation
......................................................................

[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(-)

Approvals:
  Xqt: Looks good to me, approved
  jenkins-bot: Verified




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 https://gerrit.wikimedia.org/r/c/pywikibot/core/+/981611
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I32783800dc1aec0e0823fa8dc6bc5309dea93ca7
Gerrit-Change-Number: 981611
Gerrit-PatchSet: 2
Gerrit-Owner: Mpaa <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to