sync: do not require python 3.9

Use pre-3.9 syntax for NamedTuple, so that users do not need to have
python 3.9 or later installed.

Bug: b/255632143, crbug.com/gerrit/16355
Test: manually verified with python 3.8
Change-Id: I488d2d5267ed98d5c55c233cc789e629f1911c9d
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/349395
Tested-by: LaMont Jones <lamontjones@google.com>
Reviewed-by: Jonathan Nieder <jrn@google.com>
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 5818b45..8dc2214 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -26,7 +26,7 @@
 import sys
 import tempfile
 import time
-from typing import NamedTuple
+from typing import NamedTuple, List, Set
 import urllib.error
 import urllib.parse
 import urllib.request
@@ -94,19 +94,19 @@
 
   Attributes:
     success (bool): True if successful.
-    projects (set[str]): The names of the git directories of fetched projects.
+    projects (Set[str]): The names of the git directories of fetched projects.
   """
   success: bool
-  projects: set[str]
+  projects: Set[str]
 
 
 class _FetchMainResult(NamedTuple):
   """_FetchMain return value.
 
   Attributes:
-    all_projects (list[Project]): The fetched projects.
+    all_projects (List[Project]): The fetched projects.
   """
-  all_projects: list[Project]
+  all_projects: List[Project]
 
 
 class _CheckoutOneResult(NamedTuple):