{ "info": { "author": "Brian Peterson", "author_email": "bpeterso2000@yahoo.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development", "Topic :: Utilities" ], "description": "Welcome to JSON Config\r\n======================\r\n\r\n|Build Status| |Dependency Updates| |Coverage Status| |Version Status|\r\n\r\n*Configuration doesn't get any easier than this ...*\r\n\r\n.. code::\r\n\r\n pip install jsonconfig-tool\r\n\r\nWhat's it Used For?\r\n-------------------\r\n \r\n* Managing settings, configuration information, application data, etc.\r\n \r\n* Managing secrets, tokens, keys, passwords, etc.\r\n \r\n* Managing environment settings.\r\n\r\nBasic Example\r\n-------------\r\n\r\n.. code::\r\n\r\n with Config('myapp') as cfg:\r\n cfg.data = 'Any JSON serializable object ...'\r\n cfg.pwd.a_secret = 'Encrypted data ...'\r\n cfg.env.a_variable = 'Environment variables.'\r\n\r\nAdditional Examples can be found in the documentation_.\r\n\r\nSimply Sane\r\n-----------\r\n*No magic here* ...\r\n\r\n.. topic:: In the context manager above:\r\n\r\n * The ``data`` is stored in the user's local application directory.\r\n * The ``pwd`` data is encrypted and stored in a keyring vault.\r\n * The ``env`` data is stored in environment variables.\r\n\r\nConfiguration File Locations\r\n----------------------------\r\n\r\nClick_ *is the package used to determine the default application directory*.\r\n\r\nThe default behavior is to return whatever is most appropriate for the\r\noperating system. To give you an idea, an app called ``Foo Bar`` would\r\nlikely return the following:\r\n\r\n.. code-block:: text\r\n\r\n Mac OS X:\r\n ~/Library/Application Support/Foo Bar\r\n\r\n Mac OS X (POSIX):\r\n ~/.foo-bar\r\n\r\n Unix:\r\n ~/.config/foo-bar\r\n\r\n Unix (POSIX):\r\n ~/.foo-bar\r\n\r\n Win XP (roaming):\r\n C:\\Documents and Settings\\\\Local Settings\\Application Data\\Foo Bar\r\n\r\n Win XP (not roaming):\r\n C:\\Documents and Settings\\\\Application Data\\Foo Bar\r\n\r\n Win 7+ (roaming):\r\n C:\\Users\\\\AppData\\Roaming\\Foo Bar\r\n\r\n Win 7+ (not roaming):\r\n C:\\Users\\\\AppData\\Local\\Foo Bar\r\n\r\nOf course, you or the user are free to override this behavior and set the\r\nlocation to wherever you want.\r\n\r\nEncryption Backends\r\n-------------------\r\n\r\nKeyring_ *is the package used to manage encryption*.\r\n\r\nThe default behavior is to select the most secure backend supported by the\r\nuser's platform. To give you an idea, the following Keyring backends would\r\nlikely be returned:\r\n\r\nMac OS X:\r\n Keychain_\r\n\r\nUnix (with secretstorage installed):\r\n `Secret Service`_\r\n\r\nUnix (with dbus installed):\r\n kwallet_\r\n\r\nWindows:\r\n `Windows Credential Locker`_\r\n\r\nOf course, you or the user are free to override the defaults. The user can\r\nalso change their Keyring backend preferences system-wide from the\r\ncommand-line or via configuration files. JSON Config will then use the\r\nuser's preferred Keyring backend unless told otherwise.\r\n \r\nHow Do You Want Your Data Served?\r\n---------------------------------\r\n\r\nBox_ *is the package used to handle the data access wrappers*.\r\n\r\nPLAIN\r\n No wrapping. Organic, free-ranging data. If it's JSON serializable\r\n we'll work with it. This is the default.\r\n\r\nBOXED\r\n Delivers your data in a Box_; a Python dictionary that supports both\r\n recursive dot notation access and standard dictionary key access. If\r\n you have a fear of being *boxed-in*, don't panic! You can get in and\r\n out of the box at anytime, see the data conversion section below.\r\n\r\nFROZEN\r\n Ices the data in a ``Frozen Box``, same as BOXED except immutable; will\r\n also be hashable if all objects in it are immutable.\r\n\r\nNESTED\r\n Nests the data in a default dictionary that can automatically create\r\n missing intermediary keys. It's also very forgiving when retrieving\r\n data from the dictionary; for example, it won't throw an error if a key\r\n doesn't exist. Instead, it'll return None; even if the key's nested\r\n and multiple keys are missing.\r\n\r\nData Conversion\r\n---------------\r\n\r\n* ``BOXED``, ``FROZEN`` and ``NESTED`` are all subclasses of dicts or\r\n defaultdicts. You can convert back-and-forth between any of them at any\r\n time.\r\n\r\n* The objects listed above are Mappings, if your data object is not\r\n a Mapping then use ``PLAIN`` to free yourself of all of the trappings.\r\n With ``PLAIN`` it's just you and your buddy Python; we get out of the way.\r\n\r\n============================================\r\nJSON Config Frees You to Do What You Do Best\r\n============================================\r\n\r\nSpend more time solving real-world problems, less time coding, testing &\r\ntroubleshooting configuration issues.\r\n\r\nReferences\r\n----------\r\n\r\n.. target-notes::\r\n\r\n.. _documentation:\r\n https://jsonconfig.readthedocs.io/en/latest/config/examples.html\r\n\r\n.. _Click:\r\n http://github.com/pallets/click\r\n\r\n.. _Keyring:\r\n https://github.com/jaraco/keyring\r\n\r\n.. _Box:\r\n http://github.com/cdgriffith/Box\r\n\r\n.. _Keychain:\r\n https://en.wikipedia.org/wiki/Keychain_%28software%29\r\n\r\n.. _Secret Service:\r\n http://standards.freedesktop.org/secret-service\r\n\r\n.. _kwallet:\r\n https://en.wikipedia.org/wiki/KWallet\r\n\r\n.. _dbus:\r\n https://pypi.python.org/pypi/dbus-python\r\n\r\n.. _Windows Credential Locker:\r\n https://technet.microsoft.com/en-us/library/jj554668.aspx\r\n\r\n.. _3rd-party Keyring encryption backends:\r\n http://github.com/jaraco/keyrings.alt\r\n\r\n.. |Build Status| image:: https://travis-ci.org/json-transformations/jsonconfig.svg?branch=master\r\n :target: https://travis-ci.org/json-transformations/jsonconfig\r\n.. |Coverage Status| image:: https://coveralls.io/repos/github/json-transformations/jsonconfig/badge.svg?branch=master\r\n :target: https://coveralls.io/github/json-transformations/jsonconfig?branch=master\r\n.. |Version Status| image:: https://badge.fury.io/py/jsonconfig-tool.svg\r\n :target: https://pypi.python.org/pypi/jsonconfig-tool\r\n.. |Dependency Updates| image:: https://pyup.io/repos/github/json-transformations/jsonconfig/shield.svg\r\n :target: https://pyup.io/repos/github/json-transformations/jsonconfig/", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/json-transformations/jsonconfig", "keywords": "config configuration json encryption passwords simple easy", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jsonconfig-tool", "package_url": "https://pypi.org/project/jsonconfig-tool/", "platform": "", "project_url": "https://pypi.org/project/jsonconfig-tool/", "project_urls": { "Homepage": "http://github.com/json-transformations/jsonconfig" }, "release_url": "https://pypi.org/project/jsonconfig-tool/1.5/", "requires_dist": null, "requires_python": "", "summary": "Configuration made easy: JSON, encrypted, envvars, etc.", "version": "1.5" }, "last_serial": 3842989, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "aa797907b0899af8ed67fb7e60dfd9ad", "sha256": "73ff0399bae6da6418c2acf54536097543f836545098545c3365de2b7ee2016b" }, "downloads": -1, "filename": "jsonconfig_tool-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aa797907b0899af8ed67fb7e60dfd9ad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8618, "upload_time": "2017-08-23T00:54:16", "url": "https://files.pythonhosted.org/packages/62/45/38b79a88046549cded653df9580a53d4431467e30643803cdd58f40c7530/jsonconfig_tool-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ce412191b3a97c316831f6b9a5cba05", "sha256": "dd5f03712e14975748f3a3113c1fd2939117dc6e17e95dfca765057a1066f4d9" }, "downloads": -1, "filename": "jsonconfig-tool-0.3.tar.gz", "has_sig": false, "md5_digest": "1ce412191b3a97c316831f6b9a5cba05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10448, "upload_time": "2017-08-23T00:51:09", "url": "https://files.pythonhosted.org/packages/e6/39/8480d1f6f175099d5603933bc669263359f881e94e0339bd75d58b695cc5/jsonconfig-tool-0.3.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "4061917ea86c54673964caf854f7e78e", "sha256": "9c7bcc6915cd7675d834730853b8f1109ca19d66ee7b647de3ba84dbe532c30c" }, "downloads": -1, "filename": "jsonconfig_tool-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4061917ea86c54673964caf854f7e78e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8303, "upload_time": "2017-10-20T20:49:18", "url": "https://files.pythonhosted.org/packages/62/15/72b0476a21770896029526f9577e8b7e9ea95ad40078c9a2cbcc4215fa91/jsonconfig_tool-0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2edc5eb11e52857e248d35fd4ab78f39", "sha256": "952098774d5a68e86139a04d0b7cc1e467fad50f9734569679e1f2abf6661bfa" }, "downloads": -1, "filename": "jsonconfig-tool-0.9.tar.gz", "has_sig": false, "md5_digest": "2edc5eb11e52857e248d35fd4ab78f39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12035, "upload_time": "2017-09-11T00:22:18", "url": "https://files.pythonhosted.org/packages/45/7c/d5335b2ff386b5ae2e417c1a8de06a7a243afc1ebd18b8eebb1f5d315c25/jsonconfig-tool-0.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "aed29486bd8c2ec809f6a2d0927f2604", "sha256": "fe93e42c686f990a6a71b58e3116fd7589e32a4a2e11d1367df0c8538d5090a2" }, "downloads": -1, "filename": "jsonconfig_tool-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aed29486bd8c2ec809f6a2d0927f2604", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8369, "upload_time": "2017-10-20T20:49:19", "url": "https://files.pythonhosted.org/packages/6c/24/8b0c5544b8252fd6ccd00eadac870995b5fcfccef3b1555e0d4b07b30b8e/jsonconfig_tool-1.0-py2.py3-none-any.whl" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "12847565e8ce6bac361fe938ef9cbc70", "sha256": "206a73257a1dacb463ff2bd95a69059b95de666fb150a727d0a7c6ea4375e829" }, "downloads": -1, "filename": "jsonconfig_tool-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12847565e8ce6bac361fe938ef9cbc70", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8356, "upload_time": "2017-11-16T01:46:22", "url": "https://files.pythonhosted.org/packages/88/15/5a88630c57253e692a5313fcdd784a762e07bc04bb577946ad0af32d870a/jsonconfig_tool-1.1-py2.py3-none-any.whl" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "5cb884525a917236e53834372095cac5", "sha256": "f4d88d4634e542f85b85b43a0605513d0fe834f0e086b60c5ba847729ce93602" }, "downloads": -1, "filename": "jsonconfig_tool-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5cb884525a917236e53834372095cac5", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8434, "upload_time": "2018-02-14T03:24:09", "url": "https://files.pythonhosted.org/packages/7e/6b/c856daa2bcafac27e2648509c597753b9e6630bcd3b241dbb50fcedfb5d2/jsonconfig_tool-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "810a73203d5c7634382138a53c78b6ec", "sha256": "e84ea7197f7c57a0feb709abcc4a0a2109c79c11874ec5717a435bc58a0ea400" }, "downloads": -1, "filename": "jsonconfig-tool-1.2.tar.gz", "has_sig": false, "md5_digest": "810a73203d5c7634382138a53c78b6ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12133, "upload_time": "2018-02-14T03:24:06", "url": "https://files.pythonhosted.org/packages/30/2f/8f192700e3d79e0e476f840a8a46f24345dfdb41ac6b390df46f021f9784/jsonconfig-tool-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d88f7cfe6e35906e5a5da3aa774a7131", "sha256": "c54bd76b21d312b6005d5110f97f73a6cb0e4600a1ef9772c288096736ab4385" }, "downloads": -1, "filename": "jsonconfig_tool-1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d88f7cfe6e35906e5a5da3aa774a7131", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8470, "upload_time": "2018-04-20T01:25:10", "url": "https://files.pythonhosted.org/packages/83/e2/ab5be0207df6a46c760a87396873213dd768b9f7aedb475b643226d1eedc/jsonconfig_tool-1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c41c5b49bb768b174bda301e0e28ef0", "sha256": "cc05fdbd7a0f9b624a3f7326597f1817acec1056ed9f29a5fdf3e5d9c6c10b61" }, "downloads": -1, "filename": "jsonconfig-tool-1.3.tar.gz", "has_sig": false, "md5_digest": "8c41c5b49bb768b174bda301e0e28ef0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12038, "upload_time": "2018-04-20T01:25:08", "url": "https://files.pythonhosted.org/packages/e8/fe/a9849061d1312bf9c02375e115742b255bdf00e98abfda61d6403391713c/jsonconfig-tool-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "966309c574ed45c9f34ee4602a158073", "sha256": "d510f2f3cdf943424d5511daec58c3a658937f8402ac1e1e4d2b979812e12c4e" }, "downloads": -1, "filename": "jsonconfig_tool-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "966309c574ed45c9f34ee4602a158073", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8529, "upload_time": "2018-04-20T02:25:08", "url": "https://files.pythonhosted.org/packages/a5/6d/0e6c985762cc0374901c95401c54aa5d7eafd71dfaa03711cac75c31608f/jsonconfig_tool-1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c63ee425ebf0cf1388c584e8008cdccf", "sha256": "2c41025540ae2ae78bb5f70c7f2575d4836a9f46318037ac09afddd6575c533f" }, "downloads": -1, "filename": "jsonconfig-tool-1.4.tar.gz", "has_sig": false, "md5_digest": "c63ee425ebf0cf1388c584e8008cdccf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12085, "upload_time": "2018-04-20T02:25:06", "url": "https://files.pythonhosted.org/packages/11/20/1e993badbb670025c10a68e41acb969b35a948f597c500a8f1ab7362b685/jsonconfig-tool-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "a00b8da2b9e18df5bd9509df66aecbe5", "sha256": "7ef48839cc65661ae794b65245f3ab77be8e36d7e561e0bc2c0c646ba27777ec" }, "downloads": -1, "filename": "jsonconfig_tool-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a00b8da2b9e18df5bd9509df66aecbe5", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8388, "upload_time": "2018-05-08T03:36:19", "url": "https://files.pythonhosted.org/packages/ca/b1/b11d6539e0030b507d41f41f4bf0c5e0b3ca284a4565e17239443d7fb726/jsonconfig_tool-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cea5ba627ecefdc688058ce5a57bd62d", "sha256": "8858da410e735dd35c3cbfd5658a2bf437fa9f5479d22053b7b60b68f2dec3d4" }, "downloads": -1, "filename": "jsonconfig-tool-1.5.tar.gz", "has_sig": false, "md5_digest": "cea5ba627ecefdc688058ce5a57bd62d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11858, "upload_time": "2018-05-08T03:36:18", "url": "https://files.pythonhosted.org/packages/69/3c/e39567f03693fffadaf4a6342ccd0ed6f66e5add106ae30d8312b2e1acb8/jsonconfig-tool-1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a00b8da2b9e18df5bd9509df66aecbe5", "sha256": "7ef48839cc65661ae794b65245f3ab77be8e36d7e561e0bc2c0c646ba27777ec" }, "downloads": -1, "filename": "jsonconfig_tool-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a00b8da2b9e18df5bd9509df66aecbe5", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8388, "upload_time": "2018-05-08T03:36:19", "url": "https://files.pythonhosted.org/packages/ca/b1/b11d6539e0030b507d41f41f4bf0c5e0b3ca284a4565e17239443d7fb726/jsonconfig_tool-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cea5ba627ecefdc688058ce5a57bd62d", "sha256": "8858da410e735dd35c3cbfd5658a2bf437fa9f5479d22053b7b60b68f2dec3d4" }, "downloads": -1, "filename": "jsonconfig-tool-1.5.tar.gz", "has_sig": false, "md5_digest": "cea5ba627ecefdc688058ce5a57bd62d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11858, "upload_time": "2018-05-08T03:36:18", "url": "https://files.pythonhosted.org/packages/69/3c/e39567f03693fffadaf4a6342ccd0ed6f66e5add106ae30d8312b2e1acb8/jsonconfig-tool-1.5.tar.gz" } ] }