jenkins-bot has submitted this change and it was merged.
Change subject: [bugfix] Enable empty plural variant
......................................................................
[bugfix] Enable empty plural variant
- regex for variants does not match empty plural variant.
- Some tests added.
Bug: T125402
Bug: T99057
Change-Id: I1e77cbe96b6b8861d05dc0c83d3cde1b636b54fa
---
M pywikibot/i18n.py
M tests/i18n_tests.py
2 files changed, 18 insertions(+), 2 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/i18n.py b/pywikibot/i18n.py
index 5739837..f529aba 100644
--- a/pywikibot/i18n.py
+++ b/pywikibot/i18n.py
@@ -17,7 +17,7 @@
messages. See L{twntranslate} for more information on the messages.
"""
#
-# (C) Pywikibot team, 2004-2015
+# (C) Pywikibot team, 2004-2016
#
# Distributed under the terms of the MIT license.
#
@@ -357,7 +357,9 @@
plural_entries = []
specific_entries = {}
- for number, plural in re.findall(r'\|?(?: *(\d+) *= *)?([^|]+)',
+ # A plural entry can not start at the end of the variants list,
+ # and must end with | or the end of the variants list.
+ for number, plural in re.findall(r'(?!$)(?: *(\d+) *= *)?(.*?)(?:\||$)',
variants):
if number:
specific_entries[int(number)] = plural
diff --git a/tests/i18n_tests.py b/tests/i18n_tests.py
index 32f5f3a..22fd9b0 100644
--- a/tests/i18n_tests.py
+++ b/tests/i18n_tests.py
@@ -440,6 +440,20 @@
i18n._extract_plural('en', '{{PLURAL:foo|one|other}}', {'foo': 0}),
'other')
+ def test_empty_fields(self):
+ """Test default usage using a dict and no specific plurals."""
+ self.assertEqual(
+ i18n._extract_plural('en', '{{PLURAL:foo||other}}', {'foo': 42}),
+ 'other')
+ self.assertEqual(
+ i18n._extract_plural('en', '{{PLURAL:foo||other}}', {'foo': 1}),
+ '')
+ self.assertEqual(
+ i18n._extract_plural('en', '{{PLURAL:foo|one|}}', {'foo': 1}),
+ 'one')
+ with self.assertRaises(IndexError):
+ i18n._extract_plural('en', '{{PLURAL:foo|one}}', {'foo': 0})
+
def test_specific(self):
"""Test using a specific plural."""
self.assertEqual(
--
To view, visit https://gerrit.wikimedia.org/r/278015
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I1e77cbe96b6b8861d05dc0c83d3cde1b636b54fa
Gerrit-PatchSet: 7
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Beta16 <l.rabinelli(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Siebrand <siebrand(a)kitano.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: WikidataPageFromItemGenerator and performance
......................................................................
WikidataPageFromItemGenerator and performance
A new WikidataPageFromItemGenerator provides a convinent way to translate batch
of item pages (e.g data items from repository) to site pages.
WikidataQueryPageGenerator and WikidataSPARQLPageGenerator
requests for each page its sitelink, which requires many web requests
and is very inefficent. Instead we use a batch query requesting
only the data we need (sitelinks).
Bug: T129556
Change-Id: I515c7135b7c2f8b9851c82a189abdd102dd562ee
---
M pywikibot/pagegenerators.py
1 file changed, 39 insertions(+), 22 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 6a59a1d..58d67b4 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -40,6 +40,7 @@
deprecated_args,
redirect_func,
issue_deprecation_warning,
+ itergroup,
DequeGenerator,
intersect_generators,
IteratorNextMixin,
@@ -2593,6 +2594,31 @@
yield pywikibot.Page(pywikibot.Link(fd(month, day), site))
+def WikidataPageFromItemGenerator(gen, site):
+ """Generate pages from site based on sitelinks of item pages.
+
+ @param gen: generator of L{pywikibot.ItemPage}
+ @param site: Site for generator results.
+ @type site: L{pywikibot.site.BaseSite}
+
+ """
+ repo = site.data_repository()
+ for sublist in itergroup(gen, 50):
+ req = {'ids': [item.id for item in sublist],
+ 'sitefilter': site.dbName(),
+ 'action': 'wbgetentities',
+ 'props': 'sitelinks'}
+
+ wbrequest = repo._simple_request(**req)
+ wbdata = wbrequest.submit()
+ entities = (item for item in wbdata['entities'].values() if
+ 'sitelinks' in item and site.dbName() in item['sitelinks'])
+ sitelinks = (item['sitelinks'][site.dbName()]['title']
+ for item in entities)
+ for sitelink in sitelinks:
+ yield pywikibot.Page(site, sitelink)
+
+
def WikidataQueryPageGenerator(query, site=None):
"""Generate pages that result from the given WikidataQuery.
@@ -2606,24 +2632,22 @@
if site is None:
site = pywikibot.Site()
repo = site.data_repository()
+ is_repo = isinstance(site, pywikibot.site.DataSite)
+ if not is_repo:
+ # limit the results to those with sitelinks to target site
+ query += ' link[%s]' % site.dbName()
wd_queryset = wdquery.QuerySet(query)
wd_query = wdquery.WikidataQuery(cacheMaxAge=0)
data = wd_query.query(wd_queryset)
-
pywikibot.output(u'retrieved %d items' % data[u'status'][u'items'])
- for item in data[u'items']:
- page = pywikibot.ItemPage(repo, u'Q{0}'.format(item))
- if isinstance(site, pywikibot.site.DataSite):
- yield page
- continue
+ items_pages = (pywikibot.ItemPage(repo, 'Q{0}'.format(item))
+ for item in data[u'items'])
+ if is_repo:
+ return items_pages
- try:
- link = page.getSitelink(site)
- except pywikibot.NoPage:
- continue
- yield pywikibot.Page(pywikibot.Link(link, site))
+ return WikidataPageFromItemGenerator(items_pages, site)
def WikidataSPARQLPageGenerator(query, site=None, item_name='item', endpoint=None):
@@ -2644,18 +2668,11 @@
query_object = sparql.SparqlQuery(endpoint=endpoint)
data = query_object.get_items(query, item_name=item_name)
+ items_pages = (pywikibot.ItemPage(repo, item) for item in data)
+ if isinstance(site, pywikibot.site.DataSite):
+ return items_pages
- for item in data:
- page = pywikibot.ItemPage(repo, item)
- if isinstance(site, pywikibot.site.DataSite):
- yield page
- continue
-
- try:
- link = page.getSitelink(site)
- except pywikibot.NoPage:
- continue
- yield pywikibot.Page(pywikibot.Link(link, site))
+ return WikidataPageFromItemGenerator(items_pages, site)
def WikibaseSearchItemPageGenerator(text, language=None, total=None, site=None):
--
To view, visit https://gerrit.wikimedia.org/r/276562
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I515c7135b7c2f8b9851c82a189abdd102dd562ee
Gerrit-PatchSet: 5
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Eranroz <eranroz89(a)gmail.com>
Gerrit-Reviewer: Eranroz <eranroz89(a)gmail.com>
Gerrit-Reviewer: FelixReimann <felix(a)fex-it.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: tests.utils.execute: accept locale 'C' or missing
......................................................................
tests.utils.execute: accept locale 'C' or missing
As per f7ecddb, for the test suite
Bug: T129406
Change-Id: If097b88c44a9726958511ec77ce57b90db37d00d
---
M tests/utils.py
1 file changed, 5 insertions(+), 1 deletion(-)
Approvals:
John Vandenberg: Looks good to me, but someone else must approve
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/utils.py b/tests/utils.py
index bc5cfa2..9c09991 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -806,7 +806,11 @@
# A complete locale string needs to be created, so the country code
# is guessed, however it is discarded when loading config.
if config.userinterface_lang:
- current_locale = locale.getdefaultlocale()[0].split('.')[0]
+ current_locale = locale.getdefaultlocale()[0]
+ if current_locale in [None, 'C']:
+ current_locale = 'en'
+ else:
+ current_locale = current_locale.split('.')[0]
locale_prefix = str(config.userinterface_lang + '_')
if not current_locale.startswith(locale_prefix):
--
To view, visit https://gerrit.wikimedia.org/r/278300
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If097b88c44a9726958511ec77ce57b90db37d00d
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: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: Disable other languages for musicbrainz wiki
......................................................................
Disable other languages for musicbrainz wiki
wiki.musicbrainz.org is reporting that it has languages
'ab' and 'lb', when these are actually interwiki links not
interlanguage links.
Bug: T130381
Change-Id: I4761396f4c4ede1cb2dd90cfb9cfac56220b8b9a
---
M .travis.yml
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/.travis.yml b/.travis.yml
index 81b9956..90cbacb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -50,7 +50,7 @@
- mkdir ~/.pywikibot
- - python pwb.py generate_family_file 'https://wiki.musicbrainz.org/' musicbrainz
+ - python pwb.py generate_family_file 'https://wiki.musicbrainz.org/' musicbrainz 'n'
- if [[ $FAMILY == 'wpbeta' ]]; then
python -m generate_family_file 'http://'$LANGUAGE'.wikipedia.beta.wmflabs.org/' 'wpbeta' 'n' ;
fi
--
To view, visit https://gerrit.wikimedia.org/r/278309
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4761396f4c4ede1cb2dd90cfb9cfac56220b8b9a
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>