+
    iz(                        R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^RI	H
t
 ]'       d   ^ RIHt  ! R R]
4      tR	 R
 ltR R ltR R ltR R ltR R lt]! RR7      ! ]! 4       4      tR.tR# )zWindows.)annotationsN)	lru_cache)TYPE_CHECKING)PlatformDirsABC)Callablec                     ] tR t^tRt]R R l4       tRR/R R llt]R R	 l4       t]R
 R l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R  R! l4       t]R" R# l4       t]R$ R% l4       tR&tR# )'Windowsa  
`MSDN on where to store app data files <https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid>`_.

Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `appauthor
<platformdirs.api.PlatformDirsABC.appauthor>`, `version <platformdirs.api.PlatformDirsABC.version>`, `roaming
<platformdirs.api.PlatformDirsABC.roaming>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
<platformdirs.api.PlatformDirsABC.ensure_exists>`.

c                   V ^8  d   QhRR/#    returnstr )formats   "g/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py__annotate__Windows.__annotate__   s     ( (s (    c                    V P                   '       d   RMRp\        P                  P                  \	        V4      4      pV P                  V4      # )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constr   s   &  r   user_data_dirWindows.user_data_dir   s>     $(<<<5Jwwu 56!!$''r   opinion_valueNc               $    V ^8  d   QhRRRRRR/# )r   r   r   r!   
str | Noner   r   )r   s   "r   r   r   &   s!      #  s r   c               	   . pV P                   '       d   V P                  R Jd2   V P                  ;'       g    V P                   pVP                  V4       VP                  V P                   4       Ve$   V P                  '       d   VP                  V4       V P                  '       d   VP                  V P                  4       \
        P                  P                  ! V.VO5!  pV P                  V4       V# )F)	appname	appauthorappendopinionversionr   r   join_optionally_create_directory)r   r   r!   paramsauthors   &&$  r   r   Windows._append_parts&   s    <<<~~U*774<<f%MM$,,'(T\\\m,|||dll+ww||D*6*))$/r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   6   s     ( (s (r   c                t    \         P                  P                  \        R4      4      pV P	                  V4      # )zT:return: data directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname``CSIDL_COMMON_APPDATAr   r   r   r   r   r   r   s   & r   site_data_dirWindows.site_data_dir5   s/     ww/E FG!!$''r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   <        " " "r   c                    V P                   # )zC:return: config directory tied to the user, same as `user_data_dir`r   r   s   &r   user_config_dirWindows.user_config_dir;        !!!r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   A   r7   r   c                    V P                   # )zF:return: config directory shared by the users, same as `site_data_dir`)r4   r:   s   &r   site_config_dirWindows.site_config_dir@   r=   r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   F   s     ? ? ?r   c                x    \         P                  P                  \        R4      4      pV P	                  VRR7      # )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   Cacher!   r2   r3   s   & r   user_cache_dirWindows.user_cache_dirE   s4     ww/D EF!!$g!>>r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   O   s     ? ? ?r   c                x    \         P                  P                  \        R4      4      pV P	                  VRR7      # )zd:return: cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``r1   rD   rE   r2   r3   s   & r   site_cache_dirWindows.site_cache_dirN   s4     ww/E FG!!$g!>>r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   U   s     " " "r   c                    V P                   # )zB:return: state directory tied to the user, same as `user_data_dir`r9   r:   s   &r   user_state_dirWindows.user_state_dirT   r=   r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   Z   s      c r   c                    V P                   pV P                  '       d2   \        P                  P	                  VR4      pV P                  V4       V# )zg:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in itLogs)r   r(   r   r   r*   r+   r3   s   & r   user_log_dirWindows.user_log_dirY   s?     !!<<<77<<f-D--d3r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   c   s     B BC Br   c                R    \         P                  P                  \        R4      4      # )zN:return: documents directory tied to the user e.g. ``%USERPROFILE%\Documents``CSIDL_PERSONALr   r   r   r   r:   s   &r   user_documents_dirWindows.user_documents_dirb   s     ww/? @AAr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   h   s     C CC Cr   c                R    \         P                  P                  \        R4      4      # )zN:return: downloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``CSIDL_DOWNLOADSrX   r:   s   &r   user_downloads_dirWindows.user_downloads_dirg   s     ww/@ ABBr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   m   s     D D3 Dr   c                R    \         P                  P                  \        R4      4      # )zL:return: pictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``CSIDL_MYPICTURESrX   r:   s   &r   user_pictures_dirWindows.user_pictures_dirl   s     ww/A BCCr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   r   s     A A Ar   c                R    \         P                  P                  \        R4      4      # )zH:return: videos directory tied to the user e.g. ``%USERPROFILE%\Videos``CSIDL_MYVIDEOrX   r:   s   &r   user_videos_dirWindows.user_videos_dirq        ww ?@@r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   w   s     A A Ar   c                R    \         P                  P                  \        R4      4      # )zF:return: music directory tied to the user e.g. ``%USERPROFILE%\Music``CSIDL_MYMUSICrX   r:   s   &r   user_music_dirWindows.user_music_dirv   rj   r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   |   s     J J# Jr   c                R    \         P                  P                  \        R4      4      # )zK:return: desktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``CSIDL_DESKTOPDIRECTORYrX   r:   s   &r   user_desktop_dirWindows.user_desktop_dir{   s     ww/G HIIr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r      s     ( (# (r   c                    \         P                  P                  \         P                  P                  \	        R4      R4      4      pV P                  V4      # )zm
:return: runtime directory tied to the user, e.g.
 ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname``
r   Temp)r   r   r   r*   r   r   r3   s   & r   user_runtime_dirWindows.user_runtime_dir   s?     ww^<Q-RTZ [\!!$''r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r      s     % %# %r   c                    V P                   # )zF:return: runtime directory shared by users, same as `user_runtime_dir`)rx   r:   s   &r   site_runtime_dirWindows.site_runtime_dir   s     $$$r   r   )__name__
__module____qualname____firstlineno____doc__propertyr   r   r4   r;   r@   rF   rJ   rN   rS   rY   r^   rc   rh   rn   rs   rx   r|   __static_attributes__r   r   r   r   r      s_    ( (d  ( (
 " " " " ? ? ? ?
 " "   B B C C D D A A A A J J ( ( % %r   r   c                    V ^8  d   QhRRRR/# r   
csidl_namer   r   r   )r   s   "r   r   r      s      S S r   c                    \        V 4      pVe   V# RRRRRR/P                  V 4      pVf   RV  2p\        V4      h\        P                  P                  V4      pVf   RV 2p\        V4      hV# )	z&Get folder from environment variables.r   APPDATAr1   ALLUSERSPROFILEr   LOCALAPPDATAUnknown CSIDL name: zUnset environment variable: )(get_win_folder_if_csidl_name_not_env_varget
ValueErrorr   environ)r   resultenv_var_namemsgs   &   r   get_win_folder_from_env_varsr      s    5jAF 	 1~ 
c*o	 
 $ZL1oZZ^^L)F~,\N;oMr   c                    V ^8  d   QhRRRR/# )r   r   r   r   r#   r   )r   s   "r   r   r      s        r   c                   V R8X  dS   \         P                  P                  \         P                  P                  \         P                  R,          4      R4      # V R8X  dS   \         P                  P                  \         P                  P                  \         P                  R,          4      R4      # V R8X  dS   \         P                  P                  \         P                  P                  \         P                  R,          4      R4      # V R8X  dS   \         P                  P                  \         P                  P                  \         P                  R,          4      R	4      # V R
8X  dS   \         P                  P                  \         P                  P                  \         P                  R,          4      R4      # R# )zMGet a folder for a CSIDL name that does not exist as an environment variable.rW   USERPROFILE	Documentsr]   	Downloadsrb   Picturesrg   Videosrm   MusicN)r   r   r*   r   r   )r   s   &r   r   r      s   %%ww||BGG,,RZZ-FGUU&&ww||BGG,,RZZ-FGUU''ww||BGG,,RZZ-FGTT_$ww||BGG,,RZZ-FGRR_$ww||BGG,,RZZ-FGQQr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     ! !S !S !r   c                L   R0pRRRRRRRRR	R
RRRRRR/P                  V 4      pVf   RV  2p\        V4      h\        P                  R8w  d   \        h^ RIpW9   d   VP                  MVP                  pVP                  VR4      pVP                  Wb4      w  rx\        V4      # )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.

r1   r   AppDatazCommon AppDatar   zLocal AppDatarW   Personalr]   z&{374DE290-123F-4565-9164-39C4925E467B}rb   zMy Picturesrg   zMy Videorm   zMy MusicNr   win32z@Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders)r   r   sysplatformNotImplementedErrorwinregHKEY_LOCAL_MACHINEHKEY_CURRENT_USEROpenKeyQueryValueExr   )	r   machine_namesshell_folder_namer   r   hkeykey	directory_s	   &        r   get_win_folder_from_registryr      s     	M 	 0*CM	 
c*o   $ZL1o
||w!! )3(C6$$IaIaD
..b
cC&&s>LIy>r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     $ $# $# $r   c                ^   ^ RI pR^R^#R^R^R^'R^R^R	^(R
^/	P                  V 4      pVf   RV  2p\        V4      hVP                  R4      p\	        VR4      pVP
                  P                  RVR^ V4       \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       dA   VP                  R4      pVP                  P                  VP                  VR4      '       d   TpV R	8X  d+   \        P                  P                  VP                  R4      # VP                  # )zGet folder with ctypes.Nr   r1   r   rW   rb   rg   rm   r]   rr   r   i   windllc              3  >   "   T F  p\        V4      ^8  x  K  	  R# 5i)   N)ord).0cs   & r   	<genexpr>,get_win_folder_via_ctypes.<locals>.<genexpr>   s     
%A3q6C<s   TFr   )ctypesr   r   create_unicode_buffergetattrshell32SHGetFolderPathWanykernel32GetShortPathNameWvaluer   r   r*   )r   r   csidl_constr   bufr   buf2s   &      r   get_win_folder_via_ctypesr      s      	r!B2 "
 
c*o  $ZL1o

&
&t
,CVX&F
NN##D+tQD s
%
%sss
%
%%%++D1??,,SYYdCCC&&ww||CII{3399r   c                   V ^8  d   QhRR/# )r   r   zCallable[[str], str]r   )r   s   "r   r   r     s     , ,2 ,r   c                      ^ RI p \        V R4      '       d   \        #   ^ RIp\
        #   \         d     Li ; i  \         d
    \        u # i ; i)    Nr   )r   hasattrr   ImportErrorr   r   r   )r   r   s     r   _pick_get_win_folderr     s^    - 68$$,, %, ,+    ,++,s   * ; 88AA)maxsize)r   
__future__r   r   r   	functoolsr   typingr   apir   collections.abcr   r   r   r   r   r   r   r   __all__r   r   r   <module>r      sk     " 	 
     (|%o |%~*&!H$N,  4()=)?@ r   