Ë
    ��hÚ(  ã                  óÈ   — 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 ddl	m
Z
mZ ddlmZ e
rdd	lmZ ej                   d
k(  rdd„ZnddlmZ  G d„ de«      Zdd„Zdd„ZdgZy)zUnix.é    )ÚannotationsN)ÚConfigParser)ÚPath)ÚTYPE_CHECKINGÚNoReturné   )ÚPlatformDirsABC)ÚIteratorÚwin32c                 ó   — d} t        | «      ‚)Nzshould only be used on Unix)ÚRuntimeError)Úmsgs    ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.pyÚgetuidr      s   € Ø+ˆÜ˜3ÓÐó    )r   c                  óš  — e Zd Z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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d„«       Zedd„«       Zedd„«       Zedd„«       Zdd„Zdd„Zy)ÚUnixa†  
    On Unix/Linux, we follow the `XDG Basedir Spec <https://specifications.freedesktop.org/basedir-spec/basedir-spec-
    latest.html>`_.

    The spec allows overriding directories with environment variables. The examples shown are the default values,
    alongside the name of the environment variable that overrides them. Makes use of the `appname
    <platformdirs.api.PlatformDirsABC.appname>`, `version <platformdirs.api.PlatformDirsABC.version>`, `multipath
    <platformdirs.api.PlatformDirsABC.multipath>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
    <platformdirs.api.PlatformDirsABC.ensure_exists>`.

    c                óÂ   — t         j                  j                  dd«      }|j                  «       st         j                  j                  d«      }| j                  |«      S )z–
        :return: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or
         ``$XDG_DATA_HOME/$appname/$version``
        ÚXDG_DATA_HOMEÚ z~/.local/share©ÚosÚenvironÚgetÚstripÚpathÚ
expanduserÚ_append_app_name_and_version©Úselfr   s     r   Úuser_data_dirzUnix.user_data_dir'   sG   € ô �z‰z�~‰~˜o¨rÓ2ˆØ�z‰zŒ|Ü—7‘7×%Ñ%Ð&6Ó7ˆDØ×0Ñ0°Ó6Ð6r   c                ó  — t         j                  j                  dd«      }|j                  «       sdt         j                  › d�}|j                  t         j                  «      D �cg c]  }| j                  |«      ‘Œ c}S c c}w )NÚXDG_DATA_DIRSr   z/usr/local/sharez
/usr/share)r   r   r   r   ÚpathsepÚsplitr   ©r    r   Úps      r   Ú_site_data_dirszUnix._site_data_dirs2   s]   € ä�z‰z�~‰~˜o¨rÓ2ˆØ�z‰zŒ|Ø%¤b§j¡j \°Ð<ˆDØ>B¿j¹jÌÏÉÓ>TÖU¸�×1Ñ1°!Õ4ÒUÐUùÒUs   Á&Bc                óz   — | j                   }| j                  s|d   S t        j                  j	                  |«      S )aZ  
        :return: data directories shared by users (if `multipath <platformdirs.api.PlatformDirsABC.multipath>` is
         enabled and ``XDG_DATA_DIRS`` is set and a multi path the response is also a multi path separated by the
         OS path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version``
        r   )r(   Ú	multipathr   r$   Újoin©r    Údirss     r   Úsite_data_dirzUnix.site_data_dir9   s2   € ð ×#Ñ#ˆØ�~Š~Ø˜‘7ˆNÜ�z‰z�‰˜tÓ$Ð$r   c                óÂ   — t         j                  j                  dd«      }|j                  «       st         j                  j                  d«      }| j                  |«      S )z•
        :return: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or
         ``$XDG_CONFIG_HOME/$appname/$version``
        ÚXDG_CONFIG_HOMEr   z	~/.configr   r   s     r   Úuser_config_dirzUnix.user_config_dirF   sG   € ô �z‰z�~‰~Ð/°Ó4ˆØ�z‰zŒ|Ü—7‘7×%Ñ% kÓ2ˆDØ×0Ñ0°Ó6Ð6r   c                óè   — t         j                  j                  dd«      }|j                  «       sd}|j	                  t         j
                  «      D �cg c]  }| j                  |«      ‘Œ c}S c c}w )NÚXDG_CONFIG_DIRSr   z/etc/xdg)r   r   r   r   r%   r$   r   r&   s      r   Ú_site_config_dirszUnix._site_config_dirsQ   sQ   € ä�z‰z�~‰~Ð/°Ó4ˆØ�z‰zŒ|ØˆDØ>B¿j¹jÌÏÉÓ>TÖU¸�×1Ñ1°!Õ4ÒUÐUùÒUs   ÁA/c                óz   — | j                   }| j                  s|d   S t        j                  j	                  |«      S )a2  
        :return: config directories shared by users (if `multipath <platformdirs.api.PlatformDirsABC.multipath>`
         is enabled and ``XDG_CONFIG_DIRS`` is set and a multi path the response is also a multi path separated by
         the OS path separator), e.g. ``/etc/xdg/$appname/$version``
        r   )r4   r*   r   r$   r+   r,   s     r   Úsite_config_dirzUnix.site_config_dirX   s2   € ð ×%Ñ%ˆØ�~Š~Ø˜‘7ˆNÜ�z‰z�‰˜tÓ$Ð$r   c                óÂ   — t         j                  j                  dd«      }|j                  «       st         j                  j                  d«      }| j                  |«      S )z”
        :return: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or
         ``~/$XDG_CACHE_HOME/$appname/$version``
        ÚXDG_CACHE_HOMEr   z~/.cacher   r   s     r   Úuser_cache_dirzUnix.user_cache_dire   sG   € ô �z‰z�~‰~Ð.°Ó3ˆØ�z‰zŒ|Ü—7‘7×%Ñ% jÓ1ˆDØ×0Ñ0°Ó6Ð6r   c                ó$   — | j                  d«      S )zO:return: cache directory shared by users, e.g. ``/var/cache/$appname/$version``z
/var/cache)r   ©r    s    r   Úsite_cache_dirzUnix.site_cache_dirp   s   € ð ×0Ñ0°Ó>Ð>r   c                óÂ   — t         j                  j                  dd«      }|j                  «       st         j                  j                  d«      }| j                  |«      S )z˜
        :return: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or
         ``$XDG_STATE_HOME/$appname/$version``
        ÚXDG_STATE_HOMEr   z~/.local/stater   r   s     r   Úuser_state_dirzUnix.user_state_diru   sH   € ô �z‰z�~‰~Ð.°Ó3ˆØ�z‰zŒ|Ü—7‘7×%Ñ%Ð&6Ó7ˆDØ×0Ñ0°Ó6Ð6r   c                ó˜   — | j                   }| j                  r1t        j                  j	                  |d«      }| j                  |«       |S )zg:return: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in itÚlog)r?   Úopinionr   r   r+   Ú_optionally_create_directoryr   s     r   Úuser_log_dirzUnix.user_log_dir€   s=   € ð ×"Ñ"ˆØ�<Š<Ü—7‘7—<‘<  eÓ,ˆDØ×-Ñ-¨dÔ3Øˆr   c                ó   — t        dd«      S )zC:return: documents directory tied to the user, e.g. ``~/Documents``ÚXDG_DOCUMENTS_DIRz~/Documents©Ú_get_user_media_dirr;   s    r   Úuser_documents_dirzUnix.user_documents_dir‰   s   € ô #Ð#6¸ÓFÐFr   c                ó   — t        dd«      S )zC:return: downloads directory tied to the user, e.g. ``~/Downloads``ÚXDG_DOWNLOAD_DIRz~/DownloadsrG   r;   s    r   Úuser_downloads_dirzUnix.user_downloads_dirŽ   s   € ô #Ð#5°}ÓEÐEr   c                ó   — t        dd«      S )zA:return: pictures directory tied to the user, e.g. ``~/Pictures``ÚXDG_PICTURES_DIRz
~/PicturesrG   r;   s    r   Úuser_pictures_dirzUnix.user_pictures_dir“   s   € ô #Ð#5°|ÓDÐDr   c                ó   — t        dd«      S )z=:return: videos directory tied to the user, e.g. ``~/Videos``ÚXDG_VIDEOS_DIRz~/VideosrG   r;   s    r   Úuser_videos_dirzUnix.user_videos_dir˜   s   € ô #Ð#3°ZÓ@Ð@r   c                ó   — t        dd«      S )z;:return: music directory tied to the user, e.g. ``~/Music``ÚXDG_MUSIC_DIRz~/MusicrG   r;   s    r   Úuser_music_dirzUnix.user_music_dir�   s   € ô # ?°IÓ>Ð>r   c                ó   — t        dd«      S )z?:return: desktop directory tied to the user, e.g. ``~/Desktop``ÚXDG_DESKTOP_DIRz	~/DesktoprG   r;   s    r   Úuser_desktop_dirzUnix.user_desktop_dir¢   s   € ô #Ð#4°kÓBÐBr   c                óD  — t         j                  j                  dd«      }|j                  «       s`t        j
                  j                  d«      r4dt        «       › �}t        |«      j                  «       sdt        «       › �}ndt        «       › �}| j                  |«      S )az  
        :return: runtime directory tied to the user, e.g. ``/run/user/$(id -u)/$appname/$version`` or
         ``$XDG_RUNTIME_DIR/$appname/$version``.

         For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/user/$(id -u)/$appname/$version`` if
         exists, otherwise ``/tmp/runtime-$(id -u)/$appname/$version``, if``$XDG_RUNTIME_DIR``
         is not set.
        ÚXDG_RUNTIME_DIRr   ©ÚfreebsdÚopenbsdÚnetbsdz/var/run/user/z/tmp/runtime-z
/run/user/)r   r   r   r   ÚsysÚplatformÚ
startswithr   r   Úexistsr   r   s     r   Úuser_runtime_dirzUnix.user_runtime_dir§   s€   € ô �z‰z�~‰~Ð/°Ó4ˆØ�z‰zŒ|Ü�|‰|×&Ñ&Ð'GÔHØ'¬« zÐ2�Ü˜D“z×(Ñ(Ô*Ø*¬6«8¨*Ð5‘Dà#¤F£H :Ð.�Ø×0Ñ0°Ó6Ð6r   c                óÌ   — t         j                  j                  dd«      }|j                  «       s$t        j
                  j                  d«      rd}nd}| j                  |«      S )am  
        :return: runtime directory shared by users, e.g. ``/run/$appname/$version`` or         ``$XDG_RUNTIME_DIR/$appname/$version``.

        Note that this behaves almost exactly like `user_runtime_dir` if ``$XDG_RUNTIME_DIR`` is set, but will
        fall back to paths associated to the root user instead of a regular logged-in user if it's not set.

        If you wish to ensure that a logged-in root user path is returned e.g. ``/run/user/0``, use `user_runtime_dir`
        instead.

        For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/$appname/$version`` if ``$XDG_RUNTIME_DIR`` is not set.
        rZ   r   r[   z/var/runz/run)r   r   r   r   r_   r`   ra   r   r   s     r   Úsite_runtime_dirzUnix.site_runtime_dir»   sP   € ô �z‰z�~‰~Ð/°Ó4ˆØ�z‰zŒ|Ü�|‰|×&Ñ&Ð'GÔHØ!‘à�Ø×0Ñ0°Ó6Ð6r   c                ó8   — | j                  | j                  «      S )zh:return: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``)Ú _first_item_as_path_if_multipathr.   r;   s    r   Úsite_data_pathzUnix.site_data_pathÑ   s   € ð ×4Ñ4°T×5GÑ5GÓHÐHr   c                ó8   — | j                  | j                  «      S )zj:return: config path shared by the users, returns the first item, even if ``multipath`` is set to ``True``)rg   r6   r;   s    r   Úsite_config_pathzUnix.site_config_pathÖ   s   € ð ×4Ñ4°T×5IÑ5IÓJÐJr   c                ó8   — | j                  | j                  «      S )zi:return: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``)rg   r<   r;   s    r   Úsite_cache_pathzUnix.site_cache_pathÛ   s   € ð ×4Ñ4°T×5HÑ5HÓIÐIr   c              #  óT   K  — | j                   –— | j                  E d{  –—†  y7 Œ­w)z4:yield: all user and site configuration directories.N)r1   r4   r;   s    r   Úiter_config_dirszUnix.iter_config_dirsà   s!   è ø€ à×"Ñ"Ò"Ø×)Ñ)×)Ò)úó   ‚( &¡(c              #  óT   K  — | j                   –— | j                  E d{  –—†  y7 Œ­w)z+:yield: all user and site data directories.N)r!   r(   r;   s    r   Úiter_data_dirszUnix.iter_data_dirså   s!   è ø€ à× Ñ Ò Ø×'Ñ'×'Ò'úro   N)ÚreturnÚstr)rr   z	list[str])rr   r   )rr   zIterator[str])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr!   r(   r.   r1   r4   r6   r9   r<   r?   rD   rI   rL   rO   rR   rU   rX   rc   re   rh   rj   rl   rn   rq   © r   r   r   r      sÉ  „ ñ
ð ò7ó ð7ð òVó ðVð ò
%ó ð
%ð ò7ó ð7ð òVó ðVð ò
%ó ð
%ð ò7ó ð7ð ò?ó ð?ð ò7ó ð7ð òó ðð òGó ðGð òFó ðFð òEó ðEð òAó ðAð ò?ó ð?ð òCó ðCð ò7ó ð7ð& ò7ó ð7ð* òIó ðIð òKó ðKð òJó ðJó*ô
(r   r   c                ó¾   — t        | «      }|€Ot        j                  j                  | d«      j	                  «       }|st        j
                  j                  |«      }|S )Nr   )Ú_get_user_dirs_folderr   r   r   r   r   r   )Úenv_varÚfallback_tilde_pathÚ	media_dirs      r   rH   rH   ë   sM   € Ü% gÓ.€IØÐÜ—J‘J—N‘N 7¨BÓ/×5Ñ5Ó7ˆ	ÙÜŸ™×*Ñ*Ð+>Ó?ˆIàÐr   c                ó¢  — t        t        «       j                  «      dz  }|j                  «       r“t	        «       }|j                  «       5 }|j                  d|j                  «       › �«       ddd«       | |d   vry|d   |    j                  d«      }|j                  dt        j                  j                  d«      «      S y# 1 sw Y   ŒXxY w)z{
    Return directory from user-dirs.dirs config file.

    See https://freedesktop.org/wiki/Software/xdg-user-dirs/.

    zuser-dirs.dirsz[top]
NÚtopú"z$HOMEú~)r   r   r1   rb   r   ÚopenÚread_stringÚreadr   Úreplacer   r   r   )ÚkeyÚuser_dirs_config_pathÚparserÚstreamr   s        r   r{   r{   õ   s»   € ô !¤£×!7Ñ!7Ó8Ð;KÑKÐØ×#Ñ#Ô%Ü“ˆà"×'Ñ'Ó)ð 	:¨Và×Ñ ¨¯©«¨Ð8Ô9÷	:ð �f˜U‘mÑ#Øà�e‰}˜SÑ!×'Ñ'¨Ó,ˆà�|‰|˜G¤R§W¡W×%7Ñ%7¸Ó%<Ó=Ð=à÷	:ð 	:ús   Á#CÃC)rr   r   )r|   rs   r}   rs   rr   rs   )r‡   rs   rr   z
str | None)rw   Ú
__future__r   r   r_   Úconfigparserr   Úpathlibr   Útypingr   r   Úapir	   Úcollections.abcr
   r`   r   r   rH   r{   Ú__all__ry   r   r   ú<module>r’      s^   ðÙ å "ã 	Û 
Ý %Ý ß *å  áÝ(à‡<�<�7Òô õ
 ôN(ˆ?ô N(óbóð4 ð�r   