jenkins-bot has submitted this change and it was merged.
Change subject: [IMPR] Provide global step parameter via config2.py ......................................................................
[IMPR] Provide global step parameter via config2.py
step parameter is reimplemented as config setting used by api. It could be set either in user_config.py or given as global option -step:<value>.
As before, default is 50 and setting could be overwriten by set_query_increment() during runtime.
Bug: T109208 Change-Id: I02c6ea9c1a8fc6c3cd4fdf1e39f7317b671ffa10 --- M pywikibot/bot.py M pywikibot/config2.py M pywikibot/data/api.py M pywikibot/pagegenerators.py 4 files changed, 23 insertions(+), 16 deletions(-)
Approvals: Mpaa: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/bot.py b/pywikibot/bot.py index 895e56f..bb986e2 100644 --- a/pywikibot/bot.py +++ b/pywikibot/bot.py @@ -908,7 +908,7 @@ daemonize.daemonize(redirect_std=redirect_std) else: # the argument depends on numerical config settings - # e.g. -maxlag: + # e.g. -maxlag and -step: try: _arg = option[1:] # explicitly check for int (so bool doesn't match) diff --git a/pywikibot/config2.py b/pywikibot/config2.py index 0491846..de34c9b 100644 --- a/pywikibot/config2.py +++ b/pywikibot/config2.py @@ -618,6 +618,10 @@ # running solve_disambiguation.py with the -primary argument. special_page_limit = 500
+# Maximum of pages which can be retrieved at one time from wiki server. +# -1 indicates limit by api restriction +step = -1 + # Maximum number of times to retry an API request before quitting. max_retries = 25 # Minimum time to wait before resubmitting a failed API request. diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py index a42caf6..1db496c 100644 --- a/pywikibot/data/api.py +++ b/pywikibot/data/api.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """Interface to Mediawiki's api.php.""" # -# (C) Pywikibot team, 2007-2015 +# (C) Pywikibot team, 2007-2016 # # Distributed under the terms of the MIT license. # @@ -2383,7 +2383,10 @@ self.limit_name = limit_name self.data_name = data_name
- self.query_increment = 50 + if config.step > 0: + self.query_increment = config.step + else: + self.query_increment = None self.limit = None self.starting_offset = kwargs['parameters'].pop(self.continue_name, 0) self.request = self.request_class(**kwargs) @@ -2393,7 +2396,7 @@ """ Set the maximum number of items to be retrieved per API query.
- If not called, the default is 50. + If not called, the default is config.step.
@param value: The value of maximum number of items to be retrieved per API request to set. @@ -2544,7 +2547,10 @@ else: self.request[prefix + 'limit'] = int(param["max"])
- self.api_limit = None + if config.step > 0: + self.api_limit = config.step + else: + self.api_limit = None
if self.limited_module: self.prefix = self.site._paraminfo['query+' + self.limited_module]['prefix'] @@ -2607,13 +2613,15 @@ param = self.site._paraminfo.parameter('query+' + self.limited_module, 'limit') if self.site.logged_in() and self.site.has_right('apihighlimits'): - self.api_limit = int(param["highmax"]) + limit = int(param['highmax']) else: - self.api_limit = int(param["max"]) - pywikibot.debug(u"%s: Set query_limit to %i." - % (self.__class__.__name__, - self.api_limit), - _logger) + limit = int(param['max']) + if self.api_limit is None or limit < self.api_limit: + self.api_limit = limit + pywikibot.debug( + '{0}: Set query_limit to {1}.'.format(self.__class__.__name__, + self.api_limit), + _logger)
def set_namespace(self, namespaces): """Set a namespace filter on this query. diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index 6a59a1d..4507db4 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -696,11 +696,6 @@ u'What namespace are you filtering on?') self._namespaces += value.split(",") return True - elif arg == '-step': - issue_deprecation_warning( - 'The usage of "{0}"'.format(arg), None, 2, - ArgumentDeprecationWarning) - return False elif arg == '-limit': if not value: value = pywikibot.input('What is the limit value?')
pywikibot-commits@lists.wikimedia.org