diff --git a/build.py b/build.py index 8e30d8e6..d82b94b1 100755 --- a/build.py +++ b/build.py @@ -29,10 +29,7 @@ import shlex import textwrap import warnings -try: - from shutil import which -except ImportError: - from buildtools.backports.shutil_which import which +from shutil import which try: from setuptools.modified import newer, newer_group diff --git a/buildtools/backports/__init__.py b/buildtools/backports/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/buildtools/backports/shutil_which.py b/buildtools/backports/shutil_which.py deleted file mode 100644 index 1182bc91..00000000 --- a/buildtools/backports/shutil_which.py +++ /dev/null @@ -1,78 +0,0 @@ -"""Backport of shutil.which from Python 3.5 - -The function is included unmodified from Python stdlib 3.5.1, -and is (C) Python -""" -from __future__ import absolute_import # Import system's os, not backports.os. - -import os -import sys - -__version__ = '3.5.1' - -def backport_which(cmd, mode=os.F_OK | os.X_OK, path=None): - """Given a command, mode, and a PATH string, return the path which - conforms to the given mode on the PATH, or None if there is no such - file. - - `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result - of os.environ.get("PATH"), or can be overridden with a custom search - path. - - """ - # Check that a given file can be accessed with the correct mode. - # Additionally check that `file` is not a directory, as on Windows - # directories pass the os.access check. - def _access_check(fn, mode): - return (os.path.exists(fn) and os.access(fn, mode) - and not os.path.isdir(fn)) - - # If we're given a path with a directory part, look it up directly rather - # than referring to PATH directories. This includes checking relative to the - # current directory, e.g. ./script - if os.path.dirname(cmd): - if _access_check(cmd, mode): - return cmd - return None - - if path is None: - path = os.environ.get("PATH", os.defpath) - if not path: - return None - path = path.split(os.pathsep) - - if sys.platform == "win32": - # The current directory takes precedence on Windows. - if not os.curdir in path: - path.insert(0, os.curdir) - - # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) - # See if the given file matches any of the expected path extensions. - # This will allow us to short circuit when given "python.exe". - # If it does match, only test that one, otherwise we have to try - # others. - if any(cmd.lower().endswith(ext.lower()) for ext in pathext): - files = [cmd] - else: - files = [cmd + ext for ext in pathext] - else: - # On other platforms you don't have things like PATHEXT to tell you - # what file suffixes are executable, so just pass on cmd as-is. - files = [cmd] - - seen = set() - for dir in path: - normdir = os.path.normcase(dir) - if not normdir in seen: - seen.add(normdir) - for thefile in files: - name = os.path.join(dir, thefile) - if _access_check(name, mode): - return name - return None - -try: - from shutil import which -except ImportError: - which = backport_which