Title: [251383] trunk/Tools
Revision
251383
Author
jbed...@apple.com
Date
2019-10-21 14:17:14 -0700 (Mon, 21 Oct 2019)

Log Message

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.

Modified Paths

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")
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to