docs: def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True, as_path=False):
      r"""Return full path to the user-specific cache dir for this application.
  
          "appname" is the name of application.
              If None, just the system directory is returned.
          "appauthor" (only used on Windows) is the name of the
              appauthor or distributing body for this application. Typically
              it is the owning company name. This falls back to appname. You may
              pass False to disable it.
          "version" is an optional version path element to append to the
              path. You might want to use this if you want multiple versions
              of your app to be able to run independently. If used, this
              would typically be "<major>.<minor>".
              Only applied when appname is present.
          "opinion" (boolean) can be False to disable the appending of
              "Cache" to the base app data dir for Windows. See
              discussion below.
          "as_path" (boolean, default False) can be set to True to get pathlib.Path
              objects instead of plain strings. On python 2.7 you need to
              "pip install pathlib2".
  
      Typical user cache directories are:
          Mac OS X:   ~/Library/Caches/<AppName>
          Unix:       ~/.cache/<AppName> (XDG default)
          Win XP:     C:\Documents and Settings\<username>\Local Settings\Application Data\<AppAuthor>\<AppName>\Cache
          Vista:      C:\Users\<username>\AppData\Local\<AppAuthor>\<AppName>\Cache
  
      On Windows the only suggestion in the MSDN docs is that local settings go in
      the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming
      app data dir (the default returned by `user_data_dir` above). Apps typically
      put cache data somewhere *under* the given dir here. Some examples:
          ...\Mozilla\Firefox\Profiles\<ProfileName>\Cache
          ...\Acme\SuperApp\Cache\1.0
      OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value.
      This can be disabled with the `opinion=False` option.
      """
      if system == "win32":
          if appauthor is None:
              appauthor = appname
          path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA"))
          if appname:
              if appauthor is not False:
                  path = os.path.join(path, appauthor, appname)
              else:
                  path = os.path.join(path, appname)
              if opinion:
                  path = os.path.join(path, "Cache")
      elif system == 'darwin' and not os.getenv('XDG_CACHE_HOME'):
          path = os.path.expanduser('~/Library/Caches')
          if appname:
              path = os.path.join(path, appname)
      else:
          path = os.getenv('XDG_CACHE_HOME') or os.path.expanduser('~/.cache')
          if appname:
              path = os.path.join(path, appname)
      if appname and version:
          path = os.path.join(path, version)
      if as_path:
          path = Path(path)
      return path