jenkins-bot has submitted this change and it was merged.
Change subject: Fix ambiguous 'User' in APISite docstrings
......................................................................
Fix ambiguous 'User' in APISite docstrings
Change-Id: I7847bdab54976cb8f62027a3c5a4e4766c050377
---
M pywikibot/site.py
1 file changed, 2 insertions(+), 2 deletions(-)
Approvals:
Mpaa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index eae3500..54e78e0 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -4752,7 +4752,7 @@
Block a user for certain amount of time and for a certain reason.
@param user: The username/IP to be blocked without a namespace.
- @type user: User
+ @type user: L{pywikibot.User}
@param expiry: The length or date/time when the block expires. If
'never', 'infinite', 'indefinite' it never does. If the value is
given as a basestring it's parsed by php's strtotime function:
@@ -4798,7 +4798,7 @@
Remove the block for the user.
@param user: The username/IP without a namespace.
- @type user: User
+ @type user: L{pywikibot.User}
@param reason: Reason for the unblock.
@type reason: basestring
"""
--
To view, visit https://gerrit.wikimedia.org/r/213980
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7847bdab54976cb8f62027a3c5a4e4766c050377
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: [IMPROV] chars tests: Check Unicode version
......................................................................
[IMPROV] chars tests: Check Unicode version
Instead of just checking if Python 2 or Python 3 it's checking if the Unicode
version is below 6.3 when U+180e was in the category Zs.
Change-Id: I74b65977f2774b17c7d78d5ae8a27bed6bbf8684
---
M tests/tools_chars_tests.py
1 file changed, 4 insertions(+), 3 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
XZise: Looks good to me, but someone else must approve
jenkins-bot: Verified
diff --git a/tests/tools_chars_tests.py b/tests/tools_chars_tests.py
index 4c44b55..5e2006b 100644
--- a/tests/tools_chars_tests.py
+++ b/tests/tools_chars_tests.py
@@ -9,8 +9,9 @@
__version__ = '$Id$'
-import sys
import unicodedata
+
+from distutils.version import StrictVersion
from pywikibot.tools import chars
@@ -41,8 +42,8 @@
cat = unicodedata.category(char)
if cat not in ('Cf', 'Cn'):
invalid[char] = cat
- if sys.version_info[0] == 2:
- # This category has changed between Unicode 6 and 7 to Cf
+ if StrictVersion(unicodedata.unidata_version) < StrictVersion('6.3'):
+ # This category has changed with Unicode 6.3 to Cf
self.assertEqual(invalid.pop('\u180e'), 'Zs')
self.assertCountEqual(invalid.items(), [])
--
To view, visit https://gerrit.wikimedia.org/r/214047
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I74b65977f2774b17c7d78d5ae8a27bed6bbf8684
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: [FIX] chars test: Apply differences in 2.6/3.3
......................................................................
[FIX] chars test: Apply differences in 2.6/3.3
The test in 7a98d58f was applying the status of the Unicode standard used in
Python 2.7 and 3.4 but Python 3.3 and 2.6 were using revisions of the standards
where additional codepoints weren't defined yet. The test now acknowledges Cn
as a valid category too.
Change-Id: Ia920f892c44a2f35f564a1e371f036ad1984c5ca
---
M tests/tools_chars_tests.py
1 file changed, 2 insertions(+), 8 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/tools_chars_tests.py b/tests/tools_chars_tests.py
index e7c45d1..4c44b55 100644
--- a/tests/tools_chars_tests.py
+++ b/tests/tools_chars_tests.py
@@ -36,18 +36,12 @@
def test_category_cf(self):
"""Test that all characters in _category_cf are actually in Cf."""
invalid = {}
+ # Cn are undefined characters (and were defined later in Unicode)
for char in chars._category_cf:
cat = unicodedata.category(char)
- if cat != 'Cf':
+ if cat not in ('Cf', 'Cn'):
invalid[char] = cat
if sys.version_info[0] == 2:
- # These weren't defined in Unicode 5.2 (which is what Py2 is using)
- self.assertEqual(invalid.pop('\u0604'), 'Cn')
- self.assertEqual(invalid.pop('\u061c'), 'Cn')
- self.assertEqual(invalid.pop('\u2066'), 'Cn')
- self.assertEqual(invalid.pop('\u2067'), 'Cn')
- self.assertEqual(invalid.pop('\u2068'), 'Cn')
- self.assertEqual(invalid.pop('\u2069'), 'Cn')
# This category has changed between Unicode 6 and 7 to Cf
self.assertEqual(invalid.pop('\u180e'), 'Zs')
self.assertCountEqual(invalid.items(), [])
--
To view, visit https://gerrit.wikimedia.org/r/214044
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia920f892c44a2f35f564a1e371f036ad1984c5ca
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: Revert "Use site.lang instead of site.code"
......................................................................
Revert "Use site.lang instead of site.code"
breaks several scripts:
- category_redirect
- category
- clean_sandbox
- commonscat
- disambredir
- featured
- fixing_redirects
- image
- interwiki
- noreferences
- solve_dismabiguation
- welcome
e.g. see bug: T100392
This reverts commit 1b2a7e93a1f040c08edb7c3e29c927a35794bafd.
Change-Id: Ia1fff0c6218daacd57a8e84885da6821b29e0600
---
M pywikibot/i18n.py
1 file changed, 8 insertions(+), 8 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/i18n.py b/pywikibot/i18n.py
index 327abf5..67b227f 100644
--- a/pywikibot/i18n.py
+++ b/pywikibot/i18n.py
@@ -398,9 +398,9 @@
"""
family = pywikibot.config.family
# If a site is given instead of a code, use its language
- if hasattr(code, 'lang'):
+ if hasattr(code, 'code'):
family = code.family.name
- code = code.lang
+ code = code.code
# Check whether xdict has multiple projects
if isinstance(xdict, dict):
@@ -473,8 +473,8 @@
code_needed = False
# If a site is given instead of a code, use its language
- if hasattr(code, 'lang'):
- lang = code.lang
+ if hasattr(code, 'code'):
+ lang = code.code
# check whether we need the language code back
elif isinstance(code, list):
lang = code.pop()
@@ -555,8 +555,8 @@
"""
# If a site is given instead of a code, use its language
- if hasattr(code, 'lang'):
- code = code.lang
+ if hasattr(code, 'code'):
+ code = code.code
# we send the code via list and get the alternate code back
code = [code]
trans = twtranslate(code, twtitle)
@@ -587,8 +587,8 @@
@param twtitle: The TranslateWiki string title, in <package>-<key> format
"""
# If a site is given instead of a code, use its language
- if hasattr(code, 'lang'):
- code = code.lang
+ if hasattr(code, 'code'):
+ code = code.code
transdict = _get_translation(code, twtitle)
if transdict is None:
return False
--
To view, visit https://gerrit.wikimedia.org/r/213782
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia1fff0c6218daacd57a8e84885da6821b29e0600
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>
Ladsgroup has submitted this change and it was merged.
Change subject: Use pagegenerators for clean_sandbox.py
......................................................................
Use pagegenerators for clean_sandbox.py
Bug: T87634
Change-Id: If6de6b1a3df60b762d8dc99f1310602eee61d03f
---
M scripts/clean_sandbox.py
1 file changed, 34 insertions(+), 79 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
XZise: Looks good to me, but someone else must approve
Ladsgroup: Looks good to me, approved
Objections:
Xqt: There's a problem with this change, please improve
diff --git a/scripts/clean_sandbox.py b/scripts/clean_sandbox.py
index 9d42220..527da31 100755
--- a/scripts/clean_sandbox.py
+++ b/scripts/clean_sandbox.py
@@ -5,6 +5,10 @@
This script understands the following command-line arguments:
+¶ms;
+
+Furthermore, the following command line parameters are supported:
+
-hours:# Use this parameter if to make the script repeat itself
after # hours. Hours can be defined as a decimal. 0.01
hours are 36 seconds; 0.1 are 6 minutes.
@@ -13,20 +17,6 @@
was made. If no parameter is given it takes it from
hours and limits it between 5 and 15 minutes.
The minimum delay time is 5 minutes.
-
- -user Use this parameter to run the script in the user name-
- space.
- > ATTENTION: on most wiki THIS IS FORBIDEN FOR BOTS ! <
- > (please talk with your admin first) <
- Since it is considered bad style to edit user page with-
- out permission, the 'user_sandboxTemplate' for given
- language has to be set-up (no fall-back will be used).
- All pages containing that template will get cleaned.
- Please be also aware that the rules when to clean the
- user sandbox differ from those for project sandbox.
-
- -page Run the bot on specific page, you can use this when
- you haven't configured clean_candbox for your wiki.
-text The text that substitutes in the sandbox, you can use this
when you haven't configured clean_candbox for your wiki.
@@ -51,9 +41,8 @@
import time
import datetime
-import sys
import pywikibot
-from pywikibot import i18n, Bot
+from pywikibot import i18n, Bot, pagegenerators
content = {
'commons': u'{{Sandbox}}\n<!-- Please edit only below this line. -->',
@@ -143,12 +132,10 @@
'zh': u'Project:沙盒',
}
-user_content = {
- 'de': u'{{Benutzer:DrTrigonBot/Spielwiese}}',
-}
-
-user_sandboxTemplate = {
- 'de': u'User:DrTrigonBot/Spielwiese',
+# This is required for the text that is shown when you run this script
+# with the parameter -help.
+docuReplacements = {
+ '¶ms;': pagegenerators.parameterHelp,
}
@@ -161,9 +148,7 @@
'no_repeat': True,
'delay': None,
'delay_td': None,
- 'user': False,
'text': "",
- 'page': None,
'summary': "",
}
@@ -178,23 +163,19 @@
self.availableOptions['delay_td'] = datetime.timedelta(minutes=d)
self.site = pywikibot.Site()
- if self.getOption('user'):
- localSandboxTitle = i18n.translate(self.site,
- user_sandboxTemplate)
- localSandbox = pywikibot.Page(self.site, localSandboxTitle)
- content.update(user_content)
- sandboxTitle[self.site.code] = [item.title() for item in
- localSandbox.getReferences(
- onlyTemplateInclusion=True)]
- if self.site.code not in user_sandboxTemplate:
- content[self.site.code] = None
- pywikibot.output(
- u'Not properly set-up to run in user namespace!')
- if (not sandboxTitle.get(self.site.code) and not self.getOption('page')) or (not content.get(
- self.site.code) and not self.getOption('text')):
- pywikibot.output(u'This bot is not configured for the given site '
- u'(%s), exiting.' % self.site)
- sys.exit(0)
+ if not content.get(self.site.code) and not self.getOption('text'):
+ pywikibot.error(u'No content is given for pages, exiting.')
+ raise RuntimeError
+ if not self.generator:
+ if self.site.code not in sandboxTitle:
+ pywikibot.error(u'No generator is given for this site'
+ u'(%s), exiting.' % self.site)
+ raise RuntimeError
+ local_sandbox_title = sandboxTitle[self.site.code]
+ if not isinstance(local_sandbox_title, list):
+ local_sandbox_title = [local_sandbox_title]
+ self.generator = [pywikibot.Page(self.site, page_name) for
+ page_name in local_sandbox_title]
def run(self):
"""Run bot."""
@@ -202,16 +183,7 @@
while True:
wait = False
now = time.strftime("%d %b %Y %H:%M:%S (UTC)", time.gmtime())
- if self.getOption('page'):
- localSandboxTitle = self.getOption('page')
- else:
- localSandboxTitle = i18n.translate(self.site, sandboxTitle)
- if isinstance(localSandboxTitle, list):
- titles = localSandboxTitle
- else:
- titles = [localSandboxTitle]
- for title in titles:
- sandboxPage = pywikibot.Page(self.site, title)
+ for sandboxPage in self.generator:
pywikibot.output(u'Preparing to process sandbox page %s'
% sandboxPage.title(asLink=True))
if sandboxPage.isRedirectPage():
@@ -239,22 +211,10 @@
pywikibot.output(
u'The sandbox might be clean, no change necessary.')
elif pos != 0 and not subst:
- if self.getOption('user'):
- endpos = pos + len(translatedContent.strip())
- if (pos < 0) or (endpos == len(text)):
- pywikibot.output(u'The user sandbox is still '
- u'clean, no change necessary.')
- else:
- sandboxPage.put(text[:endpos], translatedMsg)
- pywikibot.showDiff(text, text[:endpos])
- pywikibot.output(
- u'Standard content was changed, user '
- u'sandbox cleaned.')
- else:
- sandboxPage.put(translatedContent, translatedMsg)
- pywikibot.showDiff(text, translatedContent)
- pywikibot.output(u'Standard content was changed, '
- u'sandbox cleaned.')
+ sandboxPage.put(translatedContent, translatedMsg)
+ pywikibot.showDiff(text, translatedContent)
+ pywikibot.output(u'Standard content was changed, '
+ u'sandbox cleaned.')
else:
edit_delta = (datetime.datetime.utcnow() -
sandboxPage.editTime())
@@ -303,36 +263,31 @@
@type args: list of unicode
"""
opts = {}
- for arg in pywikibot.handle_args(args):
+ local_args = pywikibot.handle_args(args)
+ gen_factory = pagegenerators.GeneratorFactory()
+ for arg in local_args:
if arg.startswith('-hours:'):
opts['hours'] = float(arg[7:])
opts['no_repeat'] = False
elif arg.startswith('-delay:'):
opts['delay'] = int(arg[7:])
- elif arg.startswith('-page'):
- if len(arg) == 5:
- opts['page'] = pywikibot.input(
- u'Which page do you want to change?')
- else:
- opts['page'] = arg[6:]
elif arg.startswith('-text'):
if len(arg) == 5:
opts['text'] = pywikibot.input(
u'What text do you want to substitute?')
else:
opts['text'] = arg[6:]
- elif arg == '-user':
- opts['user'] = True
elif arg.startswith('-summary'):
if len(arg) == len('-summary'):
opts['summary'] = pywikibot.input(u'Enter the summary:')
else:
opts['summary'] = arg[9:]
else:
- pywikibot.showHelp('clean_sandbox')
- return
+ gen_factory.handleArg(arg)
- bot = SandboxBot(**opts)
+ generator = gen_factory.getCombinedGenerator()
+
+ bot = SandboxBot(generator=generator, **opts)
bot.run()
if __name__ == "__main__":
--
To view, visit https://gerrit.wikimedia.org/r/210174
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If6de6b1a3df60b762d8dc99f1310602eee61d03f
Gerrit-PatchSet: 7
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: Version 2.0 Release Candidate 1
......................................................................
Version 2.0 Release Candidate 1
Change-Id: I83fb8ce96a954ea15d7634a7ae526f2b252258be
---
M ChangeLog
M docs/conf.py
M setup.py
3 files changed, 44 insertions(+), 2 deletions(-)
Approvals:
John Vandenberg: Looks good to me, but someone else must approve
Ladsgroup: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ChangeLog b/ChangeLog
index 12772a4..0af0188 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,46 @@
+Release 2.0rc1 (25 May 2015)
+
+Major improvements include:
+- Sphinx documentation at https://doc.wikimedia.org/pywikibot/
+- Initial ProofreadPage support
+- Improved diff output, with context
+- Batch upload support
+- Compat scripts patrol.py and piper.py ported
+- isbn.py now supports wikibase
+- RecentChanges stream (rcstream) support
+
+Pywikibot API improvements include:
+- Python 3 ipaddress support
+- Support for Python warning system
+- Wikibase:
+ - added ISBN support
+ - added redirect support
+- Optionally uses external library for improved isbn validation
+- Automatically generating user files when -user, -family and -lang are
+ provided to a script
+- Page.content_model added
+- Page.contributors() and Page.revision_count() added
+- APISite.compare added
+- Site.undelete and Page.undelete added
+- DataSite.search_entities support
+- FilePage.latest_file_info and FilePage.oldest_file_info added
+- ItemClaimFilterPageGenerator added
+
+Low-level changes include:
+- Switch to JSON-based i18n data format
+- Unicode_literals used throughout source code
+- API badtoken recovery
+- API client side prevention of anonymous writes
+- API layer support for boolean and date datatypes
+- Improved MediaWiki version detection
+
+Other changes include:
+- Python 3 support fixes
+- Daemonize support
+- Allow pywikibot to load without i18n data
+- Appveyor CI Win32 builds
+
Release 2.0b3 (30 November 2014)
Major changes include:
diff --git a/docs/conf.py b/docs/conf.py
index 84ed0a8..a7b4ec4 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -52,7 +52,7 @@
# The short X.Y version.
version = '2.0'
# The full version, including alpha/beta/rc tags.
-release = '2.0b3'
+release = '2.0rc1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/setup.py b/setup.py
index fb92b4c..db13b1e 100644
--- a/setup.py
+++ b/setup.py
@@ -134,7 +134,7 @@
from setuptools import setup, find_packages
name = 'pywikibot'
-version = '2.0b3'
+version = '2.0rc1'
github_url = 'https://github.com/wikimedia/pywikibot-core'
download_url = github_url + '/archive/master.zip#egg=' + name + '-' + version
--
To view, visit https://gerrit.wikimedia.org/r/213512
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I83fb8ce96a954ea15d7634a7ae526f2b252258be
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: [FEAT] replace: Inform about missing user-fixes.py
......................................................................
[FEAT] replace: Inform about missing user-fixes.py
When the user-fixes.py file is missing, it now shows such a message
in replace.py when an unknown fix was selected.
Change-Id: I6d271b363f62a9f0398917d5ab7016df1ac044a6
---
M pywikibot/fixes.py
M scripts/replace.py
2 files changed, 10 insertions(+), 4 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/fixes.py b/pywikibot/fixes.py
index 3fe8e1b..1eb1d91 100644
--- a/pywikibot/fixes.py
+++ b/pywikibot/fixes.py
@@ -7,6 +7,8 @@
#
from __future__ import unicode_literals
+import os.path
+
from pywikibot import config
__version__ = '$Id$'
@@ -629,10 +631,11 @@
#
# Load the user fixes file.
-try:
- filename = config.datafilepath('user-fixes.py')
+filename = config.datafilepath('user-fixes.py')
+if os.path.exists(filename):
# load binary, to let compile decode it according to the file header
with open(filename, 'rb') as f:
exec(compile(f.read(), filename, 'exec'))
-except IOError:
- pass
+ user_fixes_loaded = True
+else:
+ user_fixes_loaded = False
diff --git a/scripts/replace.py b/scripts/replace.py
index 19a7855..47cd2ac 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -861,6 +861,9 @@
except KeyError:
pywikibot.output(u'Available predefined fixes are: %s'
% ', '.join(fixes.fixes.keys()))
+ if not fixes.user_fixes_loaded:
+ pywikibot.output('The user fixes file could not be found: '
+ '{0}'.format(fixes.filename))
return
if "msg" in fix:
if isinstance(fix['msg'], basestring):
--
To view, visit https://gerrit.wikimedia.org/r/211133
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6d271b363f62a9f0398917d5ab7016df1ac044a6
Gerrit-PatchSet: 5
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>