jenkins-bot has submitted this change and it was merged.
Change subject: Cache sites with a conflict
......................................................................
Cache sites with a conflict
Signed-off-by: xqt <info(a)gno.de>
Change-Id: I5ae3112272f260517ef68e2d8981c4b578359d23
---
M pywikibot/interwiki_graph.py
M tests/interwiki_graph_tests.py
2 files changed, 21 insertions(+), 6 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/interwiki_graph.py b/pywikibot/interwiki_graph.py
index 86fe257..f9c1edd 100644
--- a/pywikibot/interwiki_graph.py
+++ b/pywikibot/interwiki_graph.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Module with the Graphviz drawing calls."""
#
-# (C) Pywikibot team, 2006-2015
+# (C) Pywikibot team, 2006-2016
#
# Distributed under the terms of the MIT license.
#
@@ -10,6 +10,7 @@
__version__ = '$Id$'
#
+import itertools
import threading
try:
@@ -20,6 +21,7 @@
import pywikibot
from pywikibot import config2 as config
+from pywikibot.tools import Counter
# deprecated value
pydotfound = not isinstance(pydot, ImportError)
@@ -150,6 +152,18 @@
"""Get label for page."""
return '"%s:%s"' % (page.site.code, page.title())
+ def _octagon_site_set(self):
+ """Build a list of sites with more than one valid page."""
+ page_list = self.subject.found_in.keys()
+
+ # Only track sites of normal pages
+ each_site = [page.site for page in page_list
+ if page.exists() and not page.isRedirectPage()]
+
+ return set(x[0] for x in itertools.takewhile(
+ lambda x: x[1] > 1,
+ Counter(each_site).most_common()))
+
def addNode(self, page):
"""Add a node for page."""
node = pydot.Node(self.getLabel(page), shape='rectangle')
@@ -168,11 +182,7 @@
if page.namespace() != self.subject.originPage.namespace():
node.set_color('green')
node.set_style('filled,bold')
- # if we found more than one valid page for this language:
- # TODO: Only iterate through at most 2 elements
- if len([p for p in self.subject.foundIn.keys()
- if p.site == page.site and p.exists() and
- not p.isRedirectPage()]) > 1: # noqa
+ if page.site in self.octagon_sites:
# mark conflict by octagonal node
node.set_shape('octagon')
self.graph.add_node(node)
@@ -232,6 +242,9 @@
# create empty graph
self.graph = pydot.Dot()
# self.graph.set('concentrate', 'true')
+
+ self.octagon_sites = self._octagon_site_set()
+
for page in self.subject.foundIn.keys():
# a node for each found page
self.addNode(page)
diff --git a/tests/interwiki_graph_tests.py b/tests/interwiki_graph_tests.py
index ed5ae61..68f87a0 100644
--- a/tests/interwiki_graph_tests.py
+++ b/tests/interwiki_graph_tests.py
@@ -72,6 +72,8 @@
drawer = interwiki_graph.GraphDrawer(data)
+ self.assertEqual(set(['en']), drawer._octagon_site_set())
+
drawer.createGraph()
nodes = drawer.graph.obj_dict['nodes']
--
To view, visit https://gerrit.wikimedia.org/r/186619
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I5ae3112272f260517ef68e2d8981c4b578359d23
Gerrit-PatchSet: 6
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: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>
Build Update for wikimedia/pywikibot-core
-------------------------------------
Build: #3238
Status: Errored
Duration: 1 hour, 9 minutes, and 29 seconds
Commit: afcacf0 (master)
Author: John Vandenberg
Message: Positional args support for GeneratorFactory
Some scripts have positional parameters which are used to create
a page generator. A common example is page names, which could be
written as -page:"..." but the scripts allow to be simple "...".
In order to bring these parameters into the common infrastructure,
support has been added for positional parameters being detected as
belonging to a standard page generator selected by the script.
Change-Id: I93f9289aa93ea7a263cd8347aa78136065cf4e6b
View the changeset: https://github.com/wikimedia/pywikibot-core/compare/7eaf57f80d2d...afcacf03…
View the full build log and details: https://travis-ci.org/wikimedia/pywikibot-core/builds/108979976
--
You can configure recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications
jenkins-bot has submitted this change and it was merged.
Change subject: Fix edit conflicts after calls to save_claim()
......................................................................
Fix edit conflicts after calls to save_claim()
Unlike DataSite.addClaim(), DataSite.save_claim() was not updating
the latest revision ID of the item of the saved claim. As a result,
any submission to Wikidata after modifying a claim, such as
Claim.changeRank(), would result in an edit conflict.
Now DataSite.save_claim() updates the latest revision ID of the
item of the saved claim.
Change-Id: I2079228b50abca2e171bbc63e6bdd581532cd703
---
M pywikibot/site.py
1 file changed, 1 insertion(+), 0 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index fb92abe..39ac5cb 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -7071,6 +7071,7 @@
req = self._simple_request(**params)
data = req.submit()
+ claim.on_item.latest_revision_id = data['pageinfo']['lastrevid']
return data
@must_be(group='user')
--
To view, visit https://gerrit.wikimedia.org/r/268877
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I2079228b50abca2e171bbc63e6bdd581532cd703
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Gallaecio <adriyetichaves(a)gmail.com>
Gerrit-Reviewer: Gallaecio <adriyetichaves(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: Positional args support for GeneratorFactory
......................................................................
Positional args support for GeneratorFactory
Some scripts have positional parameters which are used to create
a page generator. A common example is page names, which could be
written as -page:"..." but the scripts allow to be simple "...".
In order to bring these parameters into the common infrastructure,
support has been added for positional parameters being detected as
belonging to a standard page generator selected by the script.
Change-Id: I93f9289aa93ea7a263cd8347aa78136065cf4e6b
---
M pywikibot/pagegenerators.py
M scripts/imagetransfer.py
M scripts/solve_disambiguation.py
3 files changed, 23 insertions(+), 22 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 521dd98..b115958 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -339,12 +339,15 @@
# When not in intersect mode, _filter_unique could be:
# functools.partial(filter_unique, container=global_seen_list)
- def __init__(self, site=None):
+ def __init__(self, site=None, positional_arg_name=None):
"""
Constructor.
@param site: Site for generator results.
@type site: L{pywikibot.site.BaseSite}
+ @param positional_arg_name: generator to use for positional args,
+ which do not begin with a hyphen
+ @type positional_arg_name: basestring
"""
self.gens = []
self._namespaces = []
@@ -358,6 +361,7 @@
self.intersect = False
self.subpage_max_depth = None
self._site = site
+ self._positional_arg_name = positional_arg_name
@property
def site(self):
@@ -569,6 +573,10 @@
can try parsing the argument. Call getCombinedGenerator() after all
arguments have been parsed to get the final output generator.
+ @param arg: Pywikibot argument consisting of -name:value
+ @type arg: basestring
+ @return: True if the argument supplied was recognised by the factory
+ @rtype: bool
"""
def intNone(v):
"""Return None if v is None or '' else return int(v)."""
@@ -579,6 +587,8 @@
value = None
gen = None
+ if not arg.startswith('-') and self._positional_arg_name:
+ arg = u'-{0}:{1}'.format(self._positional_arg_name, arg)
if arg == '-filelinks':
if not value:
diff --git a/scripts/imagetransfer.py b/scripts/imagetransfer.py
index ac6b898..f13f4cd 100755
--- a/scripts/imagetransfer.py
+++ b/scripts/imagetransfer.py
@@ -40,7 +40,7 @@
import pywikibot
-from pywikibot import config, i18n, textlib
+from pywikibot import config, i18n, pagegenerators, textlib
from scripts import upload
@@ -282,7 +282,6 @@
@param args: command line arguments
@type args: list of unicode
"""
- pageTitle = None
gen = None
interwiki = False
@@ -291,6 +290,8 @@
targetFamily = None
local_args = pywikibot.handle_args(args)
+ generator_factory = pagegenerators.GeneratorFactory(
+ positional_arg_name='page')
for arg in local_args:
if arg == '-interwiki':
@@ -301,13 +302,11 @@
targetLang = arg[8:]
elif arg.startswith('-tofamily:'):
targetFamily = arg[10:]
- elif not pageTitle:
- pageTitle = arg
+ else:
+ generator_factory.handleArg(arg)
- if pageTitle:
- page = pywikibot.Page(pywikibot.Site(), pageTitle)
- gen = iter([page])
- else:
+ gen = generator_factory.getCombinedGenerator()
+ if not gen:
pywikibot.bot.suggest_help(missing_parameters=['page'])
return False
diff --git a/scripts/solve_disambiguation.py b/scripts/solve_disambiguation.py
index 5f153ae..5886164 100755
--- a/scripts/solve_disambiguation.py
+++ b/scripts/solve_disambiguation.py
@@ -1084,7 +1084,6 @@
getAlternatives = True
dnSkip = False
generator = None
- pageTitle = None
primary = False
main_only = False
@@ -1092,6 +1091,8 @@
minimum = 0
local_args = pywikibot.handle_args(args)
+ generator_factory = pagegenerators.GeneratorFactory(
+ positional_arg_name='page')
for arg in local_args:
if arg.startswith('-primary:'):
@@ -1102,13 +1103,6 @@
primary = True
elif arg.startswith('-always:'):
always = arg[8:]
- elif arg.startswith('-file'):
- if len(arg) == 5:
- generator = pagegenerators.TextfilePageGenerator(
- filename=None)
- else:
- generator = pagegenerators.TextfilePageGenerator(
- filename=arg[6:])
elif arg.startswith('-pos:'):
if arg[5] != ':':
mysite = pywikibot.Site()
@@ -1139,14 +1133,12 @@
except pywikibot.NoPage:
pywikibot.output("Disambiguation category for your wiki is not known.")
raise
- elif not pageTitle:
- pageTitle = arg
+ else:
+ generator_factory.handleArg(arg)
site = pywikibot.Site()
- if pageTitle:
- page = pywikibot.Page(pywikibot.Link(pageTitle, site))
- generator = iter([page])
+ generator = generator_factory.getCombinedGenerator(generator)
if not generator:
pywikibot.bot.suggest_help(missing_generator=True)
--
To view, visit https://gerrit.wikimedia.org/r/179622
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I93f9289aa93ea7a263cd8347aa78136065cf4e6b
Gerrit-PatchSet: 7
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: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Ricordisamoa <ricordisamoa(a)openmailbox.org>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>