defcheck_file_perms(filename:Path,show_warning:bool=True):forpin[filename]:ifnotp.exists():continuemode=p.stat().st_modecur_perms=mode&ST_PERM_MASKifcur_perms==ST_USER_RW:continuemsg=f'Credentials file "{p}" has insecure permissions.'ifp.owner()!=getpass.getuser():msg=f'{msg} File not owned by current user, cannot correct'show_warning=Trueelse:msg=f'{msg} File mode changed'new_mode=mode-cur_permsnew_mode|=ST_USER_RWassertnew_mode&ST_PERM_MASK==ST_USER_RWp.chmod(new_mode)ifshow_warning:logger.warning(msg)defsave_user_credentials(data:dict,filename:Path)->None:filename.write_text(json.dumps(data))check_file_perms(filename,show_warning=False)