jenkins-bot has submitted this change and it was merged.
Change subject: Workaround Python 2.6.5 issue #6906
......................................................................
Workaround Python 2.6.5 issue #6906
Before Python 2.6.6 Tk set several environment variables using
unicode instead of str, which fails on Win32.
Update tests.utils.execute to encode these environment variables, and
improve the generated TypeError message to include original message.
Bug: T108035
Change-Id: I275323c9a0af5d32d023615e5455efedcf6b6496
---
M tests/utils.py
1 file changed, 13 insertions(+), 5 deletions(-)
Approvals:
John Vandenberg: Looks good to me, but someone else must approve
XZise: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/utils.py b/tests/utils.py
index ecf02c2..ae5face 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -33,6 +33,7 @@
from pywikibot.site import Namespace
from pywikibot.data.api import CachedRequest
from pywikibot.data.api import Request as _original_Request
+from pywikibot.tools import PYTHON_VERSION
from tests import _pwb_py
from tests import unittest # noqa
@@ -525,6 +526,12 @@
# str() on Python 2.
env = os.environ.copy()
+ # Python issue 6906
+ if PYTHON_VERSION < (2, 6, 6):
+ for var in ('TK_LIBRARY', 'TCL_LIBRARY', 'TIX_LIBRARY'):
+ if var in env:
+ env[var] = env[var].encode('mbcs')
+
# Prevent output by test package; e.g. 'max_retries reduced from x to y'
env[str('PYWIKIBOT_TEST_QUIET')] = str('1')
@@ -551,21 +558,22 @@
try:
p = subprocess.Popen(command, env=env, **options)
- except TypeError:
+ except TypeError as e:
# Generate a more informative error
if sys.platform == 'win32' and sys.version_info[0] < 3:
unicode_env = [(k, v) for k, v in os.environ.items()
if not isinstance(k, str) or
not isinstance(v, str)]
if unicode_env:
- raise TypeError('os.environ must contain only str: %r'
- % unicode_env)
+ raise TypeError(
+ '%s: unicode in os.environ: %r' % (e, unicode_env))
+
child_unicode_env = [(k, v) for k, v in env.items()
if not isinstance(k, str) or
not isinstance(v, str)]
if child_unicode_env:
- raise TypeError('os.environ must contain only str: %r'
- % child_unicode_env)
+ raise TypeError(
+ '%s: unicode in child env: %r' % (e, child_unicode_env))
raise
if data_in is not None:
--
To view, visit https://gerrit.wikimedia.org/r/229400
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I275323c9a0af5d32d023615e5455efedcf6b6496
Gerrit-PatchSet: 1
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: Add -unconnectedpages to pagegenerators
......................................................................
Add -unconnectedpages to pagegenerators
Since now Wikibase client does support API wrapper around
Special:UnconnectedPages (commits: 6f037b08, ff02f539, bd4d1e07 in
mediawiki/extensions/Wikibase) and it's deployed, it would be really
good to have such a generator.
Bug: T56738
Change-Id: I6b91bd4cf6ceaf5cd71889a81a639a88a8e8d117
---
M pywikibot/pagegenerators.py
M pywikibot/site.py
2 files changed, 42 insertions(+), 1 deletion(-)
Approvals:
XZise: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 7971750..2205c81 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -156,6 +156,10 @@
given as -recentchanges:x, will work on the x most recently
changed pages.
+-unconnectedpages Work on the most recent unconnected pages to the Wikibase
+ repository. Given as -unconnectedpages:x, will work on the
+ x most recent unconnected pages.
+
-ref Work on all pages that link to a certain page.
Argument can also be given as "-ref:referredpagetitle".
@@ -690,6 +694,12 @@
gen = NewpagesPageGenerator(namespaces=namespaces,
total=total,
site=self.site)
+ elif arg.startswith('-unconnectedpages'):
+ namespaces = self.namespaces or 0
+ total = 60
+ if len(arg) >= 18:
+ total = int(arg[18:])
+ gen = UnconnectedPageGenerator(total=total, site=self.site)
elif arg.startswith('-imagesused'):
imagelinkstitle = arg[len('-imagesused:'):]
if not imagelinkstitle:
@@ -931,7 +941,7 @@
@param step: Maximum number of pages to retrieve per API query
@type step: int
- @param total: Maxmum number of pages to retrieve in total
+ @param total: Maxmium number of pages to retrieve in total
@type total: int
@param site: Site for generator results.
@type site: L{pywikibot.site.BaseSite}
@@ -1016,6 +1026,25 @@
return gen
+def UnconnectedPageGenerator(site=None, step=None, total=None):
+ """
+ Iterate Page objects for all unconnected pages to a Wikibase repository.
+
+ @param step: Maximum number of pages to retrieve per API query
+ @type step: int
+ @param total: Maximum number of pages to retrieve in total
+ @type total: int
+ @param site: Site for generator results.
+ @type site: L{pywikibot.site.APISite}
+ """
+ if site is None:
+ site = pywikibot.Site()
+ if not site.data_repository():
+ raise ValueError('The given site does not have Wikibase repository.')
+ for page in site.unconnected_pages(step=step, total=total):
+ yield page
+
+
@deprecated_args(referredImagePage='referredFilePage')
def FileLinksGenerator(referredFilePage, step=None, total=None, content=False):
"""Yield Pages on which the file referredFilePage is displayed."""
diff --git a/pywikibot/site.py b/pywikibot/site.py
index e77315c..bc90ac2 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -5692,6 +5692,18 @@
step=step, total=total)
return lrgen
+ def unconnected_pages(self, step=None, total=None):
+ """Yield Page objects from Special:UnconnectedPages.
+
+ @param step: request batch size
+ @param total: number of pages to return
+ """
+ upgen = self._generator(api.PageGenerator,
+ type_arg='querypage',
+ gqppage='UnconnectedPages',
+ step=step, total=total)
+ return upgen
+
@deprecated_args(lvl='level')
def protectedpages(self, namespace=0, type='edit', level=False, total=None):
"""
--
To view, visit https://gerrit.wikimedia.org/r/228575
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6b91bd4cf6ceaf5cd71889a81a639a88a8e8d117
Gerrit-PatchSet: 5
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: Ricordisamoa <ricordisamoa(a)openmailbox.org>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>
jenkins-bot has submitted this change and it was merged.
Change subject: [IMPROV] pagegenerators: Use standard deprecation
......................................................................
[IMPROV] pagegenerators: Use standard deprecation
The deprecation message in pagegenerators when the old -logevents syntax is
used is now using the standard text. This is also fixing a small syntax error
as the colon between the argument name and value was missing in the message.
Change-Id: I6b52748d29e866e7598d0d0709eb27043229d2c5
---
M pywikibot/pagegenerators.py
M pywikibot/tools/__init__.py
M tests/pagegenerators_tests.py
3 files changed, 16 insertions(+), 11 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index 7971750..77bb77e 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -39,6 +39,7 @@
deprecated,
deprecated_args,
redirect_func,
+ issue_deprecation_warning,
DequeGenerator,
intersect_generators,
filter_unique,
@@ -793,10 +794,11 @@
user = None
else:
user = None
- warn(u'The usage of "{0}" is deprecated. Use -logevents '
- u'"{1}" instead'.format(
- arg, ','.join((mode, user or '', str(total)))),
- ArgumentDeprecationWarning, 2)
+ issue_deprecation_warning(
+ 'The usage of "{0}"'.format(arg),
+ '-logevents:"{0}"'.format(
+ ','.join((mode, user or '', str(total)))),
+ 2, ArgumentDeprecationWarning)
gen = self._parse_log_events(mode, user, total)
if gen:
diff --git a/pywikibot/tools/__init__.py b/pywikibot/tools/__init__.py
index 34be4cc..49db6c6 100644
--- a/pywikibot/tools/__init__.py
+++ b/pywikibot/tools/__init__.py
@@ -1095,14 +1095,17 @@
return outer_wrapper
-def issue_deprecation_warning(name, instead, depth):
+def issue_deprecation_warning(name, instead, depth, warning_class=None):
"""Issue a deprecation warning."""
if instead:
- warn('{0} is deprecated; use {1} instead.'.format(name, instead),
- DeprecationWarning, depth + 1)
+ if warning_class is None:
+ warning_class = DeprecationWarning
+ warn(u'{0} is deprecated; use {1} instead.'.format(name, instead),
+ warning_class, depth + 1)
else:
- warn(u'{0} is deprecated.'.format(name), _NotImplementedWarning,
- depth + 1)
+ if warning_class is None:
+ warning_class = _NotImplementedWarning
+ warn('{0} is deprecated.'.format(name), warning_class, depth + 1)
@add_full_name
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index dc55725..dccd20c 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -783,8 +783,8 @@
def test_logevents_default(self):
gf = pagegenerators.GeneratorFactory(site=self.site)
self.assertTrue(gf.handleArg('-newuserslog'))
- self.assertDeprecation('The usage of "-newuserslog" is deprecated.'
- ' Use -logevents "newusers,,500" instead')
+ self.assertOneDeprecationParts('The usage of "-newuserslog"',
+ '-logevents:"newusers,,500"')
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
--
To view, visit https://gerrit.wikimedia.org/r/228582
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6b52748d29e866e7598d0d0709eb27043229d2c5
Gerrit-PatchSet: 2
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: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>