jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/904576 )
Change subject: [IMPR] Improvements for APISite.preloadpages
......................................................................
[IMPR] Improvements for APISite.preloadpages
- Don't show the "Retrieving <num> pages from site" message by default:
add a "quiet" parameter to Site.preloadpages to suppress the message
by default
- add this parameter to PreloadingGenerator and DequePreloadingGenerator but
enable the message here by default
- also enable the message within interwiki.py
- set default value of groupsize parameter to None;
in this case APISite.maxlimit is used as default value
- use this default value in archivebot.py
- update tests
Change-Id: Ie534a1360329463b9c8df27b41e61d78da816968
---
M scripts/interwiki.py
M tests/site_generators_tests.py
M pywikibot/site/_generators.py
M scripts/archivebot.py
M pywikibot/pagegenerators/__init__.py
5 files changed, 69 insertions(+), 29 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators/__init__.py b/pywikibot/pagegenerators/__init__.py
index 4608b6c..661dacb 100644
--- a/pywikibot/pagegenerators/__init__.py
+++ b/pywikibot/pagegenerators/__init__.py
@@ -13,7 +13,7 @@
¶ms;
"""
#
-# (C) Pywikibot team, 2008-2022
+# (C) Pywikibot team, 2008-2023
#
# Distributed under the terms of the MIT license.
#
@@ -613,13 +613,15 @@
def PreloadingGenerator(generator: Iterable['pywikibot.page.Page'],
- groupsize: int = 50
+ groupsize: int = 50,
+ quiet: bool = False
) -> Iterator['pywikibot.page.Page']:
- """
- Yield preloaded pages taken from another generator.
+ """Yield preloaded pages taken from another generator.
:param generator: pages to iterate over
:param groupsize: how many pages to preload at once
+ :param quiet: If False (default), show the "Retrieving pages"
+ message
"""
# pages may be on more than one site, for example if an interwiki
# generator is used, so use a separate preloader for each site
@@ -633,17 +635,25 @@
if len(sites[site]) >= groupsize:
# if this site is at the groupsize, process it
group = sites.pop(site)
- yield from site.preloadpages(group, groupsize=groupsize)
+ yield from site.preloadpages(group, groupsize=groupsize,
+ quiet=quiet)
for site, pages in sites.items():
# process any leftover sites that never reached the groupsize
- yield from site.preloadpages(pages, groupsize=groupsize)
+ yield from site.preloadpages(pages, groupsize=groupsize, quiet=quiet)
def DequePreloadingGenerator(generator: Iterable['pywikibot.page.Page'],
- groupsize: int = 50
+ groupsize: int = 50,
+ quiet: bool = False
) -> Iterator['pywikibot.page.Page']:
- """Preload generator of type DequeGenerator."""
+ """Preload generator of type DequeGenerator.
+
+ :param generator: pages to iterate over
+ :param groupsize: how many pages to preload at once
+ :param quiet: If False (default), show the "Retrieving pages"
+ message
+ """
assert isinstance(generator, DequeGenerator), \
'generator must be a DequeGenerator object'
@@ -652,7 +662,7 @@
if not page_count:
return
- yield from PreloadingGenerator(generator, page_count)
+ yield from PreloadingGenerator(generator, page_count, quiet)
def PreloadingEntityGenerator(generator: Iterable['pywikibot.page.Page'],
diff --git a/pywikibot/site/_generators.py b/pywikibot/site/_generators.py
index 966c76e..2cb414a 100644
--- a/pywikibot/site/_generators.py
+++ b/pywikibot/site/_generators.py
@@ -89,32 +89,43 @@
self,
pagelist,
*,
- groupsize: int = 50,
+ groupsize: Optional[int] = None,
templates: bool = False,
langlinks: bool = False,
pageprops: bool = False,
categories: bool = False,
- content: bool = True
+ content: bool = True,
+ quiet: bool = True
):
"""Return a generator to a list of preloaded pages.
- Pages are iterated in the same order than in the underlying pagelist.
- In case of duplicates in a groupsize batch, return the first entry.
+ Pages are iterated in the same order than in the underlying
+ pagelist. In case of duplicates in a groupsize batch, return the
+ first entry.
.. versionchanged:: 7.6
*content* parameter was added.
.. versionchanged:: 7.7
*categories* parameter was added.
+ .. versionchanged:: 8.1
+ *groupsize* is maxlimit by default. *quiet* parameter was
+ added. No longer show the "Retrieving pages from site"
+ message by default.
:param pagelist: an iterable that returns Page objects
- :param groupsize: how many Pages to query at a time
- :param templates: preload pages (typically templates) transcluded in
- the provided pages
- :param langlinks: preload all language links from the provided pages
- to other languages
- :param pageprops: preload various properties defined in page content
+ :param groupsize: how many Pages to query at a time. If None
+ (default), :attr:`maxlimit
+ <pywikibot.site._apisite.APISite.maxlimit>` is used.
+ :param templates: preload pages (typically templates)
+ transcluded in the provided pages
+ :param langlinks: preload all language links from the provided
+ pages to other languages
+ :param pageprops: preload various properties defined in page
+ content
:param categories: preload page categories
:param content: preload page content
+ :param quiet: If True (default), do not show the "Retrieving
+ pages" message
"""
props = 'revisions|info|categoryinfo'
if templates:
@@ -126,7 +137,8 @@
if categories:
props += '|categories'
- for sublist in itergroup(pagelist, min(groupsize, self.maxlimit)):
+ groupsize = min(groupsize or self.maxlimit, self.maxlimit)
+ for sublist in itergroup(pagelist, groupsize):
# Do not use p.pageid property as it will force page loading.
pageids = [str(p._pageid) for p in sublist
if hasattr(p, '_pageid') and p._pageid > 0]
@@ -151,8 +163,8 @@
else:
rvgen.request['titles'] = list(cache.keys())
rvgen.request['rvprop'] = self._rvprops(content=content)
- pywikibot.info('Retrieving {} pages from {}.'
- .format(len(cache), self))
+ if not quiet:
+ pywikibot.info(f'Retrieving {len(cache)} pages from {self}.')
for pagedata in rvgen:
pywikibot.debug(f'Preloading {pagedata}')
diff --git a/scripts/archivebot.py b/scripts/archivebot.py
index 05a36ef..07f4771 100755
--- a/scripts/archivebot.py
+++ b/scripts/archivebot.py
@@ -717,9 +717,7 @@
for c in range(counter):
params = self.get_params(thread.timestamp, c + 1)
self.get_archive_page(pattern % params, params)
- list(self.site.preloadpages(
- self.archives.values(),
- groupsize=self.site.maxlimit))
+ list(self.site.preloadpages(self.archives.values()))
while not counter_found and counter > 1 \
and not archive.exists():
diff --git a/scripts/interwiki.py b/scripts/interwiki.py
index d503d69..a8cb116 100755
--- a/scripts/interwiki.py
+++ b/scripts/interwiki.py
@@ -328,7 +328,7 @@
"""
#
-# (C) Pywikibot team, 2003-2022
+# (C) Pywikibot team, 2003-2023
#
# Distributed under the terms of the MIT license.
#
@@ -1992,7 +1992,7 @@
# Get the content of the assembled list in one blow
gen = site.preloadpages(pageGroup, templates=True, langlinks=True,
- pageprops=True)
+ pageprops=True, quiet=False)
for _ in gen:
# we don't want to do anything with them now. The
# page contents will be read via the Subject class.
diff --git a/tests/site_generators_tests.py b/tests/site_generators_tests.py
index 86fcb78..2f5a68a 100755
--- a/tests/site_generators_tests.py
+++ b/tests/site_generators_tests.py
@@ -2203,8 +2203,8 @@
links = list(mysite.pagelinks(mainpage, total=20))
with suppress_warnings(WARN_SITE_CODE, category=UserWarning):
- gen = mysite.preloadpages(links, groupsize=5, langlinks=True)
- pages = list(gen)
+ pages = list(mysite.preloadpages(links, groupsize=5,
+ langlinks=True, quiet=False))
self.assertLength(links, pages)
for page in pages:
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/904576
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: Ie534a1360329463b9c8df27b41e61d78da816968
Gerrit-Change-Number: 904576
Gerrit-PatchSet: 7
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908841 )
Change subject: [tests] Skip upload entry type test on infogalactic wiki
......................................................................
[tests] Skip upload entry type test on infogalactic wiki
Bug: T334729
Change-Id: Id4150014e40c7cd6990c5aee399fc5392df4341b
---
M tests/logentries_tests.py
1 file changed, 17 insertions(+), 3 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/logentries_tests.py b/tests/logentries_tests.py
index 665b4db..6d21d45 100755
--- a/tests/logentries_tests.py
+++ b/tests/logentries_tests.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""Test logentries module."""
#
-# (C) Pywikibot team, 2015-2022
+# (C) Pywikibot team, 2015-2023
#
# Distributed under the terms of the MIT license.
#
@@ -143,8 +143,12 @@
"""Test a single logtype entry."""
site = self.sites[key]['site']
if logtype not in site.logtypes:
- self.skipTest('{}: "{}" logtype not available on {}.'
- .format(key, logtype, site))
+ self.skipTest(
+ f'{key}: {logtype!r} logtype not available on {site}.')
+ if logtype == 'upload' and key == 'old':
+ self.skipTest(f'{key}: frequently timeouts for '
+ f'{logtype!r} logtype on {site} (T334729).')
+
self._test_logevent(logtype)
return test_logevent
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908841
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: Id4150014e40c7cd6990c5aee399fc5392df4341b
Gerrit-Change-Number: 908841
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908831 )
Change subject: [bugfix] only get HTTPStatus enum in site_detect check_response
......................................................................
[bugfix] only get HTTPStatus enum in site_detect check_response
- The description is used later within the exception message.
Instead of raising AttributeError a ClientError is raised then.
- Update tests accordingly.
Bug: T334728
Change-Id: If0eb80e5cf08115550ce6563b3759152256d2867
---
M tests/site_detect_tests.py
M pywikibot/site_detect.py
2 files changed, 19 insertions(+), 5 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site_detect.py b/pywikibot/site_detect.py
index 5dde965..c79983f 100644
--- a/pywikibot/site_detect.py
+++ b/pywikibot/site_detect.py
@@ -295,7 +295,7 @@
]: # highest http status code first
if response.status_code >= status_code:
try:
- status = HTTPStatus(response.status_code).description
+ status = HTTPStatus(response.status_code)
except ValueError as err:
m = re.search(r'\d{3}', err.args[0], flags=re.ASCII)
if not m:
diff --git a/tests/site_detect_tests.py b/tests/site_detect_tests.py
index 024f829..ca3be3c 100755
--- a/tests/site_detect_tests.py
+++ b/tests/site_detect_tests.py
@@ -14,7 +14,7 @@
import requests.exceptions as requests_exceptions
import pywikibot
-from pywikibot.exceptions import ServerError
+from pywikibot.exceptions import ClientError, ServerError
from pywikibot.site_detect import MWSite
from tests.aspects import PatchingTestCase, TestCase
@@ -38,14 +38,14 @@
self.assertIsInstance(MWSite(url), MWSite)
def assertNoSite(self, url: str):
- """
- Assert a url is not a MediaWiki site.
+ """Assert a url is not a MediaWiki site.
:param url: Url of tested site
:raises AssertionError: Site under url is MediaWiki powered
"""
with self.assertRaises((AttributeError,
- ConnectionError,
+ ClientError,
+ ConnectionError, # different from requests
RuntimeError,
ServerError,
requests_exceptions.ConnectionError,
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908831
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: If0eb80e5cf08115550ce6563b3759152256d2867
Gerrit-Change-Number: 908831
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908829 )
Change subject: [tests] Remove obsolete sites from TestGenerateFamilyFiles test
......................................................................
[tests] Remove obsolete sites from TestGenerateFamilyFiles test
Closed wikis may not have a main page and the test will fail in such
case. Remove obsolete wikis from CountEqual test but add one to test
this behaviour
Bug: T334714
Change-Id: Iafbabb24e2ed96c952557cb68149e0faf28fddbc
---
M tests/generate_family_file_tests.py
1 file changed, 23 insertions(+), 2 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/generate_family_file_tests.py b/tests/generate_family_file_tests.py
index 07cd30a..f219ac6 100755
--- a/tests/generate_family_file_tests.py
+++ b/tests/generate_family_file_tests.py
@@ -24,6 +24,11 @@
"""Only load up to additional ten different wikis randomly."""
save = self.langs
self.langs = sample(save, min(len(save), 10))
+ for wiki in save: # add closed wiki due to T334714
+ if wiki['prefix'] == 'ii' and 'ii' not in self.langs:
+ self.langs.append(wiki)
+ break
+
self.prefixes = [item['prefix'] for item in self.langs]
super().getapis()
self.langs = save
@@ -74,8 +79,10 @@
if self.site.family.name not in ('wsbeta', 'musicbrainz'):
with self.subTest(test='Test element counts'):
if self.site.lang not in gen.prefixes:
- gen.prefixes += [self.site.lang]
- self.assertCountEqual(gen.prefixes, gen.wikis)
+ gen.prefixes.append(self.site.lang)
+ obsolete = self.site.family.interwiki_removals
+ self.assertCountEqual(set(gen.prefixes) - obsolete,
+ set(gen.wikis) - obsolete)
# test creating Site from url
# only test Sites for downloaded wikis (T241413)
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/908829
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: Iafbabb24e2ed96c952557cb68149e0faf28fddbc
Gerrit-Change-Number: 908829
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/804704 )
Change subject: [IMPR] Do not show a warning if password is entered
......................................................................
[IMPR] Do not show a warning if password is entered
Bug: T178061
Change-Id: I45a664b2f322a81230bf9d230e5c7e4425c9dc8e
---
M pywikibot/login.py
1 file changed, 12 insertions(+), 2 deletions(-)
Approvals:
Matěj Suchánek: Looks good to me, but someone else must approve
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/login.py b/pywikibot/login.py
index e284b98..97d6dbc 100644
--- a/pywikibot/login.py
+++ b/pywikibot/login.py
@@ -287,9 +287,9 @@
'Password for user {name} on {site} (no characters will be '
'shown):'.format(name=self.login_name, site=self.site),
password=True)
+ else:
+ pywikibot.info(f'Logging in to {self.site} as {self.login_name}')
- pywikibot.info('Logging in to {site} as {name}'
- .format(name=self.login_name, site=self.site))
try:
self.login_to_site()
except APIError as e:
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/804704
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: I45a664b2f322a81230bf9d230e5c7e4425c9dc8e
Gerrit-Change-Number: 804704
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/904878 )
Change subject: [i18n] Enable preleading Bot: prefix with twtranslate messages
......................................................................
[i18n] Enable preleading Bot: prefix with twtranslate messages
- add new function get_bot_prefix() to get a Bot: prefix which depends
on config setting:
- modify twtranslate to prepend the bot prefix
- add 'bot_prefix_summary' to config.py
- add default pywikibot-bot-prefix token for fallback
Bug: T161459
Change-Id: I86da3e4baebb96054d604f13bcb8a4f48274ecce
---
M pywikibot/i18n.py
M pywikibot/config.py
M pywikibot/scripts/i18n/pywikibot/en.json
3 files changed, 81 insertions(+), 13 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/config.py b/pywikibot/config.py
index 02ff93e..03628a6 100644
--- a/pywikibot/config.py
+++ b/pywikibot/config.py
@@ -241,6 +241,14 @@
# relevant summary for bot edits
default_edit_summary = 'Pywikibot ' + pwb_version
+# Edit summary prefix
+# if a str, always use this as summary prefix e.g. 'Bot:' for all sites
+# if True, always use a summary prefix from i18n
+# if False, never use a summary prefix
+# if None, the i18n summary prefix is used for botflag accounts only
+# NOTE: this feature is not yet implemented for all scripts
+bot_prefix_summary: Union[bool, str, None] = None
+
# What permissions to use to set private files to it
# such as password file.
#
diff --git a/pywikibot/i18n.py b/pywikibot/i18n.py
index a18fa8a..32383f1 100644
--- a/pywikibot/i18n.py
+++ b/pywikibot/i18n.py
@@ -15,7 +15,7 @@
See :py:obj:`twtranslate` for more information on the messages.
"""
#
-# (C) Pywikibot team, 2004-2022
+# (C) Pywikibot team, 2004-2023
#
# Distributed under the terms of the MIT license.
#
@@ -653,14 +653,51 @@
return trans
-def twtranslate(source: STR_OR_SITE_TYPE,
- twtitle: str,
- parameters: Union[Sequence[str], Mapping[str, int],
- None] = None,
- *,
- fallback: bool = True,
- fallback_prompt: Optional[str] = None,
- only_plural: bool = False) -> Optional[str]:
+def get_bot_prefix(source: STR_OR_SITE_TYPE, use_prefix: bool) -> str:
+ """Get the bot prefix string like 'Bot: ' including space delimiter.
+
+ .. note: If *source* is a str and ``config.bot_prefix`` is set to
+ None, it cannot be determined whether the current user is a bot
+ account. In this cas the prefix will be returned.
+ .. versionadded:: 8.1
+
+ :param source: When it's a site it's using the lang attribute and otherwise
+ it is using the value directly.
+ :param use_prefix: If True, return a bot prefix which depends on the
+ ``config.bot_prefix`` setting.
+ """
+ config_prefix = config.bot_prefix_summary
+ if not use_prefix or config_prefix is False:
+ return ''
+
+ if isinstance(config_prefix, str):
+ return config_prefix + ' '
+
+ try:
+ prefix = twtranslate(source, 'pywikibot-bot-prefix') + ' '
+ except pywikibot.exceptions.TranslationError:
+ # the 'pywikibot' package is available but the message key may
+ # be missing
+ prefix = 'Bot: '
+
+ if config_prefix is True \
+ or not hasattr(source, 'lang') \
+ or source.isBot(source.username()):
+ return prefix
+
+ return ''
+
+
+def twtranslate(
+ source: STR_OR_SITE_TYPE,
+ twtitle: str,
+ parameters: Union[Sequence[str], Mapping[str, int], None] = None,
+ *,
+ fallback: bool = True,
+ fallback_prompt: Optional[str] = None,
+ only_plural: bool = False,
+ bot_prefix: bool = False
+) -> Optional[str]:
r"""
Translate a message using JSON files in messages_package_name.
@@ -712,8 +749,11 @@
... ) % {'descr': 'seulement'})
'Robot: Changer seulement quelques pages.'
+ .. versionchanged:: 8.1
+ the *bot_prefix* parameter was added.
+
:param source: When it's a site it's using the lang attribute and otherwise
- it is using the value directly.
+ it is using the value directly. The site object is recommended.
:param twtitle: The TranslateWiki string title, in <package>-<key> format
:param parameters: For passing parameters. It should be a mapping but for
backwards compatibility can also be a list, tuple or a single value.
@@ -725,9 +765,13 @@
plural instances. If this is False it will apply the parameters also
to the resulting string. If this is True the placeholders must be
manually applied afterwards.
+ :param bot_prefix: If True, prepend the message with a bot prefix
+ which depends on the ``config.bot_prefix`` setting
:raise IndexError: If the language supports and requires more plurals than
defined for the given translation template.
"""
+ prefix = get_bot_prefix(source, use_prefix=bot_prefix)
+
if not messages_available():
if fallback_prompt:
if parameters and not only_plural:
@@ -741,7 +785,6 @@
.format(_messages_package_name, twtitle, __url__))
# if source is a site then use its lang attribute, otherwise it's a str
-
lang = getattr(source, 'lang', source)
# There are two possible failure modes: the translation dict might not have
@@ -774,8 +817,8 @@
.format(type(parameters).__name__))
if not only_plural and parameters:
- return trans % parameters
- return trans
+ trans = trans % parameters
+ return prefix + trans
def twhas_key(source: STR_OR_SITE_TYPE, twtitle: str) -> bool:
diff --git a/pywikibot/scripts/i18n/pywikibot/en.json b/pywikibot/scripts/i18n/pywikibot/en.json
index d731bfe..ece08e2 100644
--- a/pywikibot/scripts/i18n/pywikibot/en.json
+++ b/pywikibot/scripts/i18n/pywikibot/en.json
@@ -9,6 +9,7 @@
"Xqt"
]
},
+ "pywikibot-bot-prefix": "Bot:",
"pywikibot-cosmetic-changes": "; cosmetic changes",
"pywikibot-enter-category-name": "Please enter the category name:",
"pywikibot-enter-file-links-processing": "Links to which file page should be processed?",
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/904878
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: I86da3e4baebb96054d604f13bcb8a4f48274ecce
Gerrit-Change-Number: 904878
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: MarcoAurelio <maurelio(a)toolforge.org>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged