Diff
Modified: trunk/Tools/ChangeLog (251382 => 251383)
--- trunk/Tools/ChangeLog 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/ChangeLog 2019-10-21 21:17:14 UTC (rev 251383)
@@ -1,3 +1,32 @@
+2019-10-21 Jonathan Bedard <jbed...@apple.com>
+
+ Python 3: Add support in webkitpy.common.config
+ https://bugs.webkit.org/show_bug.cgi?id=202463
+
+ Reviewed by Dewei Zhu.
+
+ * Scripts/test-webkitpy-python3: Add webkitpy.common.config to the test list.
+ * Scripts/webkitpy/common/config/committers.py:
+ (Contributor.__init__): Convert lists to maps.
+ (Contributor.__str__): __str__ will always return the native string type.
+ (Contributor.__unicode__): Use .format() string.
+ (CommitterList._exclusive_contributors): Convert filter to list.
+ (CommitterList._exclusive_committers): Ditto.
+ (CommitterList.contributors_by_search_string): Ditto.
+ * Scripts/webkitpy/common/config/committervalidator_unittest.py: Use full import paths.
+ * Scripts/webkitpy/common/config/contributionareas_unittest.py: Use full import paths.
+ * Scripts/webkitpy/common/config/ports.py:
+ (DeprecatedPort.makeArgs): Use 'in' instead of has_key.
+ * Scripts/webkitpy/common/config/urls_unittest.py:
+ * Scripts/webkitpy/common/unicode_compatibility.py:
+ (encode_for): Encode string for type.
+ * Scripts/webkitpy/thirdparty/BeautifulSoup.py: Make html5lib import auto-install compatible.
+ * Scripts/webkitpy/thirdparty/__init__.py:
+ (AutoinstallImportHook.find_module): Add html5lib.
+ (AutoinstallImportHook._install_html5lib): Make html5lib a stand-alone installed package.
+ (AutoinstallImportHook._install_mechanize): Install html5lib.
+ (AutoinstallImportHook._install_beautifulsoup): Ditto.
+
2019-10-21 Wenson Hsieh <wenson_hs...@apple.com>
[Clipboard API] Implement ClipboardItem.getType() for platform clipboard items
Modified: trunk/Tools/Scripts/test-webkitpy-python3 (251382 => 251383)
--- trunk/Tools/Scripts/test-webkitpy-python3 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/test-webkitpy-python3 2019-10-21 21:17:14 UTC (rev 251383)
@@ -32,6 +32,7 @@
PYTHON3_COMPATIBLE_DIRECTORIES = [
+ 'webkitpy.common.config',
'webkitpy.common.system',
'webkitpy.common.thread',
'webkitpy.common.net',
Modified: trunk/Tools/Scripts/webkitpy/common/config/committers.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/config/committers.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/config/committers.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -36,6 +36,7 @@
from webkitpy.common.editdistance import edit_distance
from webkitpy.common.memoized import memoized
from webkitpy.common.system.filesystem import FileSystem
+from webkitpy.common.unicode_compatibility import encode_for, unicode
class Contributor(object):
@@ -48,7 +49,7 @@
else:
self.emails = email_or_emails
self._case_preserved_emails = self.emails
- self.emails = map(lambda email: email.lower(), self.emails) # Emails are case-insensitive.
+ self.emails = list(map(lambda email: email.lower(), self.emails)) # Emails are case-insensitive.
if isinstance(irc_nickname_or_nicknames, str):
self.irc_nicknames = [irc_nickname_or_nicknames]
@@ -71,10 +72,10 @@
return self.emails[0]
def __str__(self):
- return unicode(self).encode('utf-8')
+ return encode_for(u'"{}" <{}>'.format(unicode(self.full_name), unicode(self.emails[0])), str)
def __unicode__(self):
- return '"%s" <%s>' % (self.full_name, self.emails[0])
+ return u'"{}" <{}>'.format(unicode(self.full_name), unicode(self.emails[0]))
def __eq__(self, other):
return (other is not None
@@ -241,11 +242,11 @@
# Contributors who are not in any other category.
def _exclusive_contributors(self):
- return filter(lambda contributor: not (contributor.can_commit or contributor.can_review), self._contributors)
+ return list(filter(lambda contributor: not (contributor.can_commit or contributor.can_review), self._contributors))
# Committers who are not reviewers.
def _exclusive_committers(self):
- return filter(lambda contributor: contributor.can_commit and not contributor.can_review, self._committers)
+ return list(filter(lambda contributor: contributor.can_commit and not contributor.can_review, self._committers))
# This is the superset of contributors + committers + reviewers
def contributors(self):
@@ -306,8 +307,8 @@
return None
def contributors_by_search_string(self, string):
- glob_matches = filter(lambda contributor: contributor.matches_glob(string), self.contributors())
- return glob_matches or filter(lambda contributor: contributor.contains_string(string), self.contributors())
+ glob_matches = list(filter(lambda contributor: contributor.matches_glob(string), self.contributors()))
+ return glob_matches or list(filter(lambda contributor: contributor.contains_string(string), self.contributors()))
def contributors_by_email_username(self, string):
string = string + '@'
Modified: trunk/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -29,7 +29,7 @@
import unittest
from webkitpy.common.host_mock import MockHost
-from .committervalidator import CommitterValidator
+from webkitpy.common.config.committervalidator import CommitterValidator
class CommitterValidatorTest(unittest.TestCase):
Modified: trunk/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -28,9 +28,9 @@
import unittest
-from .contributionareas import _Intersection
-from .contributionareas import _Area
-from .contributionareas import ContributionAreas
+from webkitpy.common.config.contributionareas import _Intersection
+from webkitpy.common.config.contributionareas import _Area
+from webkitpy.common.config.contributionareas import ContributionAreas
from webkitpy.common.system.filesystem_mock import MockFileSystem
Modified: trunk/Tools/Scripts/webkitpy/common/config/ports.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/config/ports.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/config/ports.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -86,7 +86,7 @@
def makeArgs(self):
# FIXME: This shouldn't use a static Executive().
args = '--makeargs="-j%s"' % Executive().cpu_count()
- if os.environ.has_key('MAKEFLAGS'):
+ if 'MAKEFLAGS' in os.environ:
args = '--makeargs="%s"' % os.environ['MAKEFLAGS']
return args
Modified: trunk/Tools/Scripts/webkitpy/common/config/urls_unittest.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/config/urls_unittest.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/config/urls_unittest.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -28,7 +28,7 @@
import unittest
-from .urls import parse_bug_id, parse_attachment_id
+from webkitpy.common.config.urls import parse_bug_id, parse_attachment_id
class URLsTest(unittest.TestCase):
Modified: trunk/Tools/Scripts/webkitpy/common/unicode_compatibility.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/common/unicode_compatibility.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/common/unicode_compatibility.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -41,6 +41,15 @@
return value
+def encode_for(value, target_type, **kwargs):
+ if target_type == bytes:
+ return encode_if_necessary(value, **kwargs)
+
+ if sys.version_info < (3, 0) and target_type == str:
+ return encode_if_necessary(value, **kwargs)
+ return value
+
+
def decode_if_necessary(value, encoding='utf-8', errors='strict'):
# In Python 2, string types might need to be decoded
if type(value) == bytes:
Modified: trunk/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -23,7 +23,7 @@
import sys
if sys.version_info > (3, 0):
- import html5lib
+ import webkitpy.thirdparty.autoinstalled.html5lib as html5lib
import webkitpy.thirdparty.autoinstalled.bs4 as bs4
from webkitpy.thirdparty.autoinstalled.bs4.builder import builder_registry, TreeBuilder
from webkitpy.thirdparty.autoinstalled.bs4.builder._htmlparser import HTMLParserTreeBuilder
Modified: trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py (251382 => 251383)
--- trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py 2019-10-21 21:16:21 UTC (rev 251382)
+++ trunk/Tools/Scripts/webkitpy/thirdparty/__init__.py 2019-10-21 21:17:14 UTC (rev 251383)
@@ -128,17 +128,23 @@
self._install_requests()
elif '.bs4' in fullname:
self._install_beautifulsoup()
+ elif '.html5lib' in fullname:
+ self._install_html5lib()
def _install_six(self):
self._install("https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz",
"six-1.11.0/six.py")
- def _install_mechanize(self):
+ def _install_html5lib(self):
self._ensure_autoinstalled_dir_is_in_sys_path()
self._install("https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz",
- "webencodings-0.5.1/webencodings")
+ "webencodings-0.5.1/webencodings")
self._install("https://files.pythonhosted.org/packages/85/3e/cf449cf1b5004e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f/html5lib-1.0.1.tar.gz",
- "html5lib-1.0.1/html5lib")
+ "html5lib-1.0.1/html5lib")
+
+ def _install_mechanize(self):
+ self._ensure_autoinstalled_dir_is_in_sys_path()
+ self._install_html5lib()
self._install("https://files.pythonhosted.org/packages/64/f1/1aa4c96dea14e17a955019b0fc4ac1b8dfbc50e3c90970c1fb8882e74a7b/mechanize-0.4.3.tar.gz",
"mechanize-0.4.3/mechanize")
self._install_six()
@@ -205,6 +211,7 @@
return
self._install_requests()
+ self._install_html5lib()
self._ensure_autoinstalled_dir_is_in_sys_path()
self._install("https://files.pythonhosted.org/packages/7f/4e/95a13527e18b6f1a15c93f1c634b86d5fa634c5619dce695f4e0cd68182f/soupsieve-1.9.4.tar.gz",
"soupsieve-1.9.4/soupsieve")