{ "info": { "author": "Alekey Osadchuk", "author_email": "osdalex@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "# ConfJ\n\nPackage is used to load config from json files. Path to config can lead either\nto directory with a bunch of json files, or to a single json file. Contents is\nparsed and stored into config object, allowing attribute-based access to \ndifferent options.\n\n[![Build Status](https://travis-ci.com/aleosd/confj.svg?branch=master)](https://travis-ci.com/aleosd/confj)\n[![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/aleosd)\n\n## Installation\n\nPackage can be installed with pip:\n\n```bash\npip install confj\n```\n\n## Usage\n\nUsage of this utility is very simple: import `Config` class and load your config\nwith `load` method. Path to configs might be set via environment variable\n`JSON_CONFIG_PATH` or passed directly to the `load` call:\n\n```python\nfrom confj import Config\n\n\nconfig = Config()\nconfig.load('/path/to/config')\n```\n\nIf path to config is a directory, each file will be available as an attribute\nof `config` object. Otherwise, if path is a file, `config` object will store\nparsed json from given file, allowing access to data via attributes.\n\nConfig can be loaded during initialization step, just set `autoload` parameter\nto `True`. Optionally path to load configs from might be passed during\ninitialization.\n\n```python\nfrom confj import Config\n\n\nconfig = Config(default_config_path='/path/to/config', autoload=True)\n```\n\nAfter config is loaded, it's options are accessible via attributes of `config`\nobject, ot `dict`-like syntax:\n\n```python\n>>> config.username\n'user'\n\n>>> config['username']\n'user'\n\n>>> config.get('username')\n'user'\n\n``` \n\n### Config search precedence\n\n1. If you directly call `load` method with `config_path` passed as parameter,\nthen this path is used.\n2. If no `config_path` provided or `autoload` option was used,\nthen `default_config_path` from initialization step is used.\n3. The last option is to set `JSON_CONFIG_PATH` environment value. If the search\nis failed on all three steps, then `ConfigException` is raised.\n\n\n### Load from python object\n\nConfig may be loaded from python object:\n\n```python\nfrom confj import Config\n\n\nconfig = Config()\ndata = {'username': 'user', 'password': 'pass'}\n\n\nconfig.loaf_from_obj(data)\n\nassert config.username == 'username'\nassert config.password == 'pass'\n\n```\n\n### Set/change config data\n\nConfig data may be changed or added to current config with `set` method:\n\n```python\nfrom confj import Config\n\n\nconfig = Config()\ndata = {'username': 'user', 'password': 'pass'}\n\n\nconfig.loaf_from_obj(data)\nconfig.set('connection', {'port': 5432, 'host': 'localhost'})\n\nassert config.connetcion.port == 5432\nassert config.connection.host == 'localhost'\n\n```\n\n### Available methods\n\nAll `config` object's method names are starting with `c_`, to avoid possible\nclash with possible config options\n\n* `c_format` returns pretty formatted sting representing config;\n* `c_pprint` outputs formatted config to stdout;\n* `c_validate` validates config against given json schema. See `Validation`\nsection below.\n\n### Validation\n\nConfig must be a valid json object, so we can validate it against provided\njson schema. To use config validation `jsonschema` package must be installed.\nIt might be done as a separate step as\n\n```bash\npip install jsonschema\n```\n\nor during `confj` installation time:\n\n```bash\npip install confj[validation]\n```\n\nThen config validation can be done with `c_validate` method:\n\n```python\nfrom confj import Config\n\nconfig = Config(default_config_path='/path/to/config', autoload=True)\nschema = {\"type\": \"object\"}\nis_valid = config.c_validate(schema)\n```\n\nBy default `c_validate` will return either `True` of `False`. To see actual\nvalidation error just pass `do_raise=True` as additional parameter, and catch\n`ValidationError` later:\n\n```python\nfrom confj import Config\nfrom jsonschema import ValidationError\n\nconfig = Config(default_config_path='/path/to/config', autoload=True)\nschema = {\"type\": \"object\"}\n\ntry:\n config.c_validate(schema, do_raise=True)\nexcept ValidationError as err:\n print(f'Looks like config is invalid: {err}')\n```\n\nTo read more on json validation one can at\n[json-schema.org](https://json-schema.org/understanding-json-schema/index.html)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aleosd/confj", "keywords": "json configs loader", "license": "", "maintainer": "", "maintainer_email": "", "name": "confj", "package_url": "https://pypi.org/project/confj/", "platform": "", "project_url": "https://pypi.org/project/confj/", "project_urls": { "Bug Reports": "https://github.com/aleosd/confj/issues", "Homepage": "https://github.com/aleosd/confj", "Say Thanks!": "https://saythanks.io/to/aleosd", "Source": "https://github.com/aleosd/confj/" }, "release_url": "https://pypi.org/project/confj/0.2.3/", "requires_dist": null, "requires_python": ">=3.5, <4", "summary": "Load configs from json files", "version": "0.2.3" }, "last_serial": 5688275, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f5afaa4dd308064c6516418235a2fb98", "sha256": "331249350b2edb3c503b18e97af8411fb80f52ee3b1c6f945326f97db80a335e" }, "downloads": -1, "filename": "confj-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f5afaa4dd308064c6516418235a2fb98", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 2962, "upload_time": "2019-04-22T01:40:59", "url": "https://files.pythonhosted.org/packages/ea/c5/3364c09a2b8b8091fe136e77f6c9ad39570790449e2f05cd39b69f0c2f33/confj-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "1925d76b8eefc8a9982f78130ccf1c9d", "sha256": "f3589c037b19daff58871f46c2e06717e6a820b9dcc2dd83486d6902620809e2" }, "downloads": -1, "filename": "confj-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1925d76b8eefc8a9982f78130ccf1c9d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 3012, "upload_time": "2019-04-22T03:13:15", "url": "https://files.pythonhosted.org/packages/8e/f0/cd75a4db632f1d513b7c40b2f733aeaf2e00ef5905c76277fc83a960df71/confj-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e53cd088da4635117cea6d5d59f3ca2f", "sha256": "e3d5f0ca3a20ce660d8cdcb79804e7e86a69b6c7134ec1a08b26eeddca8a89b6" }, "downloads": -1, "filename": "confj-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e53cd088da4635117cea6d5d59f3ca2f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 3473, "upload_time": "2019-04-28T08:20:39", "url": "https://files.pythonhosted.org/packages/39/98/a62e6b2f68249bee38949b56ca8bdf87121844e9f97962ccff9d19d21084/confj-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1915296c748ba4042545120ef2ca5bdd", "sha256": "63e27b4f5df6f1c50148095ba828d04916bc215f05579a56c2e0b2cf91251cd1" }, "downloads": -1, "filename": "confj-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1915296c748ba4042545120ef2ca5bdd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 4759, "upload_time": "2019-06-01T11:09:52", "url": "https://files.pythonhosted.org/packages/aa/56/9b5008fc57bf13e56864665cb94fa2bc4d8c54bc36b14ce53b1f68b0626b/confj-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "45a5d27d3c7e26196a911045656064cc", "sha256": "17e6ea2c4c27be609ed2b1200bb43c2d8931685107b811d1478fca78e7296b13" }, "downloads": -1, "filename": "confj-0.2.0.tar.gz", "has_sig": false, "md5_digest": "45a5d27d3c7e26196a911045656064cc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 4975, "upload_time": "2019-06-23T07:43:38", "url": "https://files.pythonhosted.org/packages/d5/66/81f8bfbd1a0d00372d244a2d72a712ad5ff7f51c27f18cf8a7a2c750eca3/confj-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "81c79a1934ba274cac753dd08c8bd33a", "sha256": "8341c9fddd97571e80f220f596d858935e297d6c66c029c8bf952dd787cdab63" }, "downloads": -1, "filename": "confj-0.2.1.tar.gz", "has_sig": false, "md5_digest": "81c79a1934ba274cac753dd08c8bd33a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 4992, "upload_time": "2019-07-26T02:18:08", "url": "https://files.pythonhosted.org/packages/c5/e1/055352568921f0d4fe3c0ce18a4e885e1e5346dc37cf3b23f449a017e8c6/confj-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f10359c244f2f4de6ff6e93b83caa6c7", "sha256": "4a6b3a14f9f7f3de9f16a4278a0c4c0c8141edcc5178c337922a089ec56bb7ce" }, "downloads": -1, "filename": "confj-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f10359c244f2f4de6ff6e93b83caa6c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 5408, "upload_time": "2019-08-03T03:31:35", "url": "https://files.pythonhosted.org/packages/60/8f/02108bc351459c00074a1910c4ffae475702ab5af6d63d902fe341cd388f/confj-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "daeb7a64f2a9c4abf17ae841ec32c47c", "sha256": "0eae3d252c6be0067d12dd080a8959fb4e99ce474c982d8dda1eb01f88bb2c07" }, "downloads": -1, "filename": "confj-0.2.3.tar.gz", "has_sig": false, "md5_digest": "daeb7a64f2a9c4abf17ae841ec32c47c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 5409, "upload_time": "2019-08-16T15:44:42", "url": "https://files.pythonhosted.org/packages/bd/88/ec7713aca77082e45c7751435f43a9405c0df43df91189ec3908895c9e74/confj-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "daeb7a64f2a9c4abf17ae841ec32c47c", "sha256": "0eae3d252c6be0067d12dd080a8959fb4e99ce474c982d8dda1eb01f88bb2c07" }, "downloads": -1, "filename": "confj-0.2.3.tar.gz", "has_sig": false, "md5_digest": "daeb7a64f2a9c4abf17ae841ec32c47c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <4", "size": 5409, "upload_time": "2019-08-16T15:44:42", "url": "https://files.pythonhosted.org/packages/bd/88/ec7713aca77082e45c7751435f43a9405c0df43df91189ec3908895c9e74/confj-0.2.3.tar.gz" } ] }