2v dZddlmZddlZddlZddlZddlmZddlm Z ddl m Z e rddl m Z Gd d e ZddZddZddZddZddZedeZd gZdS)zWindows.) annotationsN) lru_cache) TYPE_CHECKING)PlatformDirsABC)CallableceZdZdZeddZdddd Zedd Zedd Zedd Z eddZ eddZ eddZ eddZ eddZeddZeddZeddZeddZeddZeddZeddZdS)Windowsa `MSDN on where to store app data files `_. Makes use of the `appname `, `appauthor `, `version `, `roaming `, `opinion `, `ensure_exists `. returnstrc|jrdnd}tjt |}||S)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 /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/platformdirs/windows.py user_data_dirzWindows.user_data_dirsF$(<J5Jwu 5 566!!$'''N opinion_valuerr str | Noneczg}|jr|jdur#|jp|j}||||j||jr|||jr||jt jj|g|R}|||S)NF) appname appauthorappendopinionversionrrjoin_optionally_create_directory)rrrparamsauthors rrzWindows._append_parts(s < ,~U**74< f%%% MM$, ' ' '(T\( m,,,| , dl+++w|D*6*** ))$/// rctjtd}||S)zT:return: data directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``CSIDL_COMMON_APPDATArrrrrrrs r site_data_dirzWindows.site_data_dir7s6w/E F FGG!!$'''rc|jS)zC:return: config directory tied to the user, same as `user_data_dir`rrs ruser_config_dirzWindows.user_config_dir= !!rc|jS)zF:return: config directory shared by the users, same as `site_data_dir`)r,r/s rsite_config_dirzWindows.site_config_dirBr1rctjtd}||dS)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_dirzWindows.user_cache_dirGs; w/D E EFF!!$g!>>>rctjtd}||dS)zd:return: cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``r)r5rr*r+s rsite_cache_dirzWindows.site_cache_dirPs;w/E F FGG!!$g!>>>rc|jS)zB:return: state directory tied to the user, same as `user_data_dir`r.r/s ruser_state_dirzWindows.user_state_dirVr1rc|j}|jr5tj|d}|||S)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_dirzWindows.user_log_dir[sD! < 47<<f--D  - -d 3 3 3 rcZtjtdS)zN:return: documents directory tied to the user e.g. ``%USERPROFILE%\Documents``CSIDL_PERSONALrrrrr/s ruser_documents_dirzWindows.user_documents_dirds#w/? @ @AAArcZtjtdS)zN:return: downloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``CSIDL_DOWNLOADSr@r/s ruser_downloads_dirzWindows.user_downloads_diris#w/@ A ABBBrcZtjtdS)zL:return: pictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``CSIDL_MYPICTURESr@r/s ruser_pictures_dirzWindows.user_pictures_dirns#w/A B BCCCrcZtjtdS)zH:return: videos directory tied to the user e.g. ``%USERPROFILE%\Videos`` CSIDL_MYVIDEOr@r/s ruser_videos_dirzWindows.user_videos_dirs"w ? ?@@@rcZtjtdS)zF:return: music directory tied to the user e.g. ``%USERPROFILE%\Music`` CSIDL_MYMUSICr@r/s ruser_music_dirzWindows.user_music_dirxrKrcZtjtdS)zK:return: desktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``CSIDL_DESKTOPDIRECTORYr@r/s ruser_desktop_dirzWindows.user_desktop_dir}s#w/G H HIIIrctjtjt dd}||S)z :return: runtime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname`` rTemp)rrrr$rrr+s ruser_runtime_dirzWindows.user_runtime_dirsG w ^>LIq y>>rc ddddddddd d |}|d |}t|tjd }t td}|jd |d d|td|Dr7tjd }|j |j |d r|}|dkr%tj |j dS|j S)zGet folder with ctypes.#' () rr)rr?rFrIrMrCrPNrbiwindllrc3<K|]}t|dkVdS)N)ord).0cs r z,get_win_folder_via_ctypes..s, % %A3q66C< % % % % % %rrCrn)rdrectypescreate_unicode_buffergetattrshell32SHGetFolderPathWanykernel32GetShortPathNameWvaluerrr$)r] csidl_constribufrbuf2s rget_win_folder_via_ctypesrs "!"$   c*oo1Z11oo  &t , ,C VX & &F N##D+tQDDD % % % % %%%+D11 ? , ,SYd C C C&&&w||CI{333 9rCallable[[str], str]cttdrtS ddl}tS#t $r t cYSwxYw)Nrr)hasattrrrryr ImportErrorrj)rys r_pick_get_win_folderrsYvx  )((, ,+ ,,,++++,s )==)maxsize)r]r r r )r]r r r)r r)rZ __future__rrrrv functoolsrtypingrapircollections.abcrr rjrcrrrr__all__r\rrrsW""""""  )((((((~%~%~%~%~%o~%~%~%B*&:""""J,,,,)4((()=)=)?)?@@ r