small refactor and PEP8 line width/docstring

This commit is contained in:
Philip Jenvey 2012-06-23 15:54:38 -07:00
parent 66a3a7ed10
commit 88bc0d2640
1 changed files with 13 additions and 9 deletions

View File

@ -1037,17 +1037,20 @@ def get_terminal_size(fallback=(80, 24)):
def 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."""
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):
if (os.path.exists(fn) and os.access(fn, mode)
and not os.path.isdir(fn)):
return True
return False
return (os.path.exists(fn) and os.access(fn, mode)
and not os.path.isdir(fn))
# Short circuit. If we're given a full path which matches the mode
# and it exists, we're done here.
@ -1066,8 +1069,9 @@ def which(cmd, mode=os.F_OK | os.X_OK, path=None):
# See if the given file matches any of the expected path extensions.
# This will allow us to short circuit when given "python.exe".
matches = [cmd for ext in pathext if cmd.lower().endswith(ext.lower())]
# If it does match, only test that one, otherwise we have to try others.
files = [cmd + ext.lower() for ext in pathext] if not matches else [cmd]
# If it does match, only test that one, otherwise we have to try
# others.
files = [cmd] if matches else [cmd + ext.lower() 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.