docs: def which(cmd, mode=os.F_OK | os.X_OK, path=None):
      """
      Given cmd, check where it is on PATH.
  
      Loosely based on the version in python 3.3.
      """
  
      if os.path.dirname(cmd):
          if os.path.isfile(cmd) and os.access(cmd, mode):
              return cmd
  
      if path is None:
          path = os.environ.get('PATH', defpath)
      if not path:
          return None
  
      paths = path.split(pathsep)
  
      if sys.platform == 'win32':
          # oh boy
          if curdir not in paths:
              paths = [curdir] + paths
  
          # also need to check the fileexts...
          pathext = os.environ.get('PATHEXT', '').split(pathsep)
  
          if any(cmd.lower().endswith(ext.lower()) for ext in pathext):
              files = [cmd]
          else:
              files = [cmd + ext for ext in pathext]
      else:
          # sanity
          files = [cmd]
  
      seen = set()
      for p in paths:
          normpath = normcase(p)
          if normpath in seen:
              continue
          seen.add(normpath)
          for f in files:
              fn = os.path.join(p, f)
              if os.path.isfile(fn) and os.access(fn, mode):
                  return fn
  
      return None