code: def on_error(func, path, exc_info):  # pylint: disable=unused-argument
      
      if not os.access(path, os.W_OK):
          # Is the error an access error ?
          os.chmod(path, stat.S_IWUSR)
          func(path)
      else:
          raise
docs: Error handler for ``shutil.rmtree``.
  
      If the error is due to an access error (read only file)
      it attempts to add write permission and then retries.
  
      If the error is for another reason it re-raises the error.
  
      Usage : ``shutil.rmtree(path, onerror=onerror)``
  
      # 2007/11/08
      # Version 0.2.6
      # pathutils.py
      # Functions useful for working with files and paths.
      # http://www.voidspace.org.uk/python/recipebook.shtml#utils
  
      # Copyright Michael Foord 2004
      # Released subject to the BSD License
      # Please see http://www.voidspace.org.uk/python/license.shtml
  
      # For information about bugfixes, updates and support, please join the Pythonutils mailing list.
      # http://groups.google.com/group/pythonutils/
      # Comments, suggestions and bug reports welcome.
      # Scripts maintained at http://www.voidspace.org.uk/python/index.shtml
      # E-mail fuzzyman@voidspace.org.uk