diff options
author | Christopher Marchfelder <marchfelder@googlemail.com> | 2020-10-23 10:08:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-23 10:08:24 (GMT) |
commit | da6f098188c9825f10ae60db8987056b3a54c2e8 (patch) | |
tree | 12fd534f1159492f1194c1fb14fe8c5ec20cdae2 /Lib/shutil.py | |
parent | 345cd37abe324ad4f60f80e2c3133b8849e54e9b (diff) | |
download | cpython-da6f098188c9825f10ae60db8987056b3a54c2e8.zip cpython-da6f098188c9825f10ae60db8987056b3a54c2e8.tar.gz cpython-da6f098188c9825f10ae60db8987056b3a54c2e8.tar.bz2 |
bpo-40592: shutil.which will not return None anymore if ; is the last char in PATHEXT (GH-20088)
shutil.which will not return None anymore for empty str in PATHEXT
Empty PATHEXT will now be defaulted to _WIN_DEFAULT_PATHEXT
Diffstat (limited to 'Lib/shutil.py')
-rw-r--r-- | Lib/shutil.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py index a4ce2c0..223e9a8 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -53,6 +53,9 @@ COPY_BUFSIZE = 1024 * 1024 if _WINDOWS else 64 * 1024 _USE_CP_SENDFILE = hasattr(os, "sendfile") and sys.platform.startswith("linux") _HAS_FCOPYFILE = posix and hasattr(posix, "_fcopyfile") # macOS +# CMD defaults in Windows 10 +_WIN_DEFAULT_PATHEXT = ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC" + __all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2", "copytree", "move", "rmtree", "Error", "SpecialFileError", "ExecError", "make_archive", "get_archive_formats", @@ -1415,7 +1418,9 @@ def which(cmd, mode=os.F_OK | os.X_OK, path=None): path.insert(0, curdir) # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + pathext_source = os.getenv("PATHEXT") or _WIN_DEFAULT_PATHEXT + pathext = [ext for ext in pathext_source.split(os.pathsep) if ext] + if use_bytes: pathext = [os.fsencode(ext) for ext in pathext] # See if the given file matches any of the expected path extensions. |