jenkins-bot merged this change.
CategorizedPageGenerator: Use startprefix parameter of category.articles
The previous method of passing `start` to `startsort` was wrong. It does not
work as expected because `startsort` needs to be a binary string.[1]
For older versions of MediaWiki implement a workaround by iterating over
all category.articles. This is inefficient, but no better way found.
Remove `kwargs['sortby'] = 'sortkey'`, 'sortkey' is API's default.
[1]: https://www.mediawiki.org/wiki/API:Categorymembers
Bug: T74101
Bug: T143120
Change-Id: I7eece66e258659f84479fbdd1094a8df9ee69479
---
M pywikibot/pagegenerators.py
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index e503671..9071e1a 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -56,6 +56,7 @@
)
from pywikibot.logentries import LogEntryFactory
from pywikibot.proofreadpage import ProofreadPage
+from pywikibot.tools import MediaWikiVersion
if sys.version_info[0] > 2:
basestring = (str, )
@@ -1386,8 +1387,17 @@
'content': content, 'namespaces': namespaces,
}
if start:
- kwargs['sortby'] = 'sortkey'
- kwargs['startsort'] = start
+ if category.site.version() < MediaWikiVersion('1.18'):
+ kwargs.pop('total', None)
+ count = 0
+ for article in category.articles(**kwargs):
+ if article.title() >= start:
+ count += 1
+ yield article
+ if count == total:
+ return
+ return
+ kwargs['startprefix'] = start
for a in category.articles(**kwargs):
yield a
To view, visit change 428148. To unsubscribe, visit settings.