{ "info": { "author": "F. Brekeveld", "author_email": "f.brekeveld@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "yachain\n=======\n\n.. image:: https://travis-ci.org/hootnot/yachain.svg?branch=master\n :target: https://travis-ci.org/hootnot/yachain\n\n.. image:: https://img.shields.io/pypi/pyversions/yachain.svg\n :target: https://github.com/hootnot/yachain\n\n.. image:: https://coveralls.io/repos/github/hootnot/yachain/badge.svg?branch=master\n :target: https://coveralls.io/github/hootnot/yachain?branch=master\n\n\nYAML access on chained attribute names.\n\nInstall\n-------\n\n.. code-block:: shell\n\n $ pip install yachain\n\n\nSuppose we have:\n\n.. code-block:: yaml\n\n ---\n # config\n network:\n name: developers\n gitserver:\n ip: 192.168.178.101\n netmask: 255.255.255.0\n gateway: 192.168.178.1\n packages:\n - yum\n - gcc\n\n\nWith *yachain* we can access this as:\n\n.. code-block:: python\n\n >>> import yachain\n\n >>> c = yachain.Config().load(\"netw.cfg\")\n >>> print(c[\"network::gitserver::gateway\"])\n 192.168.178.1\n >>> print(c[\"network::gitserver::packages\"])\n ['yum', 'gcc']\n\n\nReferences to files / paths independent from environment\n--------------------------------------------------------\n\nReferences to files and paths can be used relative and absolute.\nIn case an attribute ends on *path* or *file* then the path can be\nprefixed automatically when operation from a virtual environment is detected.\nThe works by default upper and lower case and can be overriden.\n\nUsing the *prefix* makes it possible to use the same config in different\nenvironments.\n\n.. code-block:: python\n\n import yachain\n import yaml\n import sys\n import os\n\n # yaml config:\n yc = \"\"\"\n ---\n app:\n logfile: var/log/app.log\n textrules: var/app.app.txt\n database_path: var/app/db\n database_file: /var/app/db/db.txt\n database_name: db.txt\n \"\"\"\n\n PREFIX = \"/\" if not hasattr(sys, 'real_prefix') else sys.prefix\n # CONFIG_FILE = os.path.join(PREFIX, \"etc/app/app.cfg\")\n config = yachain.Config(prefix=PREFIX, configdata=yaml.load(yc))\n\n\n for A in [\"logfile\",\n \"textrules\",\n \"database_path\",\n \"database_file\",\n \"database_name\"]:\n k = \"app::{}\".format(A)\n print config[k]\n\n\nWhen run from a virtual environment, this will give us:\n\n.. code-block:: bash\n\n /home/user/venv/var/log/app.log\n var/app.app.txt\n /home/user/venv/var/app/db\n /var/app/db/db.txt\n db.txt\n\n\nSo, as expected, the *logfile* and *database_path* got the PREFIX.\n\nWhen run from a non-virtual environment, this will give us:\n\n.. code-block:: bash\n\n /var/log/app.log\n var/app.app.txt\n /var/app/db\n /var/app/db/db.txt\n db.txt\n\n\nSo, as expected, prefixed with \"/\".\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/hootnot/yachain", "keywords": "YAML parser configuration", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "yachain", "package_url": "https://pypi.org/project/yachain/", "platform": "", "project_url": "https://pypi.org/project/yachain/", "project_urls": { "Homepage": "http://github.com/hootnot/yachain" }, "release_url": "https://pypi.org/project/yachain/0.1.4/", "requires_dist": null, "requires_python": "", "summary": "YAML parser", "version": "0.1.4" }, "last_serial": 5267275, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "d7eb9436403cc875a3378b9809e730d0", "sha256": "16d210a95f69de742650c5fbe75423ccc0f1247ea756ad36e132fd0f543dd3a0" }, "downloads": -1, "filename": "yachain-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7eb9436403cc875a3378b9809e730d0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6367, "upload_time": "2017-06-12T13:42:39", "url": "https://files.pythonhosted.org/packages/0c/74/bf8a280dfc908bf18e23d94a45e6a77493597e7ef37dc4074f94f728eec1/yachain-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7f77bf3a35b7ba67796b17750a757d6", "sha256": "bbf8ab2898cf38ab340e9a090a5440c1a6b28c1c5fc5de014ec5a4c10c68ddcb" }, "downloads": -1, "filename": "yachain-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a7f77bf3a35b7ba67796b17750a757d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5220, "upload_time": "2017-06-12T13:51:26", "url": "https://files.pythonhosted.org/packages/b1/51/e080351e316c0c0dd70768700db05fdfec39b395c6c6ece93548107d59ce/yachain-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f4efbb464c1493217a13053427e875a4", "sha256": "5a3688fb08697fd7f8ff69892d37e8df225e4d85d0ba8f66db37ef1fa090be24" }, "downloads": -1, "filename": "yachain-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4efbb464c1493217a13053427e875a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6352, "upload_time": "2019-05-14T12:57:02", "url": "https://files.pythonhosted.org/packages/9d/89/572e2b36353afb052caf2887667c084950bc3fea2be65e37d080a39ab493/yachain-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "310be03fc0c95ae25f2d81d46287f450", "sha256": "f5cbad2ccae848daa88a064b809494a52ca1c8ea49dbea20c548b46ff26959fb" }, "downloads": -1, "filename": "yachain-0.1.4.tar.gz", "has_sig": false, "md5_digest": "310be03fc0c95ae25f2d81d46287f450", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5248, "upload_time": "2019-05-14T12:57:03", "url": "https://files.pythonhosted.org/packages/8b/1e/09a604ac7a50cb84a247ef69818cee973978f8e2bb55b93818ae08d221f7/yachain-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f4efbb464c1493217a13053427e875a4", "sha256": "5a3688fb08697fd7f8ff69892d37e8df225e4d85d0ba8f66db37ef1fa090be24" }, "downloads": -1, "filename": "yachain-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4efbb464c1493217a13053427e875a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6352, "upload_time": "2019-05-14T12:57:02", "url": "https://files.pythonhosted.org/packages/9d/89/572e2b36353afb052caf2887667c084950bc3fea2be65e37d080a39ab493/yachain-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "310be03fc0c95ae25f2d81d46287f450", "sha256": "f5cbad2ccae848daa88a064b809494a52ca1c8ea49dbea20c548b46ff26959fb" }, "downloads": -1, "filename": "yachain-0.1.4.tar.gz", "has_sig": false, "md5_digest": "310be03fc0c95ae25f2d81d46287f450", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5248, "upload_time": "2019-05-14T12:57:03", "url": "https://files.pythonhosted.org/packages/8b/1e/09a604ac7a50cb84a247ef69818cee973978f8e2bb55b93818ae08d221f7/yachain-0.1.4.tar.gz" } ] }