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

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): def which(cmd, mode=os.F_OK | os.X_OK, path=None):
"""Given a command, mode, and a PATH string, return the path which """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. conforms to the given mode on the PATH, or None if there is no such
`mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result of file.
os.environ.get("PATH"), or can be overridden with a custom search path."""
`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. # Check that a given file can be accessed with the correct mode.
# Additionally check that `file` is not a directory, as on Windows # Additionally check that `file` is not a directory, as on Windows
# directories pass the os.access check. # directories pass the os.access check.
def _access_check(fn, mode): def _access_check(fn, mode):
if (os.path.exists(fn) and os.access(fn, mode) return (os.path.exists(fn) and os.access(fn, mode)
and not os.path.isdir(fn)): and not os.path.isdir(fn))
return True
return False
# Short circuit. If we're given a full path which matches the mode # Short circuit. If we're given a full path which matches the mode
# and it exists, we're done here. # 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. # See if the given file matches any of the expected path extensions.
# This will allow us to short circuit when given "python.exe". # This will allow us to short circuit when given "python.exe".
matches = [cmd for ext in pathext if cmd.lower().endswith(ext.lower())] 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. # If it does match, only test that one, otherwise we have to try
files = [cmd + ext.lower() for ext in pathext] if not matches else [cmd] # others.
files = [cmd] if matches else [cmd + ext.lower() for ext in pathext]
else: else:
# On other platforms you don't have things like PATHEXT to tell you # 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. # what file suffixes are executable, so just pass on cmd as-is.