+
    %i8                       a  0 t $ R t^ RIHt ^ RIt^ RIt^ RIHtHt ^RI	H
t
 ]'       d   ^ RIHt RtR]R&    ! R	 R
]
4      tR R ltR R ltR R ltRRRRRRRRRRRRRRRR R!R"R#R$R%R&/tR']R(&   R) R* ltR+ R, lt]! 4       tR- R. ltR
.tR# )/zWindows.)annotationsN)TYPE_CHECKINGFinal)PlatformDirsABC)Callablei @  z
Final[int]_KF_FLAG_DONT_VERIFYc                     ] 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& R' l4       t]R( R) l4       t]R* R+ l4       t]R, R- l4       t]R. R/ l4       t]R0 R1 l4       tR2tR# )3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   "R/var/www/html/photoedit/myenv/lib/python3.14/site-packages/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:returns: 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   3   s     ( (s (r   c                t    \         P                  P                  \        R4      4      pV P	                  V4      # )zU:returns: 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_dir2   s/     ww/E FG!!$''r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   9        " " "r   c                    V P                   # )zD:returns: config directory tied to the user, same as `user_data_dir`r    r   s   &r   user_config_dirWindows.user_config_dir8        !!!r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   >   r8   r   c                    V P                   # )zC:returns: config directory shared by users, same as `site_data_dir`r5   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   C        ? ? ?r   c                x    \         P                  P                  \        R4      4      pV P	                  VRR7      # )z:returns: 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"   r3   r4   s   & r   user_cache_dirWindows.user_cache_dirB   s4     ww/D EF!!$g!>>r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   I   rE   r   c                x    \         P                  P                  \        R4      4      pV P	                  VRR7      # )ze:returns: cache directory shared by users, e.g. ``C:\ProgramData\$appauthor\$appname\Cache\$version``r2   rG   rH   r3   r4   s   & r   site_cache_dirWindows.site_cache_dirH   s4     ww/E FG!!$g!>>r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   O        " " "r   c                    V P                   # )zC:returns: state directory tied to the user, same as `user_data_dir`r:   r;   s   &r   user_state_dirWindows.user_state_dirN   r>   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   T   rP   r   c                    V P                   # )zB:returns: state directory shared by users, same as `site_data_dir`rA   r;   s   &r   site_state_dirWindows.site_state_dirS   r>   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   Y         c r   c                    V P                   pV P                  '       d2   \        P                  P	                  VR4      pV P                  V4       V# )zh:returns: 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,   r4   s   & r   user_log_dirWindows.user_log_dirX   ?     !!<<<77<<f-D--d3r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   b   rY   r   c                    V P                   pV P                  '       d2   \        P                  P	                  VR4      pV P                  V4       V# )zg:returns: log directory shared by users, same as `site_data_dir` if not opinionated else ``Logs`` in itr[   )r5   r)   r   r   r+   r,   r4   s   & r   site_log_dirWindows.site_log_dira   r^   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   k   s     B BC Br   c                R    \         P                  P                  \        R4      4      # )zO:returns: 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_dirj        ww/? @AAr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   p   s     C CC Cr   c                R    \         P                  P                  \        R4      4      # )zO:returns: downloads directory tied to the user e.g. ``%USERPROFILE%\Downloads``CSIDL_DOWNLOADSrf   r;   s   &r   user_downloads_dirWindows.user_downloads_diro   s     ww/@ ABBr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   u   s     D D3 Dr   c                R    \         P                  P                  \        R4      4      # )zM:returns: pictures directory tied to the user e.g. ``%USERPROFILE%\Pictures``CSIDL_MYPICTURESrf   r;   s   &r   user_pictures_dirWindows.user_pictures_dirt   s     ww/A BCCr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   z   s     A A Ar   c                R    \         P                  P                  \        R4      4      # )zI:returns: videos directory tied to the user e.g. ``%USERPROFILE%\Videos``CSIDL_MYVIDEOrf   r;   s   &r   user_videos_dirWindows.user_videos_diry        ww ?@@r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     A A Ar   c                R    \         P                  P                  \        R4      4      # )zG:returns: music directory tied to the user e.g. ``%USERPROFILE%\Music``CSIDL_MYMUSICrf   r;   s   &r   user_music_dirWindows.user_music_dir~   ry   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      # )zL:returns: desktop directory tied to the user, e.g. ``%USERPROFILE%\Desktop``CSIDL_DESKTOPDIRECTORYrf   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     a ac ar   c                    \         P                  P                  \         P                  P                  \	        R4      R4      4      # )zJ:returns: bin directory tied to the user, e.g. ``%LOCALAPPDATA%\Programs``r   Programsr   r   r   r+   r   r;   s   &r   user_bin_dirWindows.user_bin_dir   s/     ww^<Q-RT^ _``r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     ] ]c ]r   c                    \         P                  P                  \         P                  P                  \	        R4      R4      4      # )zC:returns: bin directory shared by users, e.g. ``C:\ProgramDatain``r2   binr   r;   s   &r   site_bin_dirWindows.site_bin_dir   s/     ww^<R-SUZ [\\r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     B Bs Br   c                R    \         P                  P                  \        R4      4      # )zO:returns: applications directory tied to the user, e.g. ``Start Menu\Programs``CSIDL_PROGRAMSrf   r;   s   &r   user_applications_dirWindows.user_applications_dir   ri   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     I Is Ir   c                R    \         P                  P                  \        R4      4      # )zo:returns: applications directory shared by users, e.g. ``C:\ProgramData\Microsoft\Windows\Start Menu\Programs``CSIDL_COMMON_PROGRAMSrf   r;   s   &r   site_applications_dirWindows.site_applications_dir   s     ww/F GHHr   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      # )zk:returns: runtime directory tied to the user, e.g. ``%USERPROFILE%\AppData\Local\Temp\$appauthor\$appname``r   Temp)r   r   r   r+   r   r   r4   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                   # )zG:returns: runtime directory shared by users, same as `user_runtime_dir`)r   r;   s   &r   site_runtime_dirWindows.site_runtime_dir   s     $$$r   r   )__name__
__module____qualname____firstlineno____doc__propertyr    r   r5   r<   rB   rI   rM   rR   rV   r\   ra   rg   rm   rr   rw   r}   r   r   r   r   r   r   r   __static_attributes__r   r   r   r	   r	      s    ( (d  ( (
 " " " " ? ?
 ? ?
 " " " "     B B C C D D A A A A J J a a ] ] B B I I ( (
 % %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   APPDATAr2   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      # V R8X  dV   \         P                  P                  \         P                  P                  \         P                  R,          4      RRRR4      # V R8X  d}   \         P                  P                  \         P                  P                  \         P                  P                  R\         P                  P                  RR4      4      4      RRRR4      # R# )zMGet a folder for a CSIDL name that does not exist as an environment variable.re   USERPROFILE	Documentsrl   	Downloadsrq   Picturesrv   Videosr|   Musicr   r   	Microsoftr	   z
Start Menur   r   PROGRAMDATAr   zC:\ProgramDataN)r   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%%ww||GGRZZ	23
 	
 ,,ww||GGRZZ^^M2::>>J[]n;opq
 	
 r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     # #S #S #r   c                V   RR0pRRRR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      # )zGet 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.

r2   r   r   AppDatazCommon AppDatar   zLocal AppDatare   Personalrl   &{374DE290-123F-4565-9164-39C4925E467B}rq   zMy Picturesrv   zMy Videor|   zMy Musicr   r   zCommon ProgramsNr   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*!2 
c*o   $ZL1o
||w!! )3(C6$$IaIaD
..b
cC&&s>LIy>r   r   z&{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}r2   z&{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}r   z&{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}re   z&{FDD39AD0-238F-46AF-ADB4-6C85480369C7}rq   z&{33E28130-4E1E-4676-835A-98395C3BC3BB}rv   z&{18989B1D-99B5-455B-841C-AB7C74E4DDFC}r|   z&{4BD8D571-6D19-48D3-BE97-422220080E43}rl   r   r   z&{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}r   z&{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}r   z&{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}zdict[str, str]_KNOWN_FOLDER_GUIDSc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s     6 6# 6# 6r   c                  a \         P                  R8w  d   \        h^ RIHpHpHpHpHpH	pH
o  ! V3R lRV4      pV! R4      pWP                  n        SP                  V! V4      .VP                  n        RVP                  n        SP                   .VP                  n        V! R4      p	WP"                  n        V! V4      SP$                  SP&                  V! SP(                  4      .V	P"                  n        V! R4      p
SP$                  V
P*                  n        SP(                  SP(                  SP$                  .V
P*                  n        \,        P/                  V 4      pVf   R	V  2p\1        V4      hV! 4       pVP                  W! V4      4       SP)                  4       pV	P#                  V! V4      \2        RV! V4      4       VP4                  pVP                  V4       Vf   R
V  2p\1        V4      h\6        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d.   V! R4      pV
P+                  VVR4      '       d   VP4                  pV# )zGet folder via :func:`SHGetKnownFolderPath`.

See https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath.

r   )HRESULTPOINTER	StructureWinDLLbyrefcreate_unicode_bufferwintypesc                     < ] tR tRtR Z P                  3R Z P
                  3R Z P
                  3R Z P                  ^,          3.tRtR# )(get_win_folder_via_ctypes.<locals>._GUIDi!  Data1Data2Data3Data4r   N)	r   r   r   r   DWORDWORDBYTE_fields_r   )r   s   r   _GUIDr   !  s?    hnn%hmm$hmm$hmma'(	
r   r   ole32Nshell32kernel32r   z'SHGetKnownFolderPath returned NULL for c              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>H  s     
(A3q6C<s   TFi   )r   r   r   ctypesr   r   r   r   r   r   r   CLSIDFromStringrestype	LPCOLESTRargtypesCoTaskMemFreeLPVOIDSHGetKnownFolderPathr   HANDLELPWSTRGetShortPathNameWr   r   r   r   valueany)r   r   r   r   r   r   r   r   r   r   r   folder_guidr   guidpath_ptrr   bufr   s   &                @r   get_win_folder_via_ctypesr    s    ||w!!bbb
	 
 7OE$+!&.&8&8'%.%IE""&E$,OO#4E YG+2  (-4U^X^^X__^efnfufu^v,wG  )j!H)1H&+3??HOOX^^*\H'%))*5K$ZL1o7D	+uT{3 H  t.BD%PX/Z^^F	!~7
|Do
s
(
(sss
(
(((#D)%%fc488YYFMr   c                   V ^8  d   QhRR/# )r   r   zCallable[[str], str]r   )r   s   "r   r   r   P  s     , ,2 ,r   c                 ~     ^ RI p \        #   \         d     Mi ; i ^ RIp\        #   \         d
    \
        u # i ; i)zjSelect the best method to resolve Windows folder paths: ctypes, then registry, then environment variables.N)r   r  ImportErrorr   r   r   )r   r   s     r   _pick_get_win_folderr  P  sM    ) )(  , ,+  ,++,s    ( <<c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   c  s     	+ 	+s 	+s 	+r   c                    RV P                  R4       2p\        P                  P                  VR4      P	                  4       ;p'       d   V# \        V 4      # )zGet a Windows folder path, checking for ``WIN_PD_OVERRIDE_*`` environment variable overrides first.

For example, ``CSIDL_LOCAL_APPDATA`` can be overridden by setting ``WIN_PD_OVERRIDE_LOCAL_APPDATA``.

WIN_PD_OVERRIDE_CSIDL_ )removeprefixr   r   r   strip_resolve_win_folder)r   env_varoverrides   &  r   r   r   c  sO     !!8!8!B CDG::>>'2.4466x6z**r   )__conditional_annotations__r   
__future__r   r   r   typingr   r   apir   collections.abcr   r   __annotations__r	   r   r   r   r   r  r  r  r   __all__)r  s   @r   <module>r     s     " 	 
 '  ( $. j -S%o S%l*"J#N =DC>@==?F>E' ^ 6r,  +, 	+ r   