
    2 j/                       S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJr  S	S
KJr  S	SKJr  \(       a  SSKJr  \R,                  S:X  a  SS jrOSSKJr   " S S\5      r " S S\\5      rSS jrSS jrS/rg)zUnix.    )annotationsN)ConfigParser)cached_property)Path)
gettempdir)TYPE_CHECKINGNoReturn   )XDGMixin)PlatformDirsABC)Iteratorwin32c                     Sn [        U 5      e)Nzshould only be used on Unix)RuntimeError)msgs    b/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/platformdirs/unix.pygetuidr      s    +3    )r   c                  H   \ rS rSrSr\S"S j5       r\S#S j5       r\S$S j5       r	\S#S j5       r
\S$S j5       r\S#S j5       r\S#S	 j5       r\S#S
 j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S$S j5       r\S#S j5       r\S#S j5       r\S#S j5       r\S%S j5       r\S%S j5       r \S%S j5       r!S&S jr"S&S jr#S r$g!)'_UnixDefaults   zDefault directories for Unix/Linux without XDG environment variable overrides.

The XDG env var handling is in :class:`~platformdirs._xdg.XDGMixin`.

c                B    U R                   =(       a    [        5       S:H  $ )Nr   )use_site_for_rootr   selfs    r   	_use_site_UnixDefaults._use_site$   s    %%7&(a-7r   c                ^    U R                  [        R                  R                  S5      5      $ )z|:returns: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or ``$XDG_DATA_HOME/$appname/$version``~/.local/share_append_app_name_and_versionospath
expanduserr   s    r   user_data_dir_UnixDefaults.user_data_dir(   %     001C1CDT1UVVr   c                F    U R                  S5      U R                  S5      /$ )N/usr/local/share
/usr/sharer!   r   s    r   _site_data_dirs_UnixDefaults._site_data_dirs-   s%    112DEtGhGhiuGvwwr   c                ^    U R                  [        R                  R                  S5      5      $ )z{:returns: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or ``$XDG_CONFIG_HOME/$appname/$version``	~/.configr    r   s    r   user_config_dir_UnixDefaults.user_config_dir1   s$     001C1CK1PQQr   c                &    U R                  S5      /$ )Nz/etc/xdgr+   r   s    r   _site_config_dirs_UnixDefaults._site_config_dirs6   s    11*=>>r   c                ^    U R                  [        R                  R                  S5      5      $ )zx:returns: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or ``$XDG_CACHE_HOME/$appname/$version``z~/.cacher    r   s    r   user_cache_dir_UnixDefaults.user_cache_dir:   s$     001C1CJ1OPPr   c                $    U R                  S5      $ )zP:returns: cache directory shared by users, e.g. ``/var/cache/$appname/$version``z
/var/cacher+   r   s    r   site_cache_dir_UnixDefaults.site_cache_dir?   s     00>>r   c                ^    U R                  [        R                  R                  S5      5      $ )z~:returns: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or ``$XDG_STATE_HOME/$appname/$version``z~/.local/stater    r   s    r   user_state_dir_UnixDefaults.user_state_dirD   r'   r   c                $    U R                  S5      $ )zN:returns: state directory shared by users, e.g. ``/var/lib/$appname/$version``z/var/libr+   r   s    r   site_state_dir_UnixDefaults.site_state_dirI   s     00<<r   c                    U R                   nU R                  (       a1  [        R                  R	                  US5      nU R                  U5        U$ )zh:returns: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in itlog)r<   opinionr"   r#   join_optionally_create_directoryr   r#   s     r   user_log_dir_UnixDefaults.user_log_dirN   s=     ""<<77<<e,D--d3r   c                $    U R                  S5      $ )z:returns: log directory shared by users, e.g. ``/var/log/$appname/$version``

Unlike `user_log_dir`, ``opinion`` has no effect since ``/var/log`` is inherently a log directory.

z/var/logr+   r   s    r   site_log_dir_UnixDefaults.site_log_dirW   s     00<<r   c                    [        SS5      $ )zD:returns: documents directory tied to the user, e.g. ``~/Documents``XDG_DOCUMENTS_DIRz~/Documents_get_user_media_dirr   s    r   user_documents_dir _UnixDefaults.user_documents_dir`   s     ##6FFr   c                    [        SS5      $ )zD:returns: downloads directory tied to the user, e.g. ``~/Downloads``XDG_DOWNLOAD_DIRz~/DownloadsrN   r   s    r   user_downloads_dir _UnixDefaults.user_downloads_dire   s     ##5}EEr   c                    [        SS5      $ )zB:returns: pictures directory tied to the user, e.g. ``~/Pictures``XDG_PICTURES_DIRz
~/PicturesrN   r   s    r   user_pictures_dir_UnixDefaults.user_pictures_dirj   s     ##5|DDr   c                    [        SS5      $ )z>:returns: videos directory tied to the user, e.g. ``~/Videos``XDG_VIDEOS_DIRz~/VideosrN   r   s    r   user_videos_dir_UnixDefaults.user_videos_diro   s     ##3Z@@r   c                    [        SS5      $ )z<:returns: music directory tied to the user, e.g. ``~/Music``XDG_MUSIC_DIRz~/MusicrN   r   s    r   user_music_dir_UnixDefaults.user_music_dirt   s     #?I>>r   c                    [        SS5      $ )z@:returns: desktop directory tied to the user, e.g. ``~/Desktop``XDG_DESKTOP_DIRz	~/DesktoprN   r   s    r   user_desktop_dir_UnixDefaults.user_desktop_diry   s     ##4kBBr   c                @    [         R                  R                  S5      $ )z?:returns: bin directory tied to the user, e.g. ``~/.local/bin``z~/.local/bin)r"   r#   r$   r   s    r   user_bin_dir_UnixDefaults.user_bin_dir~   s     ww!!.11r   c                    g)z@:returns: bin directory shared by users, e.g. ``/usr/local/bin``z/usr/local/bin r   s    r   site_bin_dir_UnixDefaults.site_bin_dir   s      r   c                |    [         R                  R                  [         R                  R                  S5      S5      $ )zW:returns: applications directory tied to the user, e.g. ``~/.local/share/applications``r   applications)r"   r#   rD   r$   r   s    r   user_applications_dir#_UnixDefaults.user_applications_dir   s)     ww||BGG../?@.QQr   c                n    S Vs/ s H#  n[         R                  R                  US5      PM%     sn$ s  snf )N)r)   r*   rn   )r"   r#   rD   )r   ps     r   _site_applications_dirs%_UnixDefaults._site_applications_dirs   s+    9[\9[AQ/9[\\\s   *2c                    U R                   nU R                  (       a  [        R                  R	                  U5      $ US   $ )zR:returns: applications directory shared by users, e.g. ``/usr/share/applications``r   )rs   	multipathr"   pathseprD   )r   dirss     r   site_applications_dir#_UnixDefaults.site_applications_dir   s1     ++(,rzzt$CDGCr   c                   [         R                  R                  S5      (       a  S[        5        3nO?[         R                  R                  S5      (       a  S[        5        3nOS[        5        3n[        R
                  " U[        R                  5      (       d  [        5        S[        5        3nU R                  U5      $ )aX  :returns: runtime directory tied to the user, e.g. ``$XDG_RUNTIME_DIR/$appname/$version``.

If ``$XDG_RUNTIME_DIR`` is unset, tries the platform default (``/tmp/run/user/$(id -u)`` on OpenBSD, ``/var/run/user/$(id -u)`` on FreeBSD/NetBSD, ``/run/user/$(id -u)`` otherwise). If the default is not writable, falls back to a temporary directory.

openbsdz/tmp/run/user/)freebsdnetbsdz/var/run/user/z
/run/user/z	/runtime-)	sysplatform
startswithr   r"   accessW_OKr   r!   rF   s     r   user_runtime_dir_UnixDefaults.user_runtime_dir   s     <<""9--#FH:.D\\$$%:;;#FH:.Dz*Dyyrww'' l^9VXJ7D0066r   c                v    [         R                  R                  S5      (       a  SnOSnU R                  U5      $ )a.  :returns: 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.

)r}   r|   r~   z/var/runz/run)r   r   r   r!   rF   s     r   site_runtime_dir_UnixDefaults.site_runtime_dir   s5     <<""#CDDDD0066r   c                8    U R                  U R                  5      $ )zi:returns: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``) _first_item_as_path_if_multipathsite_data_dirr   s    r   site_data_path_UnixDefaults.site_data_path   s     44T5G5GHHr   c                8    U R                  U R                  5      $ )zg:returns: config path shared by users, returns the first item, even if ``multipath`` is set to ``True``)r   site_config_dirr   s    r   site_config_path_UnixDefaults.site_config_path   s     44T5I5IJJr   c                8    U R                  U R                  5      $ )zj:returns: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``)r   r9   r   s    r   site_cache_path_UnixDefaults.site_cache_path   s     44T5H5HIIr   c              #  v   #    U R                   (       d  U R                  v   U R                   Sh  vN   g N7f)z4:yield: all user and site configuration directories.N)r   r0   r3   r   s    r   iter_config_dirs_UnixDefaults.iter_config_dirs   s'     ~~&&&))))   /979c              #  v   #    U R                   (       d  U R                  v   U R                   Sh  vN   g N7f)z+:yield: all user and site data directories.N)r   r%   r,   r   s    r   iter_data_dirs_UnixDefaults.iter_data_dirs   s'     ~~$$$''''r   rj   N)returnboolr   str)r   z	list[str])r   r   )r   zIterator[str])%__name__
__module____qualname____firstlineno____doc__r   r   propertyr%   r,   r0   r3   r6   r9   r<   r?   rG   rJ   rP   rT   rX   r\   r`   rd   rg   rk   ro   rs   ry   r   r   r   r   r   r   r   __static_attributes__rj   r   r   r   r      sM    8 8 W W x x R R ? ? Q Q ? ? W W = =   = = G G F F E E A A ? ? C C 2 2     R R ] ] D D
 7 7  7 7  I I K K J J*(r   r   c                     ^  \ rS rSrSr\SU 4S jj5       r\SU 4S jj5       r\SU 4S jj5       r\SU 4S jj5       r	\SU 4S jj5       r
\SU 4S jj5       r\SU 4S	 jj5       r\SU 4S
 jj5       rSrU =r$ )Unix   aN  On Unix/Linux, we follow the `XDG Basedir Spec <https://specifications.freedesktop.org/basedir/latest/>`_.

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                R   > U R                   (       a  U R                  $ [        TU ]  $ )zb:returns: data directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   r   superr%   r   	__class__s    r   r%   Unix.user_data_dir   s!     &*^^t!!N9NNr   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )zd:returns: config directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   r   r   r0   r   s    r   r0   Unix.user_config_dir   s!     (,~~t##R57;RRr   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )zc:returns: cache directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   r9   r   r6   r   s    r   r6   Unix.user_cache_dir   !     '+nnt""P%':PPr   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )zc:returns: state directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   r?   r   r<   r   s    r   r<   Unix.user_state_dir   r   r   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )za:returns: log directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   rJ   r   rG   r   s    r   rG   Unix.user_log_dir   !     %)NNt  L8LLr   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )zj:returns: applications directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   ry   r   ro   r   s    r   ro   Unix.user_applications_dir   s!     .2^^t))^A^^r   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )ze:returns: runtime directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   r   r   r   r   s    r   r   Unix.user_runtime_dir   s!     )-t$$TEG<TTr   c                R   > U R                   (       a  U R                  $ [        TU ]  $ )za:returns: bin directory tied to the user, or site equivalent when root with ``use_site_for_root``)r   rk   r   rg   r   s    r   rg   Unix.user_bin_dir  r   r   rj   r   )r   r   r   r   r   r   r%   r0   r6   r<   rG   ro   r   rg   r   __classcell__)r   s   @r   r   r      s     O O S S Q Q Q Q M M _ _ U U M Mr   r   c                h    [        U 5      =n(       a  U$ [        R                  R                  U5      $ )N)_get_user_dirs_folderr"   r#   r$   )env_varfallback_tilde_path	media_dirs      r   rO   rO   	  s.    )'22y277122r   c                <   [         R                  R                  SS5      R                  5       =(       d    [         R                  R                  S5      n[        U5      S-  nUR                  5       (       a  [        5       nUR                  5        nUR                  SUR                  5        35        SSS5        XS   ;  a  gUS   U    R                  S5      nUR                  S	[         R                  R                  S
5      5      $ g! , (       d  f       N^= f)znReturn directory from user-dirs.dirs config file.

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

XDG_CONFIG_HOME r/   zuser-dirs.dirsz[top]
Ntop"z$HOME~)r"   environgetstripr#   r$   r   existsr   openread_stringreadreplace)keyconfig_homeuser_dirs_config_pathparserstreamr#   s         r   r   r     s     **..!2B7==?b277CUCUVaCbK -0@@##%%"'')V89 * Um#e}S!'',||GRWW%7%7%<== *)s   #D
D)r   r	   )r   r   r   r   r   r   )r   r   r   z
str | None)r   
__future__r   r"   r   configparserr   	functoolsr   pathlibr   tempfiler   typingr   r	   _xdgr   apir   collections.abcr   r   r   r   r   rO   r   __all__rj   r   r   <module>r      sx     " 	 
 % %   *   (<<7 
 u(O u(p1M8] 1Mh30 r   