Repository: google/mobly

Issue:
Remove typing_extensions when we support Python >=3.8
The `typing_extensions` dependency is relied on for `Literal` for users of Python <3.8. When Python 3.8 is the minimum supported version, we no longer need this dependency and should subsequently remove it from `install_requires`.


Discussion:
We have bumped to 3.11, so we can probably execute this one now

Resolving patch:
diff --git a/mobly/utils.py b/mobly/utils.py
--- a/mobly/utils.py
+++ b/mobly/utils.py
@@ -30,17 +30,10 @@
 import threading
 import time
 import traceback
-from typing import Tuple, overload
+from typing import Literal, Tuple, overload
 
 import portpicker
 
-# TODO(#851): Remove this try/except statement and typing_extensions from
-# install_requires when Python 3.8 is the minimum version we support.
-try:
-  from typing import Literal
-except ImportError:
-  from typing_extensions import Literal
-
 # File name length is limited to 255 chars on some OS, so we need to make sure
 # the file names we output fits within the limit.
 MAX_FILENAME_LEN = 255
diff --git a/setup.py b/setup.py
deleted file mode 100755
--- a/setup.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2016 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import platform
-import setuptools
-from setuptools.command import test
-import sys
-
-install_requires = [
-    'portpicker',
-    'pyyaml',
-    'typing_extensions>=4.1.1; python_version>="3.11"',
-]
-
-if platform.system() == 'Windows':
-  install_requires.append('pywin32')
-
-
-class PyTest(test.test):
-  """Class used to execute unit tests using PyTest. This allows us to execute
-  unit tests without having to install the package.
-  """
-
-  def finalize_options(self):
-    test.test.finalize_options(self)
-    self.test_args = ['-x', 'tests/mobly']
-    self.test_suite = True
-
-  def run_tests(self):
-    import pytest
-
-    errno = pytest.main(self.test_args)
-    sys.exit(errno)
-
-
-def main():
-  setuptools.setup(
-      name='mobly',
-      version='1.12.2',
-      maintainer='Ang Li',
-      maintainer_email='mobly-github@googlegroups.com',
-      description='Automation framework for special end-to-end test cases',
-      license='Apache2.0',
-      url='https://github.com/google/mobly',
-      download_url='https://github.com/google/mobly/tarball/1.12.2',
-      packages=setuptools.find_packages(exclude=['tests']),
-      include_package_data=False,
-      scripts=['tools/sl4a_shell.py', 'tools/snippet_shell.py'],
-      tests_require=[
-          'mock',
-          'pytest',
-          'pytz',
-      ],
-      install_requires=install_requires,
-      cmdclass={'test': PyTest},
-  )
-
-
-if __name__ == '__main__':
-  main()


Test patch: