o
    Zh                     @  s   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
r8ddlZejdkr2ddl	mZ nddlmZ G d	d
 d
eZdS )z	Base API.    )annotationsN)ABCabstractmethod)Path)TYPE_CHECKING)      )Literalc                   @  s>  e Zd ZdZ							d[d\ddZd]ddZd^ddZeed_ddZ	eed_ddZ
eed_ddZeed_d d!Zeed_d"d#Zeed_d$d%Zeed_d&d'Zeed_d(d)Zeed_d*d+Zeed_d,d-Zeed_d.d/Zeed_d0d1Zeed_d2d3Zeed_d4d5Zeed_d6d7Zeed_d8d9Zed`d;d<Zed`d=d>Zed`d?d@Zed`dAdBZed`dCdDZed`dEdFZed`dGdHZed`dIdJZ ed`dKdLZ!ed`dMdNZ"ed`dOdPZ#ed`dQdRZ$ed`dSdTZ%ed`dUdVZ&ed`dWdXZ'ed`dYdZZ(dS )a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                 C  s6   || _ || _	 || _	 || _	 || _	 || _|| _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    r   G/var/www/html/lang_env/lib/python3.10/site-packages/platformdirs/api.py__init__   s   zPlatformDirsABC.__init__basestrc                 G  sZ   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!   r   r   r   _append_app_name_and_versionG   s   
z,PlatformDirsABC._append_app_name_and_versionr!   c                 C  s    | j rt|jddd d S d S )NT)parentsexist_ok)r   r   mkdir)r   r!   r   r   r   r#   Q   s   z,PlatformDirsABC._optionally_create_directoryc                 C     dS )z(:return: data directory tied to the userNr   r   r   r   r   user_data_dirU       zPlatformDirsABC.user_data_dirc                 C  r)   )z':return: data directory shared by usersNr   r*   r   r   r   site_data_dirZ   r,   zPlatformDirsABC.site_data_dirc                 C  r)   )z*:return: config directory tied to the userNr   r*   r   r   r   user_config_dir_   r,   zPlatformDirsABC.user_config_dirc                 C  r)   )z-:return: config directory shared by the usersNr   r*   r   r   r   site_config_dird   r,   zPlatformDirsABC.site_config_dirc                 C  r)   )z):return: cache directory tied to the userNr   r*   r   r   r   user_cache_diri   r,   zPlatformDirsABC.user_cache_dirc                 C  r)   )z(:return: cache directory shared by usersNr   r*   r   r   r   site_cache_dirn   r,   zPlatformDirsABC.site_cache_dirc                 C  r)   )z):return: state directory tied to the userNr   r*   r   r   r   user_state_dirs   r,   zPlatformDirsABC.user_state_dirc                 C  r)   )z':return: log directory tied to the userNr   r*   r   r   r   user_log_dirx   r,   zPlatformDirsABC.user_log_dirc                 C  r)   )z-:return: documents directory tied to the userNr   r*   r   r   r   user_documents_dir}   r,   z"PlatformDirsABC.user_documents_dirc                 C  r)   )z-:return: downloads directory tied to the userNr   r*   r   r   r   user_downloads_dir   r,   z"PlatformDirsABC.user_downloads_dirc                 C  r)   )z,:return: pictures directory tied to the userNr   r*   r   r   r   user_pictures_dir   r,   z!PlatformDirsABC.user_pictures_dirc                 C  r)   )z*:return: videos directory tied to the userNr   r*   r   r   r   user_videos_dir   r,   zPlatformDirsABC.user_videos_dirc                 C  r)   )z):return: music directory tied to the userNr   r*   r   r   r   user_music_dir   r,   zPlatformDirsABC.user_music_dirc                 C  r)   )z+:return: desktop directory tied to the userNr   r*   r   r   r   user_desktop_dir   r,   z PlatformDirsABC.user_desktop_dirc                 C  r)   )z+:return: runtime directory tied to the userNr   r*   r   r   r   user_runtime_dir   r,   z PlatformDirsABC.user_runtime_dirc                 C  r)   )z*:return: runtime directory shared by usersNr   r*   r   r   r   site_runtime_dir   r,   z PlatformDirsABC.site_runtime_dirr   c                 C  
   t | jS )z#:return: data path tied to the user)r   r+   r*   r   r   r   user_data_path      
zPlatformDirsABC.user_data_pathc                 C  r<   )z":return: data path shared by users)r   r-   r*   r   r   r   site_data_path   r>   zPlatformDirsABC.site_data_pathc                 C  r<   )z%:return: config path tied to the user)r   r.   r*   r   r   r   user_config_path   r>   z PlatformDirsABC.user_config_pathc                 C  r<   )z(:return: config path shared by the users)r   r/   r*   r   r   r   site_config_path   r>   z PlatformDirsABC.site_config_pathc                 C  r<   )z$:return: cache path tied to the user)r   r0   r*   r   r   r   user_cache_path   r>   zPlatformDirsABC.user_cache_pathc                 C  r<   )z#:return: cache path shared by users)r   r1   r*   r   r   r   site_cache_path   r>   zPlatformDirsABC.site_cache_pathc                 C  r<   )z$:return: state path tied to the user)r   r2   r*   r   r   r   user_state_path   r>   zPlatformDirsABC.user_state_pathc                 C  r<   )z":return: log path tied to the user)r   r3   r*   r   r   r   user_log_path   r>   zPlatformDirsABC.user_log_pathc                 C  r<   )z(:return: documents path tied to the user)r   r4   r*   r   r   r   user_documents_path   r>   z#PlatformDirsABC.user_documents_pathc                 C  r<   )z(:return: downloads path tied to the user)r   r5   r*   r   r   r   user_downloads_path   r>   z#PlatformDirsABC.user_downloads_pathc                 C  r<   )z':return: pictures path tied to the user)r   r6   r*   r   r   r   user_pictures_path   r>   z"PlatformDirsABC.user_pictures_pathc                 C  r<   )z%:return: videos path tied to the user)r   r7   r*   r   r   r   user_videos_path   r>   z PlatformDirsABC.user_videos_pathc                 C  r<   )z$:return: music path tied to the user)r   r8   r*   r   r   r   user_music_path   r>   zPlatformDirsABC.user_music_pathc                 C  r<   )z&:return: desktop path tied to the user)r   r9   r*   r   r   r   user_desktop_path   r>   z!PlatformDirsABC.user_desktop_pathc                 C  r<   )z&:return: runtime path tied to the user)r   r:   r*   r   r   r   user_runtime_path   r>   z!PlatformDirsABC.user_runtime_pathc                 C  r<   )z%:return: runtime path shared by users)r   r;   r*   r   r   r   site_runtime_path   r>   z!PlatformDirsABC.site_runtime_path)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   r+   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   r   r
      s    
2

r
   )rQ   
__future__r   r    abcr   r   pathlibr   typingr   sysversion_infor	   typing_extensionsr
   r   r   r   r   <module>   s    
