![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
.. image:: https://secure.travis-ci.org/ActiveState/appdirs.png :target: http://travis-ci.org/ActiveState/appdirs
What directory should your app use for storing user data? If running on Mac OS X, you should use::
~/Library/Application Support/<AppName>
If on Windows (at least English Win XP) that should be::
C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
or possibly::
C:\Documents and Settings\<User>\Application Data\<AppAuthor>\<AppName>
for roaming profiles <http://bit.ly/9yl3b6>
_ but that is another story.
On Linux (and other Unices) the dir, according to the XDG spec <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>
_, is::
~/.local/share/<AppName>
appdirs
to the rescueThis kind of thing is what the appdirs
module is for. appdirs
will
help you choose an appropriate:
user_data_dir
)user_config_dir
)user_cache_dir
)site_data_dir
)site_config_dir
)user_log_dir
)and also:
On Mac OS X::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'/Users/trentm/Library/Application Support/SuperApp'
>>> site_data_dir(appname, appauthor)
'/Library/Application Support/SuperApp'
>>> user_cache_dir(appname, appauthor)
'/Users/trentm/Library/Caches/SuperApp'
>>> user_log_dir(appname, appauthor)
'/Users/trentm/Library/Logs/SuperApp'
On Windows 7::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp'
>>> user_data_dir(appname, appauthor, roaming=True)
'C:\\Users\\trentm\\AppData\\Roaming\\Acme\\SuperApp'
>>> user_cache_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Cache'
>>> user_log_dir(appname, appauthor)
'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Logs'
On Linux::
>>> from appdirs import *
>>> appname = "SuperApp"
>>> appauthor = "Acme"
>>> user_data_dir(appname, appauthor)
'/home/trentm/.local/share/SuperApp
>>> site_data_dir(appname, appauthor)
'/usr/local/share/SuperApp'
>>> site_data_dir(appname, appauthor, multipath=True)
'/usr/local/share/SuperApp:/usr/share/SuperApp'
>>> user_cache_dir(appname, appauthor)
'/home/trentm/.cache/SuperApp'
>>> user_log_dir(appname, appauthor)
'/home/trentm/.cache/SuperApp/log'
>>> user_config_dir(appname)
'/home/trentm/.config/SuperApp'
>>> site_config_dir(appname)
'/etc/xdg/SuperApp'
>>> os.environ['XDG_CONFIG_DIRS'] = '/etc:/usr/local/etc'
>>> site_config_dir(appname, multipath=True)
'/etc/SuperApp:/usr/local/etc/SuperApp'
AppDirs
for convenience::
>>> from appdirs import AppDirs
>>> dirs = AppDirs("SuperApp", "Acme")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp'
>>> dirs.site_data_dir
'/Library/Application Support/SuperApp'
>>> dirs.user_cache_dir
'/Users/trentm/Library/Caches/SuperApp'
>>> dirs.user_log_dir
'/Users/trentm/Library/Logs/SuperApp'
If you have multiple versions of your app in use that you want to be able to run side-by-side, then you may want version-isolation for these dirs::
>>> from appdirs import AppDirs
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp/1.0'
>>> dirs.site_data_dir
'/Library/Application Support/SuperApp/1.0'
>>> dirs.user_cache_dir
'/Users/trentm/Library/Caches/SuperApp/1.0'
>>> dirs.user_log_dir
'/Users/trentm/Library/Logs/SuperApp/1.0'
Project officially classified as Stable which is important for inclusion in other distros such as ActivePython.
First of several incremental releases to catch up on maintenance.
JNA <https://github.com/twall/jna>
_.site_data_dir
, return result
based on XDG_DATA_DIRS and make room for respecting the standard which
specifies XDG_DATA_DIRS is a multiple-value variable*_config_dir
which are distinct on nix-es, according to
XDG specs; on Windows and Mac return the corresponding *_data_dir
user_log_dir
under the cache dir on Unix. Seems to be more
typical.unicode
work on py3k.[issue 4] Add AppDirs.user_log_dir
.
[Unix, issue 2, issue 7] appdirs now conforms to XDG base directory spec <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>
_.
[Mac, issue 5] Fix site_data_dir()
on Mac.
[Mac] Drop use of 'Carbon' module in favour of hardcoded paths; supports Python3 now.
[Windows] Append "Cache" to user_cache_dir
on Windows by default. Use
opinion=False
option to disable this.
Add appdirs.AppDirs
convenience class. Usage:
>>> dirs = AppDirs("SuperApp", "Acme", version="1.0")
>>> dirs.user_data_dir
'/Users/trentm/Library/Application Support/SuperApp/1.0'
[Windows] Cherry-pick Komodo's change to downgrade paths to the Windows short paths if there are high bit chars.
[Linux] Change default user_cache_dir()
on Linux to be singular, e.g.
"~/.superapp/cache".
[Windows] Add roaming
option to user_data_dir()
(for use on Windows only)
and change the default user_data_dir
behaviour to use a non-roaming
profile dir (CSIDL_LOCAL_APPDATA
instead of CSIDL_APPDATA
). Why? Because
a large roaming profile can cause login speed issues. The "only syncs on
logout" behaviour can cause surprises in appdata info.
Started this changelog 27 July 2010. Before that this module originated in the
Komodo <http://www.activestate.com/komodo>
_ product as applib.py
and then
as applib/location.py <http://github.com/ActiveState/applib/blob/master/applib/location.py>
_ (used by
PyPM <http://code.activestate.com/pypm/>
_ in ActivePython <http://www.activestate.com/activepython>
_). This is basically a fork of
applib.py 1.0.1 and applib/location.py 1.0.1.
FAQs
A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
We found that appdirs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.