o
    ðT·jÙ  ã                   @  sh   d Z ddlmZ ddlZddlZddlmZ ddlmZ G dd„ deƒZ	ddd„Z
ddd„ZddgZdS )z2XDG environment variable mixin for Unix and macOS.é    )ÚannotationsN)ÚFinalé   )ÚPlatformDirsABCc                      s°  e Zd ZdZed7‡ fdd„ƒZed8‡ fdd„ƒZed7d	d
„ƒZed7‡ fdd„ƒZed8‡ fdd„ƒZ	ed7dd„ƒZ
ed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd„ƒZed7‡ fdd „ƒZed7‡ fd!d"„ƒZed7‡ fd#d$„ƒZed7‡ fd%d&„ƒZed7‡ fd'd(„ƒZed7‡ fd)d*„ƒZd9d-d.„Zed7‡ fd/d0„ƒZed7‡ fd1d2„ƒZed8‡ fd3d4„ƒZed7d5d6„ƒZ‡  ZS ):ÚXDGMixinzhMixin that checks XDG environment variables, falling back to platform-specific defaults via ``super()``.ÚreturnÚstrc                   ó   t dƒ }r|  |¡S tƒ jS )zWData directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform default.ÚXDG_DATA_HOME)Ú_xdg_dirÚ_append_app_name_and_versionÚsuperÚuser_data_dir©ÚselfÚpath©Ú	__class__© úT/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/platformdirs/_xdg.pyr      ó   
zXDGMixin.user_data_dirú	list[str]c                   ó&   t dƒ }r‡ fdd„|D ƒS tƒ jS )NÚXDG_DATA_DIRSc                   ó   g | ]}ˆ   |¡‘qS r   ©Ú_join_app_name_and_version©Ú.0Úp©r   r   r   Ú
<listcomp>   ó    z,XDGMixin._site_data_dirs.<locals>.<listcomp>)Ú_xdg_dir_listr   Ú_site_data_dirs©r   Úxdg_dirsr   r    r   r$      ó   zXDGMixin._site_data_dirsc                 C  ó   |   | j¡S )zXData directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform default.)Ú_select_site_dirsr$   r    r   r   r   Úsite_data_dir   ó   zXDGMixin.site_data_dirc                   r	   )z[Config directory tied to the user, from ``$XDG_CONFIG_HOME`` if set, else platform default.ÚXDG_CONFIG_HOME)r   r   r   Úuser_config_dirr   r   r   r   r-   !   r   zXDGMixin.user_config_dirc                   r   )NÚXDG_CONFIG_DIRSc                   r   r   r   r   r    r   r   r!   +   r"   z.XDGMixin._site_config_dirs.<locals>.<listcomp>)r#   r   Ú_site_config_dirsr%   r   r    r   r/   (   r'   zXDGMixin._site_config_dirsc                 C  r(   )z\Config directories shared by users, from ``$XDG_CONFIG_DIRS`` if set, else platform default.)r)   r/   r    r   r   r   Úsite_config_dir.   r+   zXDGMixin.site_config_dirc                   r	   )zYCache directory tied to the user, from ``$XDG_CACHE_HOME`` if set, else platform default.ÚXDG_CACHE_HOME)r   r   r   Úuser_cache_dirr   r   r   r   r2   3   r   zXDGMixin.user_cache_dirc                   r	   )zYState directory tied to the user, from ``$XDG_STATE_HOME`` if set, else platform default.ÚXDG_STATE_HOME)r   r   r   Úuser_state_dirr   r   r   r   r4   :   r   zXDGMixin.user_state_dirc                   r	   )z\Runtime directory tied to the user, from ``$XDG_RUNTIME_DIR`` if set, else platform default.ÚXDG_RUNTIME_DIR)r   r   r   Úuser_runtime_dirr   r   r   r   r6   A   r   zXDGMixin.user_runtime_dirc                   r	   )z[Runtime directory shared by users, from ``$XDG_RUNTIME_DIR`` if set, else platform default.r5   )r   r   r   Úsite_runtime_dirr   r   r   r   r7   H   r   zXDGMixin.site_runtime_dirc                   ó   |   d¡ptƒ jS )z`Documents directory tied to the user, from ``$XDG_DOCUMENTS_DIR`` if set, else platform default.ÚXDG_DOCUMENTS_DIR)Ú_xdg_media_dirr   Úuser_documents_dirr    r   r   r   r;   O   ó   zXDGMixin.user_documents_dirc                   r8   )z_Downloads directory tied to the user, from ``$XDG_DOWNLOAD_DIR`` if set, else platform default.ÚXDG_DOWNLOAD_DIR)r:   r   Úuser_downloads_dirr    r   r   r   r>   T   r<   zXDGMixin.user_downloads_dirc                   r8   )z^Pictures directory tied to the user, from ``$XDG_PICTURES_DIR`` if set, else platform default.ÚXDG_PICTURES_DIR)r:   r   Úuser_pictures_dirr    r   r   r   r@   Y   r<   zXDGMixin.user_pictures_dirc                   r8   )zZVideos directory tied to the user, from ``$XDG_VIDEOS_DIR`` if set, else platform default.ÚXDG_VIDEOS_DIR)r:   r   Úuser_videos_dirr    r   r   r   rB   ^   r<   zXDGMixin.user_videos_dirc                   r8   )zXMusic directory tied to the user, from ``$XDG_MUSIC_DIR`` if set, else platform default.ÚXDG_MUSIC_DIR)r:   r   Úuser_music_dirr    r   r   r   rD   c   r<   zXDGMixin.user_music_dirc                   r8   )z\Desktop directory tied to the user, from ``$XDG_DESKTOP_DIR`` if set, else platform default.ÚXDG_DESKTOP_DIR)r:   r   Úuser_desktop_dirr    r   r   r   rF   h   r<   zXDGMixin.user_desktop_dirc                   r8   )z^Projects directory tied to the user, from ``$XDG_PROJECTS_DIR`` if set, else platform default.ÚXDG_PROJECTS_DIR)r:   r   Úuser_projects_dirr    r   r   r   rH   m   r<   zXDGMixin.user_projects_dirc                   r8   )zePublic share directory tied to the user, from ``$XDG_PUBLICSHARE_DIR`` if set, else platform default.ÚXDG_PUBLICSHARE_DIR)r:   r   Úuser_publicshare_dirr    r   r   r   rJ   r   r<   zXDGMixin.user_publicshare_dirc                   r8   )z`Templates directory tied to the user, from ``$XDG_TEMPLATES_DIR`` if set, else platform default.ÚXDG_TEMPLATES_DIR)r:   r   Úuser_templates_dirr    r   r   r   rL   w   r<   zXDGMixin.user_templates_dirÚenv_varú
str | Nonec                 C  s   t |ƒ }r|  |¡ |S )N)r   Ú"_optionally_create_media_directory)r   rM   r   r   r   r   r:   |   s   
zXDGMixin._xdg_media_dirc                   s&   t dƒ }rtj |¡› d�S tƒ jS )z^Fonts directory tied to the user, from ``$XDG_DATA_HOME/fonts`` if set, else platform default.r
   z/fonts)r   Úosr   Ú
expanduserr   Úuser_fonts_dirr   r   r   r   rR   �   s   zXDGMixin.user_fonts_dirc                   s*   t dƒ }rtj tj |¡d¡S tƒ jS )z_Applications directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform default.r
   Úapplications)r   rP   r   ÚjoinrQ   r   Úuser_applications_dirr   r   r   r   rU   ˆ   s   zXDGMixin.user_applications_dirc                   s"   t dƒ }rdd„ |D ƒS tƒ jS )Nr   c                 S  s   g | ]	}t j |d ¡‘qS )rS   )rP   r   rT   r   r   r   r   r!   ’   s    z4XDGMixin._site_applications_dirs.<locals>.<listcomp>)r#   r   Ú_site_applications_dirsr%   r   r   r   rV   �   s   z XDGMixin._site_applications_dirsc                 C  s    | j }| jrtj |¡S |d S )z`Applications directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform default.r   )rV   Ú	multipathrP   ÚpathseprT   )r   Údirsr   r   r   Úsite_applications_dir•   s   zXDGMixin.site_applications_dir)r   r   )r   r   ©rM   r   r   rN   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r$   r*   r-   r/   r0   r2   r4   r6   r7   r;   r>   r@   rB   rD   rF   rH   rJ   rL   r:   rR   rU   rV   rZ   Ú__classcell__r   r   r   r   r      sb    
r   rM   r   r   rN   c                 C  s$   t j | d¡ ¡ }t |¡r|S d S )NÚ )rP   ÚenvironÚgetÚstripÚ	posixpathÚisabs)rM   r   r   r   r   r   œ   s   r   r   c                   s$   ‡ fdd„t j | d¡ t j¡D ƒS )Nc                   s"   g | ]}t  | ¡  ‰ ¡rˆ ‘qS r   )rf   rg   re   )r   r   ©Ústrippedr   r   r!   ¢   s
    ÿÿz!_xdg_dir_list.<locals>.<listcomp>rb   )rP   rc   rd   ÚsplitrX   )rM   r   rh   r   r#   ¡   s   
ÿr#   r[   )rM   r   r   r   )r_   Ú
__future__r   rP   rf   Útypingr   Úapir   r   r   r#   Ú__all__r   r   r   r   Ú<module>   s     

þ