diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py index c305dda8..cf7df7a0 100644 --- a/pywikibot/data/api.py +++ b/pywikibot/data/api.py @@ -555,6 +555,8 @@ class ParamInfo(Container): # query modules can be prefixed with 'query+' self._init() + modules = self._modules_to_set(modules) + if self._action_modules: # The query module may be added before the action modules have been if 'query' in self._modules: @@ -735,12 +737,21 @@ class ParamInfo(Container): assert param['name'] == 'generator' and \ submodules >= set(param['type']) - 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. + @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): - modules = set(modules.split('|')) + return set(modules.split('|')) + return set(modules) + def _normalize_modules(self, modules): + """Add query+ to any query module name not also in action modules.""" assert(self._action_modules) return {'query+' + mod @@ -759,7 +770,7 @@ class ParamInfo(Container): @rtype: set """ self._init() - return self._normalize_modules(modules) + return self._normalize_modules(self._modules_to_set(modules)) @classmethod def normalize_paraminfo(cls, data):