Current File : //usr/lib/python3/dist-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc
�

/�ge%����dZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZe	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
��Zedd��Zedd��Z
edd
��Zedd��Zedd��Zedd��Zedd��Zedd��Zy)�Windowsa
    `MSDN on where to store app data files
    <http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120>`_.
    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��|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   �B/usr/lib/python3/dist-packages/pip/_vendor/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�tj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_dir7s/���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_dirBr.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_dirGs4���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_dirPs4���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_dirVr.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_dirds���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_diris���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_dirns���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_dirs����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_dirxrHrc��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��������^�<Q�-R�TZ� [�\���!�!�$�'�'r)�return�str)rrPr�
str | NonerOrP)�__name__�
__module__�__qualname__�__doc__�propertyrrr)r-r0r3r5r7r:r>rArDrGrKrN�rrr
r
s5��
��(��(�GK�
��(��(�
�"��"��"��"��?��?��?��?�
�"��"������B��B��C��C��D��D��A��A��A��A��(��(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_varsre�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!rr`)ras rr]r]�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}zMy PictureszMy VideozMy Music)rr&r
r<r@rCrFrJNr\�win32rz@Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders)
r^r_�sys�platform�NotImplementedError�winreg�OpenKey�HKEY_CURRENT_USER�QueryValueExrP)ra�shell_folder_namerdrt�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	�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@Nr\i�windllrc3�8K�|]}t|�dkD���y�w)�N)�ord)�.0�cs  r�	<genexpr>z,get_win_folder_via_ctypes.<locals>.<genexpr>�s����
%�A�3�q�6�C�<�
%�s�r@ri)r^r_�ctypes�create_unicode_buffer�getattr�shell32�SHGetFolderPathW�any�kernel32�GetShortPathNameW�valuerrr!)ra�csidl_constrd�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�rtr|�ImportErrorre)rts r�_pick_get_win_folderr��s9���v�x� �(�(�,��,�+���,�+�+�,�s�"�4�4)�maxsize)rarPrOrP)rarPrOrQ)rOzCallable[[str], str])rU�
__future__rr�rrq�	functoolsr�typingr�apir�collections.abcrr
rer]r|r�r�r�__all__rWrr�<module>r�so���"�
�	�
�� � ��(�t(�o�t(�n�*�&�:!�H,�)��4�(�)=�)?�@����r