From 561c3b86be71c674a343d3506dbb7feb73545970 Mon Sep 17 00:00:00 2001 From: John Vandenberg Date: Sun, 10 Mar 2019 01:07:52 +0700 Subject: [PATCH] compat: Use import to feature detect Instead of using literal Python version checks, detect whether stdlib has the needed function, otherwise fallback to attempting the backport. Fixes https://github.com/sarugaku/vistir/issues/63 --- setup.cfg | 2 +- src/vistir/compat.py | 16 ++++++++++------ src/vistir/path.py | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/setup.cfg b/setup.cfg index 594ed5c..6333798 100644 --- a/setup.cfg +++ b/setup.cfg @@ -38,7 +38,7 @@ setup_requires = wheel install_requires = colorama - backports.functools_lru_cache;python_version<="3.4" + backports.functools_lru_cache;python_version<="3.3" backports.shutil_get_terminal_size;python_version<"3.3" backports.weakref;python_version<"3.3" pathlib2;python_version<"3.5" diff --git a/src/vistir/compat.py b/src/vistir/compat.py index 31283d6..5d63f5c 100644 --- a/src/vistir/compat.py +++ b/src/vistir/compat.py @@ -10,7 +10,6 @@ import six -from .backports.tempfile import NamedTemporaryFile as _NamedTemporaryFile __all__ = [ "Path", @@ -40,19 +39,24 @@ if sys.version_info >= (3, 5): from pathlib import Path - from functools import lru_cache else: from pathlib2 import Path - from backports.functools_lru_cache import lru_cache +try: + from functools import lru_cache +except ImportError: + from backports.functools_lru_cache import lru_cache -if sys.version_info < (3, 3): +try: + from shutil import get_terminal_size +except ImportError: from backports.shutil_get_terminal_size import get_terminal_size - NamedTemporaryFile = _NamedTemporaryFile +# The Python 2 NamedTemporaryFile doesnt support encoding +if sys.version_info[0] == 2: + from .backports.tempfile import NamedTemporaryFile else: from tempfile import NamedTemporaryFile - from shutil import get_terminal_size try: from weakref import finalize diff --git a/src/vistir/path.py b/src/vistir/path.py index d551aac..5e0bdc7 100644 --- a/src/vistir/path.py +++ b/src/vistir/path.py @@ -20,7 +20,7 @@ ResourceWarning, TemporaryDirectory, _fs_encoding, - _NamedTemporaryFile, + NamedTemporaryFile as _NamedTemporaryFile, finalize, fs_decode, fs_encode,