Repository: ipython/ipython

Issue:
Remove pre-3.8 codepath.
Once https://github.com/ipython/ipython/pull/13315 is merged the master branch will not support 3.7 anymore, this gives opportunities to remove all the pre-3.8 codepath.

If you like to contribute, find 1 block of code that is execute only before python 3.8 (look for sys.version_info in the code base), 
and simplify it. 

It may be more than just deleting code, as you might be then able to cleanup imports, or simplify more logics.  


Discussion:
https://app.codecov.io/gh/ipython/ipython/compare/13315/changes might be a good way to see code that can potentially be removed. 
@Carreau Should I continue working on this issue or should we save it for newer people?
> @Carreau Should I continue working on this issue or should we save it for newer people?

Up to you, depend how comfortable you are around the code base. It's a good way to get started maybe try to remove the conditional code and try to understand/simplify/improved nearby code ? 

Resolving patch:
diff --git a/IPython/terminal/shortcuts.py b/IPython/terminal/shortcuts.py
--- a/IPython/terminal/shortcuts.py
+++ b/IPython/terminal/shortcuts.py
@@ -163,10 +163,9 @@ def _(event):
         kb.add(*keys, filter=focused_insert & ebivim)(cmd)
 
     def get_input_mode(self):
-        if sys.version_info[0] == 3:
-            app = get_app()
-            app.ttimeoutlen = shell.ttimeoutlen
-            app.timeoutlen = shell.timeoutlen
+        app = get_app()
+        app.ttimeoutlen = shell.ttimeoutlen
+        app.timeoutlen = shell.timeoutlen
 
         return self._input_mode
 


Test patch:
diff --git a/IPython/testing/decorators.py b/IPython/testing/decorators.py
--- a/IPython/testing/decorators.py
+++ b/IPython/testing/decorators.py
@@ -162,11 +162,6 @@ def module_not_available(module):
 
 skip_if_no_x11 = skipif(_x11_skip_cond, _x11_skip_msg)
 
-
-# Decorators to skip certain tests on specific platform/python combinations
-skip_win32_py38 = skipif(sys.version_info > (3,8) and os.name == 'nt')
-
-
 # Other skip decorators
 
 # generic skip without module
diff --git a/IPython/testing/tools.py b/IPython/testing/tools.py
--- a/IPython/testing/tools.py
+++ b/IPython/testing/tools.py
@@ -191,9 +191,6 @@ def ipexec(fname, options=None, commands=()):
     # Absolute path for filename
     full_fname = os.path.join(test_dir, fname)
     full_cmd = ipython_cmd + cmdargs + ['--', full_fname]
-    if sys.platform == "win32" and sys.version_info < (3, 8):
-        # subprocess.Popen does not support Path objects yet
-        full_cmd = list(map(str, full_cmd))
     env = os.environ.copy()
     # FIXME: ignore all warnings in ipexec while we have shims
     # should we keep suppressing warnings here, even after removing shims?
diff --git a/IPython/utils/tests/test_path.py b/IPython/utils/tests/test_path.py
--- a/IPython/utils/tests/test_path.py
+++ b/IPython/utils/tests/test_path.py
@@ -19,9 +19,11 @@
 import IPython
 from IPython import paths
 from IPython.testing import decorators as dec
-from IPython.testing.decorators import (skip_if_not_win32, skip_win32,
-                                        onlyif_unicode_paths,
-                                        skip_win32_py38,)
+from IPython.testing.decorators import (
+    skip_if_not_win32,
+    skip_win32,
+    onlyif_unicode_paths,
+)
 from IPython.testing.tools import make_tempfile
 from IPython.utils import path
 from IPython.utils.tempdir import TemporaryDirectory
@@ -138,7 +140,7 @@ def test_get_home_dir_2():
     assert home_dir == unfrozen
 
 
-@skip_win32_py38
+@skip_win32
 @with_environment
 def test_get_home_dir_3():
     """get_home_dir() uses $HOME if set"""
@@ -156,7 +158,7 @@ def test_get_home_dir_4():
     # this should still succeed, but we don't care what the answer is
     home = path.get_home_dir(False)
 
-@skip_win32_py38
+@skip_win32
 @with_environment
 def test_get_home_dir_5():
     """raise HomeDirError if $HOME is specified, but not a writable dir"""