
    O3j                    D    d Z ddlmZ ddlZddlmZ  G d de      ZdgZy)z2XDG environment variable mixin for Unix and macOS.    )annotationsN   )PlatformDirsABCc                      e Zd ZdZed fd       Zed fd       Zedd       Zed fd       Zed fd       Z	edd       Z
ed fd       Zed fd	       Zed fd
       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zed fd       Zedd       Z xZS )XDGMixinzhMixin that checks XDG environment variables, falling back to platform-specific defaults via ``super()``.c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )z`:returns: data directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform defaultXDG_DATA_HOME )osenvirongetstrip_append_app_name_and_versionsuperuser_data_dirselfpath	__class__s     >/DATA/.local/lib/python3.12/site-packages/platformdirs/_xdg.pyr   zXDGMixin.user_data_dir   sD     ::>>/26<<>>4>44T::w$$    c                   t         j                  j                  dd      j                         x}rM|j	                  t         j
                        D cg c]$  }|j                         s| j                  |      & c}S t        |    S c c}w )NXDG_DATA_DIRSr
   )	r   r   r   r   splitpathsepr   r   _site_data_dirsr   xdg_dirspr   s      r   r   zXDGMixin._site_data_dirs   su    zz~~or:@@BB8BBJ..QSQ[Q[B\jB\Q`a`g`g`iD55a8B\jjw&& k   B	)B	c                z    | j                   }| j                  rt        j                  j	                  |      S |d   S )za:returns: data directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform defaultr   )r   	multipathr   r   joinr   dirss     r   site_data_dirzXDGMixin.site_data_dir   s1     ##(,rzzt$CDGCr   c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )zd:returns: config directory tied to the user, from ``$XDG_CONFIG_HOME`` if set, else platform defaultXDG_CONFIG_HOMEr
   )r   r   r   r   r   r   user_config_dirr   s     r   r)   zXDGMixin.user_config_dir    sE     ::>>"3R8>>@@4@44T::w&&r   c                   t         j                  j                  dd      j                         x}rM|j	                  t         j
                        D cg c]$  }|j                         s| j                  |      & c}S t        |    S c c}w )NXDG_CONFIG_DIRSr
   )	r   r   r   r   r   r   r   r   _site_config_dirsr   s      r   r,   zXDGMixin._site_config_dirs'   sv    zz~~&7<BBDD8DBJ..QSQ[Q[B\jB\Q`a`g`g`iD55a8B\jjw(( kr    c                z    | j                   }| j                  rt        j                  j	                  |      S |d   S )ze:returns: config directories shared by users, from ``$XDG_CONFIG_DIRS`` if set, else platform defaultr   )r,   r"   r   r   r#   r$   s     r   site_config_dirzXDGMixin.site_config_dir-   s1     %%(,rzzt$CDGCr   c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )zb:returns: cache directory tied to the user, from ``$XDG_CACHE_HOME`` if set, else platform defaultXDG_CACHE_HOMEr
   )r   r   r   r   r   r   user_cache_dirr   s     r   r1   zXDGMixin.user_cache_dir3   E     ::>>"2B7==??4?44T::w%%r   c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )zb:returns: state directory tied to the user, from ``$XDG_STATE_HOME`` if set, else platform defaultXDG_STATE_HOMEr
   )r   r   r   r   r   r   user_state_dirr   s     r   r5   zXDGMixin.user_state_dir:   r2   r   c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )ze:returns: runtime directory tied to the user, from ``$XDG_RUNTIME_DIR`` if set, else platform defaultXDG_RUNTIME_DIRr
   )r   r   r   r   r   r   user_runtime_dirr   s     r   r8   zXDGMixin.user_runtime_dirA   E     ::>>"3R8>>@@4@44T::w''r   c                    t         j                  j                  dd      j                         x}r| j	                  |      S t
        |   S )zd:returns: runtime directory shared by users, from ``$XDG_RUNTIME_DIR`` if set, else platform defaultr7   r
   )r   r   r   r   r   r   site_runtime_dirr   s     r   r;   zXDGMixin.site_runtime_dirH   r9   r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zi:returns: documents directory tied to the user, from ``$XDG_DOCUMENTS_DIR`` if set, else platform defaultXDG_DOCUMENTS_DIRr
   )r   r   r   r   r   
expanduserr   user_documents_dirr   s     r   r?   zXDGMixin.user_documents_dirO   I     ::>>"5r:@@BB4B77%%d++w))r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zh:returns: downloads directory tied to the user, from ``$XDG_DOWNLOAD_DIR`` if set, else platform defaultXDG_DOWNLOAD_DIRr
   )r   r   r   r   r   r>   r   user_downloads_dirr   s     r   rC   zXDGMixin.user_downloads_dirV   sI     ::>>"4b9??AA4A77%%d++w))r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zg:returns: pictures directory tied to the user, from ``$XDG_PICTURES_DIR`` if set, else platform defaultXDG_PICTURES_DIRr
   )r   r   r   r   r   r>   r   user_pictures_dirr   s     r   rF   zXDGMixin.user_pictures_dir]   I     ::>>"4b9??AA4A77%%d++w((r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zc:returns: videos directory tied to the user, from ``$XDG_VIDEOS_DIR`` if set, else platform defaultXDG_VIDEOS_DIRr
   )r   r   r   r   r   r>   r   user_videos_dirr   s     r   rJ   zXDGMixin.user_videos_dird   sI     ::>>"2B7==??4?77%%d++w&&r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )za:returns: music directory tied to the user, from ``$XDG_MUSIC_DIR`` if set, else platform defaultXDG_MUSIC_DIRr
   )r   r   r   r   r   r>   r   user_music_dirr   s     r   rM   zXDGMixin.user_music_dirk   sH     ::>>/26<<>>4>77%%d++w%%r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )ze:returns: desktop directory tied to the user, from ``$XDG_DESKTOP_DIR`` if set, else platform defaultXDG_DESKTOP_DIRr
   )r   r   r   r   r   r>   r   user_desktop_dirr   s     r   rP   zXDGMixin.user_desktop_dirr   sI     ::>>"3R8>>@@4@77%%d++w''r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zg:returns: projects directory tied to the user, from ``$XDG_PROJECTS_DIR`` if set, else platform defaultXDG_PROJECTS_DIRr
   )r   r   r   r   r   r>   r   user_projects_dirr   s     r   rS   zXDGMixin.user_projects_diry   rG   r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zn:returns: public share directory tied to the user, from ``$XDG_PUBLICSHARE_DIR`` if set, else platform defaultXDG_PUBLICSHARE_DIRr
   )r   r   r   r   r   r>   r   user_publicshare_dirr   s     r   rV   zXDGMixin.user_publicshare_dir   sI     ::>>"7<BBDD4D77%%d++w++r   c                    t         j                  j                  dd      j                         x}rt         j                  j                  |      S t        |   S )zi:returns: templates directory tied to the user, from ``$XDG_TEMPLATES_DIR`` if set, else platform defaultXDG_TEMPLATES_DIRr
   )r   r   r   r   r   r>   r   user_templates_dirr   s     r   rY   zXDGMixin.user_templates_dir   r@   r   c                    t         j                  j                  dd      j                         x}r"t         j                  j                  |       dS t        |   S )zg:returns: fonts directory tied to the user, from ``$XDG_DATA_HOME/fonts`` if set, else platform defaultr	   r
   z/fonts)r   r   r   r   r   r>   r   user_fonts_dirr   s     r   r[   zXDGMixin.user_fonts_dir   sP     ::>>/26<<>>4>gg((./v66w%%r   c                    t         j                  j                  dd      j                         x}r=t         j                  j                  t         j                  j                  |      d      S t        |    S )zh:returns: applications directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform defaultr	   r
   applications)	r   r   r   r   r   r#   r>   r   user_applications_dirr   s     r   r^   zXDGMixin.user_applications_dir   sW     ::>>/26<<>>4>77<< 2 24 8.IIw,,r   c                :   t         j                  j                  dd      j                         x}r\|j	                  t         j
                        D cg c]3  }|j                         st         j                  j                  |d      5 c}S t        | $  S c c}w )Nr   r
   r]   )
r   r   r   r   r   r   r   r#   r   _site_applications_dirsr   s      r   r`   z XDGMixin._site_applications_dirs   sv    zz~~or:@@BB8B=E^^BJJ=We=W[\[b[b[dBGGLLN3=Weew.. fs   B)"Bc                z    | j                   }| j                  rt        j                  j	                  |      S |d   S )zi:returns: applications directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform defaultr   )r`   r"   r   r   r#   r$   s     r   site_applications_dirzXDGMixin.site_applications_dir   s1     ++(,rzzt$CDGCr   )returnstr)rc   z	list[str])__name__
__module____qualname____doc__propertyr   r   r&   r)   r,   r.   r1   r5   r8   r;   r?   rC   rF   rJ   rM   rP   rS   rV   rY   r[   r^   r`   rb   __classcell__)r   s   @r   r   r   
   s   r% % ' '
 D D
 ' ' ) )
 D D
 & & & & ( ( ( ( * * * * ) ) ' ' & & ( ( ) ) , , * * & & - - / /
 D Dr   r   )rh   
__future__r   r   apir   r   __all__ r   r   <module>ro      s.    8 " 	  \D \D@ r   