Page MenuHomePhabricator
Paste P7321

T122763
ActivePublic

Authored by Dalba on Jul 1 2018, 10:58 AM.
Tags
None
Referenced Files
F23173966: T122763
Jul 1 2018, 10:58 AM
Subscribers
None
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index c305dda8..61583fe3 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -563,7 +563,10 @@ class ParamInfo(Container):
modules = self._normalize_modules(modules)
else:
# We do know the valid action modules and require a subset
+ modules = self._modules_to_set(modules)
assert not modules - self._action_modules - self.root_modules
+ else:
+ modules = self._modules_to_set(modules)
self._fetch(modules)
@@ -735,11 +738,23 @@ class ParamInfo(Container):
assert param['name'] == 'generator' and \
submodules >= set(param['type'])
+ @staticmethod
+ def _modules_to_set(modules):
+ """Return modules as a set.
+
+ @type modules: Iterable, basestring, set
+ @rtype: set
+ """
+ if isinstance(modules, set):
+ return modules
+ if isinstance(modules, basestring):
+ return set(modules.split('|'))
+ return set(modules)
+
def _normalize_modules(self, modules):
"""Add query+ to any query module name not also in action modules."""
# Users will supply the wrong type, and expect it to work.
- if isinstance(modules, basestring):
- modules = set(modules.split('|'))
+ modules = self._modules_to_set(modules)
assert(self._action_modules)