From a96c0f53b2a62a94582624c76c7d990012891204 Mon Sep 17 00:00:00 2001 From: Kyle King Date: Wed, 27 Jan 2021 19:16:43 -0500 Subject: [PATCH] Update conditional pyreadline3 dependency for Win --- Pipfile | 3 ++- cmd2/rl_utils.py | 4 ++-- docs/overview/integrating.rst | 9 ++++++--- setup.py | 5 +++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Pipfile b/Pipfile index b384709cb..bfa222b69 100644 --- a/Pipfile +++ b/Pipfile @@ -22,7 +22,8 @@ ipython = "*" isort = "*" mock = {version = "*",markers = "python_version < '3.6'"} plumbum = "*" -pyreadline = {version = "*",sys_platform = "== 'win32'"} +pyreadline = {version = "*",sys_platform = "== 'win32'",markers = "python_version < '3.8'"} +pyreadline3 = {version = "*",sys_platform = "== 'win32'",markers = "python_version >= '3.8'"} pytest = "*" pytest-cov = "*" pytest-mock = "*" diff --git a/cmd2/rl_utils.py b/cmd2/rl_utils.py index e435c3f5b..ca75fd8a0 100644 --- a/cmd2/rl_utils.py +++ b/cmd2/rl_utils.py @@ -37,8 +37,8 @@ class RlType(Enum): # Explanation for why readline wasn't loaded _rl_warn_reason = '' -# The order of this check matters since importing pyreadline will also show readline in the modules list -if 'pyreadline' in sys.modules: +# The order of this check matters since importing pyreadline/pyreadline3 will also show readline in the modules list +if 'pyreadline' in sys.modules or 'pyreadline3' in sys.modules: rl_type = RlType.PYREADLINE from ctypes import byref diff --git a/docs/overview/integrating.rst b/docs/overview/integrating.rst index db5cb2063..041083bcc 100644 --- a/docs/overview/integrating.rst +++ b/docs/overview/integrating.rst @@ -26,10 +26,13 @@ Windows Considerations If you would like to use :ref:`features/completion:Completion`, and you want your application to run on Windows, you will need to ensure you install the -``pyreadline`` package. Make sure to include the following in your -``setup.py``:: +``pyreadline3`` or ``pyreadline`` package. Make sure to include the following +in your ``setup.py``:: install_requires=[ 'cmd2>=1,<2', - ":sys_platform=='win32'": ['pyreadline'], + ":sys_platform=='win32'": [ + "pyreadline ; python_version<'3.8'", + "pyreadline3 ; python_version>='3.8'", # pyreadline3 is a drop-in replacement for Python 3.8 and above + ], ] diff --git a/setup.py b/setup.py index 5e2995a90..6b438b139 100755 --- a/setup.py +++ b/setup.py @@ -44,8 +44,9 @@ ] EXTRAS_REQUIRE = { - # Windows also requires pyreadline to ensure tab completion works - ":sys_platform=='win32'": ['pyreadline'], + # Windows also requires pyreadline or the replacement, pyreadline3, to ensure tab completion works + ":sys_platform=='win32' and python_version<'3.8'": ["pyreadline"], + ":sys_platform=='win32' and python_version>='3.8'": ["pyreadline3"], # Extra dependencies for running unit tests 'test': [ "gnureadline; sys_platform=='darwin'", # include gnureadline on macOS to ensure it is available in nox env