The default policy disallows all access in the user’s home except for the snap-specific directories in $SNAP_USER_DATA and $SNAP_USER_COMMON.
The home interface is a transitional interface that allows access to everything in the user’s home except other snap directories and toplevel hidden directories such as .gpg, .ssh, .config, .fetchmailrc, etc since these files and directories may contain sensitive data. Also, snaps can refresh and revert independently of deb/rpm/etc packages so they are not allowed to use files like ~/.config/$SNAP_NAME since that might introduce instability with packages installed via package managers.
Keep in mind that the HOME environment variable at snap runtime is set to $SNAP_USER_DATA so your snap will be able to access $HOME/.cache from it’s perspective, but that is of course ~/snap/SNAP_NAME/SNAP_REVISION, not ~/.cache. In your particular case, I suggest using
os.path.join(os.environ['HOME'], '.cache', ...) or plugging the home interface and picking a non-hidden-toplevel directory.