jenkins-bot has submitted this change and it was merged.

Change subject: Fix Namespace.__repr__
......................................................................


Fix Namespace.__repr__

The __repr__ in the recently added Namespace class is not able to
be used to reconstruct a a Namespace instance, as it pushed an
unexploded kwargs into the constructor, resulting in a variable
'kwargs' being stored in Namespace.info.

Change-Id: I41404c57e58cf80ea259924c1b07e7a397bf8324
---
M pywikibot/site.py
M tests/namespace_tests.py
2 files changed, 35 insertions(+), 3 deletions(-)

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



diff --git a/pywikibot/site.py b/pywikibot/site.py
index 16415fb..597b35d 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -332,10 +332,16 @@
 
     def __repr__(self):
         """Return a reconstructable representation."""
-        return '%s(id=%d, custom_name=%r, canonical_name=%r, aliases=%r, ' \
-               'kwargs=%r)' \
+        if self.info:
+            kwargs = ', ' + ', '.join([key + '=' + repr(value)
+                                       for (key, value) in
+                                       [(key, self.info[key])
+                                        for key in sorted(self.info)]])
+        else:
+            kwargs = ''
+        return '%s(id=%d, custom_name=%r, canonical_name=%r, aliases=%r%s)' \
                % (self.__class__.__name__, self.id, self.custom_name,
-                  self.canonical_name, self.aliases, self.info)
+                  self.canonical_name, self.aliases, kwargs)
 
     @staticmethod
     def builtin_namespaces(use_image_name=False):
diff --git a/tests/namespace_tests.py b/tests/namespace_tests.py
index b6fe44f..cbf69c9 100644
--- a/tests/namespace_tests.py
+++ b/tests/namespace_tests.py
@@ -182,6 +182,32 @@
         self.assertEquals(Namespace.normalize_name(u'::File:'), False)
         self.assertEquals(Namespace.normalize_name(u'::File::'), False)
 
+    def test_repr(self):
+        a = Namespace(id=0, canonical_name=u'Foo')
+        s = repr(a)
+        r = "Namespace(id=0, custom_name=u'Foo', canonical_name=u'Foo', 
aliases=[])"
+        self.assertEquals(s, r)
+
+        a.info['defaultcontentmodel'] = 'bar'
+        r = {'defaultcontentmodel': 'bar'}
+        self.assertEquals(a.info, r)
+
+        s = repr(a)
+        r = "Namespace(id=0, custom_name=u'Foo', canonical_name=u'Foo', 
aliases=[], defaultcontentmodel='bar')"
+        self.assertEquals(s, r)
+
+        a.info['case'] = 'upper'
+        r = {'defaultcontentmodel': 'bar', 'case': 'upper'}
+        self.assertEquals(a.info, r)
+
+        s = repr(a)
+        r = "Namespace(id=0, custom_name=u'Foo', canonical_name=u'Foo', 
aliases=[], case='upper', defaultcontentmodel='bar')"
+        self.assertEquals(s, r)
+
+        b = eval(repr(a))
+        self.assertEquals(a, b)
+        self.assertEquals(a.info, b.info)
+
 
 if __name__ == '__main__':
     try:

-- 
To view, visit https://gerrit.wikimedia.org/r/153790
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I41404c57e58cf80ea259924c1b07e7a397bf8324
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: Mpaa <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to