XZise has submitted this change and it was merged.
Change subject: py3 imports and types ......................................................................
py3 imports and types
- winreg import - urlencode import - use bytes() before decoding - use b'' before doing string operations like startswith
Change-Id: I2f8c2fb06115c735a499d24dd333e3854a4d6cc2 --- M pywikibot/__init__.py M pywikibot/config2.py M pywikibot/pagegenerators.py M pywikibot/site.py M pywikibot/userinterfaces/win32_unicode.py M pywikibot/weblib.py M tests/page_tests.py M tests/site_tests.py 8 files changed, 31 insertions(+), 7 deletions(-)
Approvals: John Vandenberg: Looks good to me, but someone else must approve XZise: Looks good to me, approved
diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py index add9a33..0228e79 100644 --- a/pywikibot/__init__.py +++ b/pywikibot/__init__.py @@ -21,6 +21,7 @@ from Queue import Queue else: from queue import Queue + long = int
# Use pywikibot. prefix for all in-package imports; this is to prevent # confusion with similarly-named modules in version 1 framework, for users diff --git a/pywikibot/config2.py b/pywikibot/config2.py index 0fe5f38..4da09e9 100644 --- a/pywikibot/config2.py +++ b/pywikibot/config2.py @@ -303,7 +303,10 @@ # On Windows systems, this script tries to determine the default text editor. if sys.platform == 'win32': try: - import _winreg + if sys.version_info[0] > 2: + import winreg as _winreg + else: + import _winreg _key1 = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.txt\OpenWithProgids') _progID = _winreg.EnumValue(_key1, 1)[0] diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index a46e27c..484eadf 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -19,6 +19,7 @@ __version__ = '$Id$' #
+import sys import codecs import itertools import re @@ -28,6 +29,10 @@ from pywikibot.comms import http import pywikibot.data.wikidataquery as wdquery
+if sys.version_info[0] > 2: + basestring = (str, ) + unicode = str + # ported from version 1 for backwards-compatibility # most of these functions just wrap a Site or Page method that returns # a generator diff --git a/pywikibot/site.py b/pywikibot/site.py index e5da073..cfbd128 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -46,6 +46,7 @@
if sys.version_info[0] > 2: basestring = (str,) + unicode = str
_logger = "wiki.site"
diff --git a/pywikibot/userinterfaces/win32_unicode.py b/pywikibot/userinterfaces/win32_unicode.py index a7bcfc4..ae9048d 100755 --- a/pywikibot/userinterfaces/win32_unicode.py +++ b/pywikibot/userinterfaces/win32_unicode.py @@ -25,6 +25,10 @@ stdout = sys.stdout stderr = sys.stderr argv = sys.argv + +if sys.version_info[0] > 2: + unicode = str + if sys.platform == "win32": import codecs from ctypes import WINFUNCTYPE, windll, POINTER @@ -178,7 +182,7 @@ self._stream.write(text) else: if not isinstance(text, unicode): - text = str(text).decode('utf-8') + text = bytes(text).decode('utf-8') remaining = len(text) while remaining > 0: n = DWORD(0) @@ -246,7 +250,7 @@ # Also skip option arguments to the Python interpreter. while len(argv) > 0: arg = argv[0] - if not arg.startswith(u"-") or arg == u"-": + if not arg.startswith(b"-") or arg == u"-": break argv = argv[1:] if arg == u'-m': diff --git a/pywikibot/weblib.py b/pywikibot/weblib.py index 017965a..83f6a68 100644 --- a/pywikibot/weblib.py +++ b/pywikibot/weblib.py @@ -11,7 +11,12 @@ # __version__ = '$Id$'
-import urllib +import sys +if sys.version_info[0] == 2: + from urllib import urlencode +else: + from urllib.parse import urlencode + from pywikibot.comms import http
@@ -34,7 +39,7 @@ if timestamp is not None: query['timestamp'] = timestamp
- uri = uri + urllib.urlencode(query) + uri = uri + urlencode(query) jsontext = http.request(uri=uri, site=None) if "closest" in jsontext: data = json.loads(jsontext) @@ -63,7 +68,7 @@ if timestamp is not None: query['date'] = timestamp
- uri = uri + urllib.urlencode(query) + uri = uri + urlencode(query) xmltext = http.request(uri=uri, site=None) if "success" in xmltext: data = ET.fromstring(xmltext) diff --git a/tests/page_tests.py b/tests/page_tests.py index d8590c9..772ddce 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -7,12 +7,16 @@ # __version__ = '$Id$'
- +import sys import pywikibot import pywikibot.page
from tests.utils import PywikibotTestCase, unittest
+if sys.version_info[0] > 2: + basestring = (str, ) + unicode = str + site = pywikibot.Site('en', 'wikipedia') mainpage = pywikibot.Page(pywikibot.page.Link("Main Page", site)) maintalk = pywikibot.Page(pywikibot.page.Link("Talk:Main Page", site)) diff --git a/tests/site_tests.py b/tests/site_tests.py index 96079a5..125b6aa 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -20,6 +20,7 @@
if sys.version_info[0] > 2: basestring = (str, ) + unicode = str
mysite = None mainpage = None
pywikibot-commits@lists.wikimedia.org