B Ĥa@sddlmZddlZddlZddlmZddlmZddlm Z ej drZddlm Z nd d d d Z Gd dde Z dddddZdgZdS)) annotationsN) ConfigParser)Path)PlatformDirsABClinux)getuidint)returncCs tddS)Nzshould only be used on Linux) RuntimeErrorr r B/opt/alt/python37/lib/python3.7/site-packages/platformdirs/unix.pyrsrc@seZdZdZeddddZeddddZdddd d Zeddd d Zeddd dZ eddddZ eddddZ eddddZ eddddZ eddddZeddddZeddddZddddd Zd!S)"UnixaD On Unix/Linux, we follow the `XDG Basedir Spec `_. The spec allows overriding directories with environment variables. The examples show are the default values, alongside the name of the environment variable that overrides them. Makes use of the `appname `, `version `, `multipath `, `opinion `. str)r cCs,tjdd}|s"tjd}||S)z :return: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or ``$XDG_DATA_HOME/$appname/$version`` XDG_DATA_HOMEz~/.local/share)osenvirongetstrippath expanduser_append_app_name_and_version)selfrr r r user_data_dirs zUnix.user_data_dircCs.tjdd}|s$dtjd}||S)aY :return: data directories shared by users (if `multipath ` is enabled and ``XDG_DATA_DIR`` 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`` XDG_DATA_DIRSrz/usr/local/sharez /usr/share)rrrrpathsep_with_multi_path)rrr r r site_data_dir)szUnix.site_data_dir)rr cs<|tj}js|dd}fdd|D}tj|S)Nrrcsg|]}tj|qSr )rrrr).0p)rr r :sz)Unix._with_multi_path..)splitrr multipathjoin)rr path_listr )rr r6s   zUnix._with_multi_pathcCs,tjdd}|s"tjd}||S)z :return: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or ``$XDG_CONFIG_HOME/$appname/$version`` XDG_CONFIG_HOMErz ~/.config)rrrrrrr)rrr r r user_config_dir=s zUnix.user_config_dircCs$tjdd}|sd}||S)a/ :return: config directories shared by users (if `multipath ` is enabled and ``XDG_DATA_DIR`` 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`` XDG_CONFIG_DIRSrz/etc/xdg)rrrrr)rrr r r site_config_dirHszUnix.site_config_dircCs,tjdd}|s"tjd}||S)z :return: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or ``~/$XDG_CACHE_HOME/$appname/$version`` XDG_CACHE_HOMErz~/.cache)rrrrrrr)rrr r r user_cache_dirUs zUnix.user_cache_dircCs,tjdd}|s"tjd}||S)z :return: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or ``$XDG_STATE_HOME/$appname/$version`` XDG_STATE_HOMErz~/.local/state)rrrrrrr)rrr r r user_state_dir`s zUnix.user_state_dircCs|j}|jrtj|d}|S)zx :return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``log`` in it log)r+opinionrrr$)rrr r r user_log_dirkszUnix.user_log_dircCs6td}|dkr2tjdd}|s2tjd}|S)zU :return: documents directory tied to the user, e.g. ``~/Documents`` ZXDG_DOCUMENTS_DIRNrz ~/Documents)_get_user_dirs_folderrrrrrr)rZ documents_dirr r r user_documents_dirus  zUnix.user_documents_dircCs,tjdd}|s"dt}||S)z :return: runtime directory tied to the user, e.g. ``/run/user/$(id -u)/$appname/$version`` or ``$XDG_RUNTIME_DIR/$appname/$version`` ZXDG_RUNTIME_DIRrz /run/user/)rrrrrr)rrr r r user_runtime_dirs zUnix.user_runtime_dirrcCs ||jS)zd:return: data path shared by users. Only return first item, even if ``multipath`` is set to ``True``) _first_item_as_path_if_multipathr)rr r r site_data_pathszUnix.site_data_pathcCs ||jS)zj:return: config path shared by the users. Only return first item, even if ``multipath`` is set to ``True``)r4r))rr r r site_config_pathszUnix.site_config_path) directoryr cCs|jr|tjd}t|S)Nr)r#r"rrr)rr7r r r r4sz%Unix._first_item_as_path_if_multipathN)__name__ __module__ __qualname____doc__propertyrrrr'r)r+r-r0r2r3r5r6r4r r r r rs          rrz str | None)keyr c Cstjtjd}tj|rt}t|}|d| WdQRX||dkr\dS|d| d}| dtj d}|SdS)zjReturn directory from user-dirs.dirs config file. See https://freedesktop.org/wiki/Software/xdg-user-dirs/zuser-dirs.dirsz[top] Ntop"z$HOME~) rrr$rr'existsropen read_stringreadrreplacer)r=Zuser_dirs_config_pathparserstreamrr r r r1s   r1) __future__rrsys configparserrZpathlibrZapirplatform startswithrrr1__all__r r r r s