fix type hint for py3.6
diff --git a/tools/manifest/manifest.py b/tools/manifest/manifest.py
index 5e33829..152925f 100644
--- a/tools/manifest/manifest.py
+++ b/tools/manifest/manifest.py
@@ -30,6 +30,7 @@
     from typing import IO
     from typing import Iterator
     from typing import Iterable
+    from typing import List
     from typing import Optional
     from typing import Set
     from typing import Text
@@ -389,7 +390,7 @@
                     write_manifest=True,  # type: bool
                     allow_cached=True,  # type: bool
                     parallel=True,  # type: bool
-                    sub_dirs=None,  # type: Optional[list[str]]
+                    sub_dirs=None,  # type: Optional[List[str]]
                     ):
     # type: (...) -> Manifest
 
diff --git a/tools/manifest/update.py b/tools/manifest/update.py
index 5a2831e..91ec277 100755
--- a/tools/manifest/update.py
+++ b/tools/manifest/update.py
@@ -17,6 +17,7 @@
 if MYPY:
     # MYPY is set to True when run under Mypy.
     from typing import Any
+    from typing import List
     from typing import Optional
     from .manifest import Manifest  # avoid cyclic import
 
@@ -28,7 +29,7 @@
            cache_root=None,  # type: Optional[str]
            rebuild=False,  # type: bool
            parallel=True,  # type: bool
-           sub_dirs=None  # type: Optional[list[str]]
+           sub_dirs=None  # type: Optional[List[str]]
            ):
     # type: (...) -> bool
     logger.warning("Deprecated; use manifest.load_and_update instead")
diff --git a/tools/manifest/vcs.py b/tools/manifest/vcs.py
index c73c855..6b94f13 100644
--- a/tools/manifest/vcs.py
+++ b/tools/manifest/vcs.py
@@ -26,7 +26,7 @@
 
 def get_tree(tests_root, manifest, manifest_path, cache_root,
              working_copy=True, rebuild=False, sub_dirs=None):
-    # type: (Text, Manifest, Optional[Text], Optional[Text], bool, bool, Optional[list[str]]) -> FileSystem
+    # type: (Text, Manifest, Optional[Text], Optional[Text], bool, bool, Optional[List[str]]) -> FileSystem
     tree = None
     if cache_root is None:
         cache_root = os.path.join(tests_root, ".wptcache")
@@ -88,7 +88,7 @@
 
 class FileSystem:
     def __init__(self, tests_root, url_base, cache_path, manifest_path=None, rebuild=False, sub_dirs=None):
-        # type: (Text, Text, Optional[Text], Optional[Text], bool, Optional[list[str]]) -> None
+        # type: (Text, Text, Optional[Text], Optional[Text], bool, Optional[List[str]]) -> None
         self.tests_root = tests_root
         self.sub_dirs = sub_dirs or ['']
         self.url_base = url_base
@@ -109,7 +109,7 @@
     def __iter__(self):
         # type: () -> Iterator[Tuple[Text, Optional[Text], bool]]
         def path_and_hash(mtime_cache, path, path_stat):
-            # type: (Optional[MtimeCache], str, os.stat_result) -> tuple[str, Optional[str], bool]
+            # type: (Optional[MtimeCache], str, os.stat_result) -> Tuple[str, Optional[str], bool]
             if mtime_cache is None or mtime_cache.updated(path, path_stat):
                 file_hash = self.hash_cache.get(path, None)
                 return path, file_hash, True