Ë ´ü–íÉׄãóÌ—dZddlmZddlZddlZddlZddlmZddlm Z ddl m Z e rddl m Z Gd „d e «Zdd „Zdd „Zdd „Zdd„Zdd„Zed¬«e««Zd gZy)zWindows.é)Ú annotationsN)Ú lru_cache)Ú TYPE_CHECKINGé)ÚPlatformDirsABC)ÚCallablecó>—eZdZdZedd„«Zddœdd„Zedd„«Zedd„«Zedd„«Z edd „«Z edd „«Z edd „«Z edd „«Z edd „«Zedd„«Zedd„«Zedd„«Zedd„«Zedd„«Zedd„«Zedd„«Zy)ÚWindowsa `MSDN on where to store app data files `_. Makes use of the `appname `, `appauthor `, `version `, `roaming `, `opinion `, `ensure_exists `. có”—|jrdnd}tjjt |««}|j |«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_APPDATAÚCSIDL_LOCAL_APPDATA)ÚroamingÚosÚpathÚnormpathÚget_win_folderÚ _append_parts)ÚselfÚconstrs ú9/usr/lib/python3.12/site-packages/platformdirs/windows.pyÚ user_data_dirzWindows.user_data_dirs<€ð$(§<¢<‘Ð5JˆÜ�w‰w×Ѥ¨uÓ 5Ó6ˆØ×!Ñ! $Ó'Ð'óN©Ú opinion_valuecó¸—g}|jrš|jdur+|jxs |j}|j|«|j|j«|�|jr|j|«|jr|j|j«t j j|g|¢­Ž}|j|«|S)NF) ÚappnameÚ appauthorÚappendÚopinionÚversionrrÚjoinÚ_optionally_create_directory)rrrÚparamsÚauthors rrzWindows._append_parts)s¡€ØˆØ �<Š<Ø�~‰~ UÑ*ØŸ™Ò7¨4¯<©<�Ø— ‘ ˜fÔ%Ø �M‰M˜$Ÿ,™,Ô 'ØÐ(¨T¯\ª\Ø— ‘ ˜mÔ,Ø�|Š|Ø— ‘ ˜dŸl™lÔ+Ü�w‰w�|‰|˜DÐ* 6Ò*ˆØ ×)Ñ)¨$Ô/؈ rcót—tjjtd««}|j |«S)zT:return: data directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``ÚCSIDL_COMMON_APPDATA©rrrrr©rrs rÚ site_data_dirzWindows.site_data_dir8s/€ô�w‰w×ѤÐ/EÓ FÓGˆØ×!Ñ! $Ó'Ð'rcó—|jS)zC:return: config directory tied to the user, same as `user_data_dir`©r©rs rÚuser_config_dirzWindows.user_config_dir>ó€ð×!Ñ!Ð!rcó—|jS)zF:return: config directory shared by the users, same as `site_data_dir`)r)r,s rÚsite_config_dirzWindows.site_config_dirCr.rcóx—tjjtd««}|j |d¬«S)zÇ :return: cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g. ``%USERPROFILE%\AppData\Local\$appauthor\$appname\Cache\$version`` r ÚCacherr'r(s rÚuser_cache_dirzWindows.user_cache_dirHs4€ô �w‰w×ѤÐ/DÓ EÓFˆØ×!Ñ! $°gÐ!Ó>Ð>rcóx—tjjtd««}|j |d¬«S)zd:return: cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``r&r2rr'r(s rÚsite_cache_dirzWindows.site_cache_dirQs4€ô�w‰w×ѤÐ/EÓ FÓGˆØ×!Ñ! $°gÐ!Ó>Ð>rcó—|jS)zB:return: state directory tied to the user, same as `user_data_dir`r+r,s rÚuser_state_dirzWindows.user_state_dirWr.rcó˜—|j}|jr1tjj |d«}|j |«|S)zg:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in itÚLogs)rrrrr!r"r(s rÚ user_log_dirzWindows.user_log_dir\s=€ð×!Ñ!ˆØ �<Š<Ü—7‘7—<‘<  fÓ-ˆDØ × -Ñ -¨dÔ 3؈ rcóR—tjjtd««S)zN:return: documents directory tied to the user e.g. ``%USERPROFILE%\Documents``ÚCSIDL_PERSONAL©rrrrr,s rÚuser_documents_dirzWindows.user_documents_dires€ô�w‰w×ѤÐ/?Ó @ÓAÐArcóR—tjjtd««S)zN:return: downloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``ÚCSIDL_DOWNLOADSr=r,s rÚuser_downloads_dirzWindows.user_downloads_dirjs€ô�w‰w×ѤÐ/@Ó AÓBÐBrcóR—tjjtd««S)zL:return: pictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``ÚCSIDL_MYPICTURESr=r,s rÚuser_pictures_dirzWindows.user_pictures_diros€ô�w‰w×ѤÐ/AÓ BÓCÐCrcóR—tjjtd««S)zH:return: videos directory tied to the user e.g. ``%USERPROFILE%\Videos``Ú CSIDL_MYVIDEOr=r,s rÚuser_videos_dirzWindows.user_videos_dirtó€ô�w‰w×Ѥ¨Ó ?Ó@Ð@rcóR—tjjtd««S)zF:return: music directory tied to the user e.g. ``%USERPROFILE%\Music``Ú CSIDL_MYMUSICr=r,s rÚuser_music_dirzWindows.user_music_diryrHrcóR—tjjtd««S)zK:return: desktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``ÚCSIDL_DESKTOPDIRECTORYr=r,s rÚuser_desktop_dirzWindows.user_desktop_dir~s€ô�w‰w×ѤÐ/GÓ HÓIÐIrcó°—tjjtjjt d«d««}|j |«S)z… :return: runtime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname`` r ÚTemp)rrrr!rrr(s rÚuser_runtime_dirzWindows.user_runtime_dirƒs?€ô �w‰w×Ѥ§¡§ ¡ ¬^ÐrArDrGrKrNrQrS©rrr r s_„ñ ðò(óð(ðGKõ ðò(óð(ð ò"óð"ðò"óð"ðò?óð?ðò?óð?ð ò"óð"ðòóððòBóðBðòCóðCðòDóðDðòAóðAðòAóðAðòJóðJðò(óð(ðò%óñ%rr cóÔ—t|«}|�|Sddddœj|«}|€d|›�}t|«‚tjj|«}|€d|›�}t|«‚|S)z&Get folder from environment variables.ÚAPPDATAÚALLUSERSPROFILEÚ LOCALAPPDATA)r r&r úUnknown CSIDL name: zUnset environment variable: )Ú(get_win_folder_if_csidl_name_not_env_varÚgetÚ ValueErrorrÚenviron)Ú csidl_nameÚresultÚ env_var_nameÚmsgs rÚget_win_folder_from_env_varsrj’s‡€ä 5°jÓ A€FØ ÐØˆ ð#Ø 1Ø-ñ÷ �cˆ*ƒoð ð ÐØ$ Z LÐ1ˆÜ˜‹oÐÜ �Z‰Z�^‰^˜LÓ )€FØ €~Ø,¨\¨NÐ;ˆÜ˜‹oÐØ €MrcóB—|dk(rNtjjtjjtjd«d«S|dk(rNtjjtjjtjd«d«S|dk(rNtjjtjjtjd«d«S|dk(rNtjjtjjtjd«d «S|d k(rNtjjtjjtjd«d «Sy ) zKGet folder for a CSIDL name that does not exist as an environment variable.r<Ú USERPROFILEÚ Documentsr@Ú DownloadsrCÚPicturesrFÚVideosrJÚMusicN)rrr!rre)rfs rrbrb§s€àÐ%Ò%Ü�w‰w�|‰|œBŸG™G×,Ñ,¬R¯Z©Z¸ Ñ-FÓGÈÓUÐUàÐ&Ò&Ü�w‰w�|‰|œBŸG™G×,Ñ,¬R¯Z©Z¸ Ñ-FÓGÈÓUÐUàÐ'Ò'Ü�w‰w�|‰|œBŸG™G×,Ñ,¬R¯Z©Z¸ Ñ-FÓGÈÓTÐTà�_Ò$Ü�w‰w�|‰|œBŸG™G×,Ñ,¬R¯Z©Z¸ Ñ-FÓGÈÓRÐRà�_Ò$Ü�w‰w�|‰|œBŸG™G×,Ñ,¬R¯Z©Z¸ Ñ-FÓGÈÓQÐQØ rc ó —ddddddddd œj|«}|€d |›�}t|«‚tjd k7rt‚d d l}|j |jd«}|j||«\}}t|«S)z» Get folder from the registry. This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer for all CSIDL_* names. ÚAppDatazCommon AppDataz Local AppDataÚPersonalz&{374DE290-123F-4565-9164-39C4925E467B}z My PictureszMy VideozMy Music)r r&r r<r@rCrFrJNraÚwin32rz@Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders) rcrdÚsysÚplatformÚNotImplementedErrorÚwinregÚOpenKeyÚHKEY_CURRENT_USERÚ QueryValueExrU)rfÚshell_folder_nameriryÚkeyÚ directoryÚ_s rÚget_win_folder_from_registryr�ºsœ€ð#Ø 0Ø.Ø$ØCØ)Ø#Ø#ñ ÷ �cˆ*ƒoððÐ Ø$ Z LÐ1ˆÜ˜‹oÐÜ ‡|�|�wÒÜ!Ð!Ûà �.‰.˜×1Ñ1Ð3vÓ w€CØ×&Ñ& sÐ,=Ó>�L€IˆqÜ ˆy‹>Ðrc óú—ddddddddd d œ j|«}|€d |›�}t|«‚tjd «}t td«}|j j d |d d|«td„|D««r>tjd «}|jj|j|d «r|}|dk(r*tjj|jd«S|jS)zGet folder with ctypes.éé#ééé'éé é(é) r r&r r<rCrFrJr@rMNraiÚwindllrc3ó8K—|]}t|«dkD–—Œy­w)éÿN)Úord)Ú.0Úcs rÚ z,get_win_folder_via_ctypes..ñsèø€Ð %¡˜AŒ3ˆq‹6�C�<¡ùs‚r@rn)rcrdÚctypesÚcreate_unicode_bufferÚgetattrÚshell32ÚSHGetFolderPathWÚanyÚkernel32ÚGetShortPathNameWÚvaluerrr!)rfÚ csidl_constriÚbufrŒÚbuf2s rÚget_win_folder_via_ctypesrŸ×só€ðØ "Ø!ØØØØØØ"$ñ ÷ �cˆ*ƒoððÐØ$ Z LÐ1ˆÜ˜‹oÐä × &Ñ & tÓ ,€CÜ ”V˜XÓ &€FØ ‡N�N×#Ñ# D¨+°t¸QÀÔDô Ñ %¡Ó %Ô%Ü×+Ñ+¨DÓ1ˆØ �?‰?× ,Ñ ,¨S¯Y©Y¸¸dÔ C؈CàÐ&Ò&Ü�w‰w�|‰|˜CŸI™I {Ó3Ð3à �9‰9Ðrcón—ttd«rtS ddl}tS#t $r t cYSwxYw)NrŒr)Úhasattrr“rŸryr�Ú ImportErrorrj)rys rÚ_pick_get_win_folderr£üs9€ÜŒv�xÔ Ü(Ð(ð,Ûô,Ð+øô ò,Ü+Ò+ð,ús ˜"¢4³4)Úmaxsize)rfrUrTrU)rfrUrTrV)rTzCallable[[str], str])rZÚ __future__rr“rrvÚ functoolsrÚtypingrÚapirÚcollections.abcrr rjrbr�rŸr£rÚ__all__r\rrÚr«soðÙå"ã Û Û ÝÝ å áÝ(ô~%ˆoô~%óBó*ó&ó:"óJ,ð)‘ 4Ô(Ñ)=Ó)?Ó@€ðð �r