
    d                        d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 e
rddlZej        dk    rddl	mZ nddlmZ  G d	 d
e          ZdS )z	Base API.    )annotationsN)ABCabstractmethod)Path)TYPE_CHECKING)      )Literalc                  :   e Zd ZdZ	 	 	 	 	 	 	 d8d9dZd:dZd;dZeed<d                        Z	eed<d                        Z
eed<d                        Zeed<d                        Zeed<d                        Zeed<d                        Zeed<d                        Zeed<d                        Zeed<d                        Zeed<d                         Zeed<d!                        Zeed<d"                        Zeed<d#                        Zeed<d$                        Zeed<d%                        Zeed<d&                        Zed=d(            Zed=d)            Zed=d*            Zed=d+            Zed=d,            Zed=d-            Zed=d.            Zed=d/            Z ed=d0            Z!ed=d1            Z"ed=d2            Z#ed=d3            Z$ed=d4            Z%ed=d5            Z&ed=d6            Z'ed=d7            Z(dS )>PlatformDirsABCz-Abstract base class for platform directories.NFTappname
str | None	appauthorstr | None | Literal[False]versionroamingbool	multipathopinionensure_existsreturnNonec                p    || _         || _        	 || _        	 || _        	 || _        	 || _        || _        dS )aX  
        Create a new platform directory.

        :param appname: See `appname`.
        :param appauthor: See `appauthor`.
        :param version: See `version`.
        :param roaming: See `roaming`.
        :param multipath: See `multipath`.
        :param opinion: See `opinion`.
        :param ensure_exists: See `ensure_exists`.
        N)r   r   r   r   r   r   r   )selfr   r   r   r   r   r   r   s           0lib/python3.11/site-packages/platformdirs/api.py__init__zPlatformDirsABC.__init__   s\    * "	 	 	
 #	 *	 	    basestrc                   t          |dd                    }| j        r;|                    | j                   | j        r|                    | j                   t	          j        j        |d         g|R  }|                     |           |S )N   r   )listr   appendr   ospathjoin_optionally_create_directory)r   r   paramsr%   s       r   _append_app_name_and_versionz,PlatformDirsABC._append_app_name_and_versionG   s    d122h< 	,MM$,'''| ,dl+++w|DG-f---))$///r   r%   c                `    | j         r&t          |                              dd           d S d S )NT)parentsexist_ok)r   r   mkdir)r   r%   s     r   r'   z,PlatformDirsABC._optionally_create_directoryQ   s<     	:JJTD99999	: 	:r   c                    dS )z(:return: data directory tied to the userN r   s    r   user_data_dirzPlatformDirsABC.user_data_dirU         r   c                    dS )z':return: data directory shared by usersNr/   r0   s    r   site_data_dirzPlatformDirsABC.site_data_dirZ   r2   r   c                    dS )z*:return: config directory tied to the userNr/   r0   s    r   user_config_dirzPlatformDirsABC.user_config_dir_   r2   r   c                    dS )z-:return: config directory shared by the usersNr/   r0   s    r   site_config_dirzPlatformDirsABC.site_config_dird   r2   r   c                    dS )z):return: cache directory tied to the userNr/   r0   s    r   user_cache_dirzPlatformDirsABC.user_cache_diri   r2   r   c                    dS )z(:return: cache directory shared by usersNr/   r0   s    r   site_cache_dirzPlatformDirsABC.site_cache_dirn   r2   r   c                    dS )z):return: state directory tied to the userNr/   r0   s    r   user_state_dirzPlatformDirsABC.user_state_dirs   r2   r   c                    dS )z':return: log directory tied to the userNr/   r0   s    r   user_log_dirzPlatformDirsABC.user_log_dirx   r2   r   c                    dS )z-:return: documents directory tied to the userNr/   r0   s    r   user_documents_dirz"PlatformDirsABC.user_documents_dir}   r2   r   c                    dS )z-:return: downloads directory tied to the userNr/   r0   s    r   user_downloads_dirz"PlatformDirsABC.user_downloads_dir   r2   r   c                    dS )z,:return: pictures directory tied to the userNr/   r0   s    r   user_pictures_dirz!PlatformDirsABC.user_pictures_dir   r2   r   c                    dS )z*:return: videos directory tied to the userNr/   r0   s    r   user_videos_dirzPlatformDirsABC.user_videos_dir   r2   r   c                    dS )z):return: music directory tied to the userNr/   r0   s    r   user_music_dirzPlatformDirsABC.user_music_dir   r2   r   c                    dS )z+:return: desktop directory tied to the userNr/   r0   s    r   user_desktop_dirz PlatformDirsABC.user_desktop_dir   r2   r   c                    dS )z+:return: runtime directory tied to the userNr/   r0   s    r   user_runtime_dirz PlatformDirsABC.user_runtime_dir   r2   r   c                    dS )z*:return: runtime directory shared by usersNr/   r0   s    r   site_runtime_dirz PlatformDirsABC.site_runtime_dir   r2   r   r   c                *    t          | j                  S )z#:return: data path tied to the user)r   r1   r0   s    r   user_data_pathzPlatformDirsABC.user_data_path        D&'''r   c                *    t          | j                  S )z":return: data path shared by users)r   r4   r0   s    r   site_data_pathzPlatformDirsABC.site_data_path   rS   r   c                *    t          | j                  S )z%:return: config path tied to the user)r   r6   r0   s    r   user_config_pathz PlatformDirsABC.user_config_path        D()))r   c                *    t          | j                  S )z(:return: config path shared by the users)r   r8   r0   s    r   site_config_pathz PlatformDirsABC.site_config_path   rX   r   c                *    t          | j                  S )z$:return: cache path tied to the user)r   r:   r0   s    r   user_cache_pathzPlatformDirsABC.user_cache_path        D'(((r   c                *    t          | j                  S )z#:return: cache path shared by users)r   r<   r0   s    r   site_cache_pathzPlatformDirsABC.site_cache_path   r]   r   c                *    t          | j                  S )z$:return: state path tied to the user)r   r>   r0   s    r   user_state_pathzPlatformDirsABC.user_state_path   r]   r   c                *    t          | j                  S )z":return: log path tied to the user)r   r@   r0   s    r   user_log_pathzPlatformDirsABC.user_log_path   s     D%&&&r   c                *    t          | j                  S )z(:return: documents path tied to the user)r   rB   r0   s    r   user_documents_pathz#PlatformDirsABC.user_documents_path        D+,,,r   c                *    t          | j                  S )z(:return: downloads path tied to the user)r   rD   r0   s    r   user_downloads_pathz#PlatformDirsABC.user_downloads_path   rf   r   c                *    t          | j                  S )z':return: pictures path tied to the user)r   rF   r0   s    r   user_pictures_pathz"PlatformDirsABC.user_pictures_path   s     D*+++r   c                *    t          | j                  S )z%:return: videos path tied to the user)r   rH   r0   s    r   user_videos_pathz PlatformDirsABC.user_videos_path   rX   r   c                *    t          | j                  S )z$:return: music path tied to the user)r   rJ   r0   s    r   user_music_pathzPlatformDirsABC.user_music_path   r]   r   c                *    t          | j                  S )z&:return: desktop path tied to the user)r   rL   r0   s    r   user_desktop_pathz!PlatformDirsABC.user_desktop_path        D)***r   c                *    t          | j                  S )z&:return: runtime path tied to the user)r   rN   r0   s    r   user_runtime_pathz!PlatformDirsABC.user_runtime_path   rq   r   c                *    t          | j                  S )z%:return: runtime path shared by users)r   rP   r0   s    r   site_runtime_pathz!PlatformDirsABC.site_runtime_path   rq   r   )NNNFFTF)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r%   r   r   r   )r   r   )r   r   ))__name__
__module____qualname____doc__r   r)   r'   propertyr   r1   r4   r6   r8   r:   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   rR   rU   rW   rZ   r\   r_   ra   rc   re   rh   rj   rl   rn   rp   rs   ru   r/   r   r   r   r      s       77 #15"#0 0 0 0 0d   : : : : 7 7 7 ^ X7 6 6 6 ^ X6 9 9 9 ^ X9 < < < ^ X< 8 8 8 ^ X8 7 7 7 ^ X7 8 8 8 ^ X8 6 6 6 ^ X6 < < < ^ X< < < < ^ X< ; ; ; ^ X; 9 9 9 ^ X9 8 8 8 ^ X8 : : : ^ X: : : : ^ X: 9 9 9 ^ X9 ( ( ( X( ( ( ( X( * * * X* * * * X* ) ) ) X) ) ) ) X) ) ) ) X) ' ' ' X' - - - X- - - - X- , , , X, * * * X* ) ) ) X) + + + X+ + + + X+ + + + X+ + +r   r   )ry   
__future__r   r$   abcr   r   pathlibr   typingr   sysversion_infor
   typing_extensionsr   r/   r   r   <module>r      s     " " " " " " 				 # # # # # # # #                   .JJJ
6!!"""""""------a+ a+ a+ a+ a+c a+ a+ a+ a+ a+r   