jenkins-bot has submitted this change and it was merged.
Change subject: Move UserEditFilterGenerator into pagegenerators
......................................................................
Move UserEditFilterGenerator into pagegenerators
Bug: T104265
Change-Id: I175f220955cd4ceeeb0576dbb7773dd21f6f3634
---
M pywikibot/pagegenerators.py
M scripts/template.py
2 files changed, 41 insertions(+), 32 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index df3382c..f00acd1 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -1481,6 +1481,45 @@
yield page
+def UserEditFilterGenerator(generator, username, timestamp=None, skip=False,
+ max_revision_depth=None):
+ """
+ Generator which will yield Pages modified by username.
+
+ It only looks at the last editors given by max_revision_depth.
+ If timestamp is set in MediaWiki format JJJJMMDDhhmmss, older edits are
+ ignored.
+ If skip is set, pages edited by the given user are ignored otherwise only
+ pages edited by this user are given back.
+
+ @param generator: A generator object
+ @param username: user name which edited the page
+ @type username: str
+ @param timestamp: ignore edits which are older than this timestamp
+ @type timestamp: str (MediaWiki format JJJJMMDDhhmmss) or None
+ @param skip: Ignore pages edited by the given user
+ @type skip: bool
+ @param max_revision_depth: It only looks at the last editors given by
+ max_revision_depth
+ @type max_revision_depth: int or None
+ """
+ if timestamp:
+ ts = pywikibot.Timestamp.fromtimestampformat(timestamp)
+ else:
+ ts = pywikibot.Timestamp.min
+ for page in generator:
+ found = False
+ for ed in page.revisions(total=max_revision_depth):
+ if ed.timestamp >= ts:
+ if username == ed.user:
+ found = True
+ break
+ else:
+ break
+ if found != bool(skip): # xor operation
+ yield page
+
+
def CombinedPageGenerator(generators):
"""Yield from each iterable until exhausted, then proceed with the
next."""
return itertools.chain(*generators)
diff --git a/scripts/template.py b/scripts/template.py
index dd28369..849f50f 100755
--- a/scripts/template.py
+++ b/scripts/template.py
@@ -121,36 +121,6 @@
from scripts.replace import ReplaceRobot as ReplaceBot
-def UserEditFilterGenerator(generator, username, timestamp=None, skip=False,
- max_revision_depth=None):
- """
- Generator which will yield Pages modified by username.
-
- It only looks at the last editors given by max_revision_depth.
- If timestamp is set in MediaWiki format JJJJMMDDhhmmss, older edits are
- ignored.
- If skip is set, pages edited by the given user are ignored otherwise only
- pages edited by this user are given back.
- """
- if timestamp:
- ts = pywikibot.Timestamp.fromtimestampformat(timestamp)
- else:
- ts = pywikibot.Timestamp.min
- for page in generator:
- found = False
- for ed in page.revisions(total=max_revision_depth):
- if ed.timestamp >= ts:
- if username == ed.user:
- found = True
- break
- else:
- break
- if found != bool(skip): # xor operation
- yield page
- else:
- pywikibot.output(u'Skipping %s' % page.title(asLink=True))
-
-
class XmlDumpTemplatePageGenerator(object):
"""
@@ -385,8 +355,8 @@
gen = pagegenerators.CombinedPageGenerator(gens)
gen = pagegenerators.DuplicateFilterPageGenerator(gen)
if user:
- gen = UserEditFilterGenerator(gen, user, timestamp, skip,
- max_revision_depth=100)
+ gen = pagegenerators.UserEditFilterGenerator(gen, user, timestamp, skip,
+ max_revision_depth=100)
if not genFactory.gens:
# make sure that proper namespace filtering etc. is handled
--
To view, visit
https://gerrit.wikimedia.org/r/221660
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I175f220955cd4ceeeb0576dbb7773dd21f6f3634
Gerrit-PatchSet: 4
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.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: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>