appdirs


Nameappdirs JSON
Version 1.4.4 PyPI version JSON
download
home_pagehttp://github.com/ActiveState/appdirs
SummaryA small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
upload_time2020-05-11 07:59:51
maintainerJeff Rouse
docs_urlNone
authorTrent Mick
requires_python
licenseMIT
keywords application directory log cache user
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            
.. image:: https://secure.travis-ci.org/ActiveState/appdirs.png
    :target: http://travis-ci.org/ActiveState/appdirs

the problem
===========

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 rescue
=========================

This kind of thing is what the ``appdirs`` module is for. ``appdirs`` will
help you choose an appropriate:

- user data dir (``user_data_dir``)
- user config dir (``user_config_dir``)
- user cache dir (``user_cache_dir``)
- site data dir (``site_data_dir``)
- site config dir (``site_config_dir``)
- user log dir (``user_log_dir``)

and also:

- is a single module so other Python packages can include their own private copy
- is slightly opinionated on the directory names used. Look for "OPINION" in
  documentation and code for when an opinion is being applied.


some example output
===================

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'



Per-version isolation
=====================

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'



appdirs Changelog
=================

appdirs 1.4.4
-------------
- [PR #92] Don't import appdirs from setup.py

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.

appdirs 1.4.3
-------------
- [PR #76] Python 3.6 invalid escape sequence deprecation fixes
- Fix for Python 3.6 support

appdirs 1.4.2
-------------
- [PR #84] Allow installing without setuptools
- [PR #86] Fix string delimiters in setup.py description
- Add Python 3.6 support

appdirs 1.4.1
-------------
- [issue #38] Fix _winreg import on Windows Py3
- [issue #55] Make appname optional

appdirs 1.4.0
-------------
- [PR #42] AppAuthor is now optional on Windows
- [issue 41] Support Jython on Windows, Mac, and Unix-like platforms. Windows
  support requires `JNA <https://github.com/twall/jna>`_.
- [PR #44] Fix incorrect behaviour of the site_config_dir method

appdirs 1.3.0
-------------
- [Unix, issue 16] Conform to XDG standard, instead of breaking it for
  everybody
- [Unix] Removes gratuitous case mangling of the case, since \*nix-es are
  usually case sensitive, so mangling is not wise
- [Unix] Fixes the utterly wrong behaviour in ``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
- [Issue 6] Add ``*_config_dir`` which are distinct on nix-es, according to
  XDG specs; on Windows and Mac return the corresponding ``*_data_dir``

appdirs 1.2.0
-------------

- [Unix] Put ``user_log_dir`` under the *cache* dir on Unix. Seems to be more
  typical.
- [issue 9] Make ``unicode`` work on py3k.

appdirs 1.1.0
-------------

- [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.


appdirs 1.0.1 (never released)
------------------------------

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.




            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/ActiveState/appdirs",
    "name": "appdirs",
    "maintainer": "Jeff Rouse",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "jr@its.to",
    "keywords": "application directory log cache user",
    "author": "Trent Mick",
    "author_email": "trentm@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz",
    "platform": "",
    "description": "\n.. image:: https://secure.travis-ci.org/ActiveState/appdirs.png\n    :target: http://travis-ci.org/ActiveState/appdirs\n\nthe problem\n===========\n\nWhat directory should your app use for storing user data? If running on Mac OS X, you\nshould use::\n\n    ~/Library/Application Support/<AppName>\n\nIf on Windows (at least English Win XP) that should be::\n\n    C:\\Documents and Settings\\<User>\\Application Data\\Local Settings\\<AppAuthor>\\<AppName>\n\nor possibly::\n\n    C:\\Documents and Settings\\<User>\\Application Data\\<AppAuthor>\\<AppName>\n\nfor `roaming profiles <http://bit.ly/9yl3b6>`_ but that is another story.\n\nOn Linux (and other Unices) the dir, according to the `XDG\nspec <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>`_, is::\n\n    ~/.local/share/<AppName>\n\n\n``appdirs`` to the rescue\n=========================\n\nThis kind of thing is what the ``appdirs`` module is for. ``appdirs`` will\nhelp you choose an appropriate:\n\n- user data dir (``user_data_dir``)\n- user config dir (``user_config_dir``)\n- user cache dir (``user_cache_dir``)\n- site data dir (``site_data_dir``)\n- site config dir (``site_config_dir``)\n- user log dir (``user_log_dir``)\n\nand also:\n\n- is a single module so other Python packages can include their own private copy\n- is slightly opinionated on the directory names used. Look for \"OPINION\" in\n  documentation and code for when an opinion is being applied.\n\n\nsome example output\n===================\n\nOn Mac OS X::\n\n    >>> from appdirs import *\n    >>> appname = \"SuperApp\"\n    >>> appauthor = \"Acme\"\n    >>> user_data_dir(appname, appauthor)\n    '/Users/trentm/Library/Application Support/SuperApp'\n    >>> site_data_dir(appname, appauthor)\n    '/Library/Application Support/SuperApp'\n    >>> user_cache_dir(appname, appauthor)\n    '/Users/trentm/Library/Caches/SuperApp'\n    >>> user_log_dir(appname, appauthor)\n    '/Users/trentm/Library/Logs/SuperApp'\n\nOn Windows 7::\n\n    >>> from appdirs import *\n    >>> appname = \"SuperApp\"\n    >>> appauthor = \"Acme\"\n    >>> user_data_dir(appname, appauthor)\n    'C:\\\\Users\\\\trentm\\\\AppData\\\\Local\\\\Acme\\\\SuperApp'\n    >>> user_data_dir(appname, appauthor, roaming=True)\n    'C:\\\\Users\\\\trentm\\\\AppData\\\\Roaming\\\\Acme\\\\SuperApp'\n    >>> user_cache_dir(appname, appauthor)\n    'C:\\\\Users\\\\trentm\\\\AppData\\\\Local\\\\Acme\\\\SuperApp\\\\Cache'\n    >>> user_log_dir(appname, appauthor)\n    'C:\\\\Users\\\\trentm\\\\AppData\\\\Local\\\\Acme\\\\SuperApp\\\\Logs'\n\nOn Linux::\n\n    >>> from appdirs import *\n    >>> appname = \"SuperApp\"\n    >>> appauthor = \"Acme\"\n    >>> user_data_dir(appname, appauthor)\n    '/home/trentm/.local/share/SuperApp\n    >>> site_data_dir(appname, appauthor)\n    '/usr/local/share/SuperApp'\n    >>> site_data_dir(appname, appauthor, multipath=True)\n    '/usr/local/share/SuperApp:/usr/share/SuperApp'\n    >>> user_cache_dir(appname, appauthor)\n    '/home/trentm/.cache/SuperApp'\n    >>> user_log_dir(appname, appauthor)\n    '/home/trentm/.cache/SuperApp/log'\n    >>> user_config_dir(appname)\n    '/home/trentm/.config/SuperApp'\n    >>> site_config_dir(appname)\n    '/etc/xdg/SuperApp'\n    >>> os.environ['XDG_CONFIG_DIRS'] = '/etc:/usr/local/etc'\n    >>> site_config_dir(appname, multipath=True)\n    '/etc/SuperApp:/usr/local/etc/SuperApp'\n\n\n``AppDirs`` for convenience\n===========================\n\n::\n\n    >>> from appdirs import AppDirs\n    >>> dirs = AppDirs(\"SuperApp\", \"Acme\")\n    >>> dirs.user_data_dir\n    '/Users/trentm/Library/Application Support/SuperApp'\n    >>> dirs.site_data_dir\n    '/Library/Application Support/SuperApp'\n    >>> dirs.user_cache_dir\n    '/Users/trentm/Library/Caches/SuperApp'\n    >>> dirs.user_log_dir\n    '/Users/trentm/Library/Logs/SuperApp'\n\n\n\nPer-version isolation\n=====================\n\nIf you have multiple versions of your app in use that you want to be\nable to run side-by-side, then you may want version-isolation for these\ndirs::\n\n    >>> from appdirs import AppDirs\n    >>> dirs = AppDirs(\"SuperApp\", \"Acme\", version=\"1.0\")\n    >>> dirs.user_data_dir\n    '/Users/trentm/Library/Application Support/SuperApp/1.0'\n    >>> dirs.site_data_dir\n    '/Library/Application Support/SuperApp/1.0'\n    >>> dirs.user_cache_dir\n    '/Users/trentm/Library/Caches/SuperApp/1.0'\n    >>> dirs.user_log_dir\n    '/Users/trentm/Library/Logs/SuperApp/1.0'\n\n\n\nappdirs Changelog\n=================\n\nappdirs 1.4.4\n-------------\n- [PR #92] Don't import appdirs from setup.py\n\nProject officially classified as Stable which is important\nfor inclusion in other distros such as ActivePython.\n\nFirst of several incremental releases to catch up on maintenance.\n\nappdirs 1.4.3\n-------------\n- [PR #76] Python 3.6 invalid escape sequence deprecation fixes\n- Fix for Python 3.6 support\n\nappdirs 1.4.2\n-------------\n- [PR #84] Allow installing without setuptools\n- [PR #86] Fix string delimiters in setup.py description\n- Add Python 3.6 support\n\nappdirs 1.4.1\n-------------\n- [issue #38] Fix _winreg import on Windows Py3\n- [issue #55] Make appname optional\n\nappdirs 1.4.0\n-------------\n- [PR #42] AppAuthor is now optional on Windows\n- [issue 41] Support Jython on Windows, Mac, and Unix-like platforms. Windows\n  support requires `JNA <https://github.com/twall/jna>`_.\n- [PR #44] Fix incorrect behaviour of the site_config_dir method\n\nappdirs 1.3.0\n-------------\n- [Unix, issue 16] Conform to XDG standard, instead of breaking it for\n  everybody\n- [Unix] Removes gratuitous case mangling of the case, since \\*nix-es are\n  usually case sensitive, so mangling is not wise\n- [Unix] Fixes the utterly wrong behaviour in ``site_data_dir``, return result\n  based on XDG_DATA_DIRS and make room for respecting the standard which\n  specifies XDG_DATA_DIRS is a multiple-value variable\n- [Issue 6] Add ``*_config_dir`` which are distinct on nix-es, according to\n  XDG specs; on Windows and Mac return the corresponding ``*_data_dir``\n\nappdirs 1.2.0\n-------------\n\n- [Unix] Put ``user_log_dir`` under the *cache* dir on Unix. Seems to be more\n  typical.\n- [issue 9] Make ``unicode`` work on py3k.\n\nappdirs 1.1.0\n-------------\n\n- [issue 4] Add ``AppDirs.user_log_dir``.\n- [Unix, issue 2, issue 7] appdirs now conforms to `XDG base directory spec\n  <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>`_.\n- [Mac, issue 5] Fix ``site_data_dir()`` on Mac.\n- [Mac] Drop use of 'Carbon' module in favour of hardcoded paths; supports\n  Python3 now.\n- [Windows] Append \"Cache\" to ``user_cache_dir`` on Windows by default. Use\n  ``opinion=False`` option to disable this.\n- Add ``appdirs.AppDirs`` convenience class. Usage:\n\n        >>> dirs = AppDirs(\"SuperApp\", \"Acme\", version=\"1.0\")\n        >>> dirs.user_data_dir\n        '/Users/trentm/Library/Application Support/SuperApp/1.0'\n\n- [Windows] Cherry-pick Komodo's change to downgrade paths to the Windows short\n  paths if there are high bit chars.\n- [Linux] Change default ``user_cache_dir()`` on Linux to be singular, e.g.\n  \"~/.superapp/cache\".\n- [Windows] Add ``roaming`` option to ``user_data_dir()`` (for use on Windows only)\n  and change the default ``user_data_dir`` behaviour to use a *non*-roaming\n  profile dir (``CSIDL_LOCAL_APPDATA`` instead of ``CSIDL_APPDATA``). Why? Because\n  a large roaming profile can cause login speed issues. The \"only syncs on\n  logout\" behaviour can cause surprises in appdata info.\n\n\nappdirs 1.0.1 (never released)\n------------------------------\n\nStarted this changelog 27 July 2010. Before that this module originated in the\n`Komodo <http://www.activestate.com/komodo>`_ product as ``applib.py`` and then\nas `applib/location.py\n<http://github.com/ActiveState/applib/blob/master/applib/location.py>`_ (used by\n`PyPM <http://code.activestate.com/pypm/>`_ in `ActivePython\n<http://www.activestate.com/activepython>`_). This is basically a fork of\napplib.py 1.0.1 and applib/location.py 1.0.1.\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\".",
    "version": "1.4.4",
    "split_keywords": [
        "application",
        "directory",
        "log",
        "cache",
        "user"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "1d638a5913a8d8ed8e7c7d789ece149c",
                "sha256": "a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
            },
            "downloads": -1,
            "filename": "appdirs-1.4.4-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1d638a5913a8d8ed8e7c7d789ece149c",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 9566,
            "upload_time": "2020-05-11T07:59:49",
            "upload_time_iso_8601": "2020-05-11T07:59:49.499913Z",
            "url": "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d6bca12613174185dd9abc8a29f4f012",
                "sha256": "7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"
            },
            "downloads": -1,
            "filename": "appdirs-1.4.4.tar.gz",
            "has_sig": false,
            "md5_digest": "d6bca12613174185dd9abc8a29f4f012",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13470,
            "upload_time": "2020-05-11T07:59:51",
            "upload_time_iso_8601": "2020-05-11T07:59:51.037820Z",
            "url": "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-05-11 07:59:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "ActiveState",
    "github_project": "appdirs",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "appdirs"
}
        
Elapsed time: 0.02741s