code: def user_cache_dir(appname):
      # type: (str) -> str
      r
      if WINDOWS:
          # Get the base path
          path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA"))
  
          # When using Python 2, return paths as bytes on Windows like we do on
          # other operating systems. See helper function docs for more details.
          if PY2 and isinstance(path, text_type):
              path = _win_path_to_bytes(path)
  
          # Add our app name and Cache directory to it
          path = os.path.join(path, appname, "Cache")
      elif sys.platform == "darwin":
          # Get the base path
          path = expanduser("~/Library/Caches")
  
          # Add our app name to it
          path = os.path.join(path, appname)
      else:
          # Get the base path
          path = os.getenv("XDG_CACHE_HOME", expanduser("~/.cache"))
  
          # Add our app name to it
          path = os.path.join(path, appname)
  
      return path
docs: r"""
      Return full path to the user-specific cache dir for this application.
  
          "appname" is the name of application.
  
      Typical user cache directories are:
          macOS:      ~/Library/Caches/<AppName>
          Unix:       ~/.cache/<AppName> (XDG default)
          Windows:    C:\Users\<username>\AppData\Local\<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`). 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.