docs: def which(filename):
      '''This takes a given filename; tries to find it in the environment path;
      then checks if it is executable. This returns the full path to the filename
      if found and executable. Otherwise this returns None.
  
      Note
      ----
      This function is taken from the pexpect module, see module doc-string for
      license.
      '''
  
      # Special case where filename contains an explicit path.
      if os.path.dirname(filename) != '' and is_executable_file(filename):
          return filename
      if 'PATH' not in os.environ or os.environ['PATH'] == '':
          p = os.defpath
      else:
          p = os.environ['PATH']
      pathlist = p.split(os.pathsep)
      for path in pathlist:
          ff = os.path.join(path, filename)
          if pty:
              if is_executable_file(ff):
                  return ff
          else:
              pathext = os.environ.get('Pathext', '.exe;.com;.bat;.cmd')
              pathext = pathext.split(os.pathsep) + ['']
              for ext in pathext:
                  if os.access(ff + ext, os.X_OK):
                      return ff + ext
      return None