There is appdirs which does precisely what you're looking for:

https://pypi.org/project/appdirs/

That said, it does seem to be a core bit of functionality that would be
nice to have in the os and pathlib modules without needing an external
dependency. I'm not going to weigh in on the pros/cons of adding it to the
stdlib, I'll leave that to others who I'm sure will have strong opinions on
the matter :)

On Wed, Dec 15, 2021 at 1:47 PM JGoutin via Python-ideas <
python-ideas@python.org> wrote:

> Hello,
>
> The idea is to add 3 functions to get "config", "data" and "cache"
> directories that are commonly used to store application files in user home
> / system.
>
> This look very straightforward to get theses directories path, but in
> practices it depends on many factors like OS, environnement variables, user
> or system dir.
>
> For instance, with the "config" directory:
> * Linux, user: os.path.join(os.getenv("XDG_CONFIG_HOME",
> os.path.expanduser("~/.config")), app_name)
> * Linux, system: os.path.join("/etc", app_name)
> * Windows, user: os.path.join(os.path.expandvars("%APPDATA%"), app_name)
> * Windows, system:
> os.path.join(os.path.expandvars("%CSIDL_COMMON_APPDATA%"), app_name)
>
> For linux, the full spec is here:
> https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
>
> I see many applications that just use "~/.app_name" to not have to handle
> theses cases.
>
>
> The functions prototypes may look like and may be added to "shutil" (or
> "os.path" ?):
>
> def getcachedir(app_name: str=None, system: bool=False):
>
> With
> * app_name: The application name
> * system: If the required directory is the systemd directory or user
> direcotry.
>
>
> This may also be implemented as an external library, but I am not sure I
> would like add add a dependency to my projects "just for this".
>
>
> I can implement this if people are interested with this feature.
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/MHEWO4U6SBDU7OU3JH4A62EWCANDM7I2/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/54LEXSHDHC2SXTZWIYMSF7WR3JTDBDAJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to