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/