/config-better

Configure your application in a friendlier and more consistent way!

Primary LanguagePythonMIT LicenseMIT

config-better

PyPI CircleCI Build Status Codecov

Make use of directories for configuration / data / caching better and more user-friendly!

This module provides support for the XDG Base Directory specification, and OS-friendly fallbacks for Windows, Mac OS, and Linux if not otherwise specified.

Usage

import os.path

import configbetter

c = configbetter.Config('appname')

with open(os.path.join(c.config, 'config.json')) as conf:
    # ...

Available parameters for creating a Config instance:

  • force_unix allows you to force using Unix-like paths on Windows/Darwin if desired. This isn't really recommended on Windows but on Darwin it seems as though programs without a GUI usually use Unix-like configuration paths while GUI apps use the "standard" Darwin paths. By default this is False.

Available properties of Config:

  • .cache, which points to $XDG_CACHE_HOME if available, otherwise uses a generic system equivalent.
  • .config, which points to $XDG_CONFIG_HOME if available, otherwise uses a generic system equivalent.
  • .data, which points to $XDG_DATA_HOME if available, otherwise uses a generic system equivalent.

Additionally, the following methods are provided:

  • .makedirs() will create the cache, config and data directories if they do not already exist, including all parent directories.
  • .rmdirs() will remove any program-specific directories that would have been created by config-better.

Installation

pip install config-better

Developing

  1. Clone the repo
  2. git checkout -b some-feature-or-bugfix
  3. Do work
  4. Test with pytest (add tests to maintain coverage as best as possible)
  5. Run yapf -ir . and isort -rc . to standardize.
  6. Make a PR.