2bie%SrSSKJr SSKrSSKrSSKrSSKJr SSKJ r SSK J r \ (aSSK J r "S S \ 5rSS jrSS jrSS jrSSjrSSjr\"SS9"\"55rS /rg)zWindows.) annotationsN) lru_cache) TYPE_CHECKING)PlatformDirsABC)CallablecB\rSrSrSr\SSj5rSS.SSjjr\SSj5r\SSj5r \SS j5r \SS j5r \SS j5r \SS j5r \SS j5r\SSj5r\SSj5r\SSj5r\SSj5r\SSj5r\SSj5rSrg)Windowsa `MSDN on where to store app data files `_. Makes use of the `appname `, `appauthor `, `version `, `roaming `, `opinion `, `ensure_exists `. cUR(aSOSn[RR[ U55nUR U5$)z :return: data directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname`` (not roaming) or ``%USERPROFILE%\AppData\Roaming\$appauthor\$appname`` (roaming) CSIDL_APPDATACSIDL_LOCAL_APPDATA)roamingospathnormpathget_win_folder _append_parts)selfconstrs ڒ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/platformdirs/windows.py user_data_dirWindows.user_data_dirs<$(<<5Jwwu 56!!$''N opinion_valuec/nUR(aURSLa0UR=(d URnURU5 URUR5 Ub"UR(aURU5 UR(aURUR5 [ R R"U/UQ76nURU5 U$)NF) appname appauthorappendopinionversionrrjoin_optionally_create_directory)rrrparamsauthors rrWindows._append_parts(s <<~~U*74<< f% MM$,, '(T\\ m,|| dll+ww||D*6* ))$/ rct[RR[S55nUR U5$)zT:return: data directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``CSIDL_COMMON_APPDATArrrrrrrs r site_data_dirWindows.site_data_dir7s/ww/E FG!!$''rcUR$)zC:return: config directory tied to the user, same as `user_data_dir`rrs ruser_config_dirWindows.user_config_dir=!!!rcUR$)zF:return: config directory shared by the users, same as `site_data_dir`)r,r0s rsite_config_dirWindows.site_config_dirBr3rcr[RR[S55nUR USS9$)z :return: cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname\Cache\$version`` rCacherr*r+s ruser_cache_dirWindows.user_cache_dirGs4 ww/D EF!!$g!>>rcr[RR[S55nUR USS9$)zd:return: cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``r)r8rr*r+s rsite_cache_dirWindows.site_cache_dirPs4ww/E FG!!$g!>>rcUR$)zB:return: state directory tied to the user, same as `user_data_dir`r/r0s ruser_state_dirWindows.user_state_dirVr3rcURnUR(a1[RR US5nUR U5 U$)zg:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in itLogs)rr!rrr#r$r+s r user_log_dirWindows.user_log_dir[s=!! <<77<<f-D  - -d 3 rcR[RR[S55$)zN:return: documents directory tied to the user e.g. ``%USERPROFILE%\Documents``CSIDL_PERSONALrrrrr0s ruser_documents_dirWindows.user_documents_dirdsww/? @AArcR[RR[S55$)zN:return: downloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``CSIDL_DOWNLOADSrGr0s ruser_downloads_dirWindows.user_downloads_dirisww/@ ABBrcR[RR[S55$)zL:return: pictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``CSIDL_MYPICTURESrGr0s ruser_pictures_dirWindows.user_pictures_dirnsww/A BCCrcR[RR[S55$)zH:return: videos directory tied to the user e.g. ``%USERPROFILE%\Videos`` CSIDL_MYVIDEOrGr0s ruser_videos_dirWindows.user_videos_dirsww ?@@rcR[RR[S55$)zF:return: music directory tied to the user e.g. ``%USERPROFILE%\Music`` CSIDL_MYMUSICrGr0s ruser_music_dirWindows.user_music_dirxrVrc[RR[RR[ S5S55nUR U5$)zm :return: runtime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname`` rTemp)rrrr#rrr+s ruser_runtime_dirWindows.user_runtime_dir}s? ww ^LI y>rc SSSSSSSSS .RU5nUcS U3n[U5e[R"S 5n[ [S 5nUR R S US SU5 [SU55(aD[R"S 5nURRURUS 5(aUnUS:Xa*[RRURS5$UR$)zGet folder with ctypes.#' ()r r)rrFrOrSrXrKNrniwindllrc3># UHn[U5S:v M g7f)N)ord).0cs r ,get_win_folder_via_ctypes..s %A3q6C<srKr{)rprqctypescreate_unicode_buffergetattrshell32SHGetFolderPathWanykernel32GetShortPathNameWvaluerrr#)rs csidl_constrvbufrbuf2s rget_win_folder_via_ctypesrs "!  c*o$ZL1o  & &t ,C VX &F NN##D+tQD % %%%++D1 ?? , ,SYYd C CC&&ww||CII{33 99rcz[[S5(a[$SSKn[$![ a [ s$f=f)Nrr)hasattrrrrr ImportErrorrw)rs r_pick_get_win_folderrs<vx  ((,,+ ,++,s '::)maxsize)rsrar`ra)rsrar`rb)r`zCallable[[str], str])rg __future__rrrr functoolsrtypingrapircollections.abcrr rwrorrrr__all__r_rrrsm"  (t(ot(n*&:!H,4()=)?@ r