Introduction

cfgsaver is a python library to save and fetch configuration data in a standard or conventional path and format. By default, it saves the configuration data in JSON format to the ~/.config/<pkg_name>/cfg.json where ~ represents the user’s home directory.

Installation

pip install cfgsaver

Usage

Import the cfgsaver module to save/read configuration values in your source files:

from cfgsaver import cfgsaver

def save_config():
        # saves configuration data to ~/.config/<your_package>/cfg.json
        # unless cfgpath parameter is overridden:
        config = {'name': 'Prahlad',
        'language': 'Python',
        'framework': 'Flask'
        }
        cfgsaver.save('<your_package>', config)

def get_config():
        # gets configuration data from ~/.config/<your_package>/cfg.json
        # unless cfgpath parameter is overridden:
        config = cfgsaver.get("<your_package>") #returns None if config file doesn't exist

This will save the configuration data to ~/.config/<your_package>/cfg.json on both linux and windows.

In case you want to ship some default configuration data packaged with your app, then read the below instructions carefully:

Ensure to include the path to your cfg.json in MANIFEST.in as follows (you’ll have to copy this file from ~/.config/<your_package> to your source directory for packaging purpose):

include <your_package>/cfg.json

Override the PostInstall class in your setup.py like this in order to save your config file to the user’s machine after installation:

from setuptools import setup, find_packages
from setuptools.command.install import install
import shutil

class PostInstallCommand(install):
        """Post-installation for installation mode."""
        def run(self):
                install.run(self)
                fpath = os.path.join(self.install_lib, your_package)
                fpath = os.path.join(fpath, "cfg.json")
                tpath = os.path.join(os.path.expanduser("~"), ".config/<your_package>/cfg.json")
                if not os.path.isdir(tpath):
                        os.makedirs(tpath)
                shutil.move(fpath, tpath)

s = setup(
        name = "your_package",
        packages=find_packages(),
        ..
        ..
        ..
        cmdclass={
                'install': PostInstallCommand,
        },
)

Attribution

Icons made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY

Indices and tables