{ "info": { "author": "Jakub Janoszek", "author_email": "kuba.janoszek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3" ], "description": "confy\n=====\n\nPragmatic & flexible configuration loader that makes your app settings clean and sexy.\n\n\n.. image:: https://badge.fury.io/py/confy.png\n :target: https://badge.fury.io/py/confy\n\n.. image:: https://api.travis-ci.org/jqb/confy.png?branch=master\n :target: https://travis-ci.org/jqb/confy\n\n.. image:: https://coveralls.io/repos/jqb/confy/badge.png?branch=master\n :target: https://coveralls.io/r/jqb/confy?branch=master\n\n.. image:: https://pypip.in/d/confy/badge.png\n :target: https://crate.io/packages/confy/\n\n\nYou can find documentation here: https://confy.readthedocs.org/en/latest/\n\n\nSupported platforms\n-------------------\n\n* Python 2.6\n* Python 2.7\n* Python 3.2\n* Python 3.3\n\n\nIdea\n----\n\nIdea is simple and has been developed by (probably not only) django\ncommunity, but has been never standardized. Here it is:\n\n\n1) keep your configuration in separate python modules inside your\n settings/conf/config/ *module* like this::\n\n settings/\n |-- __init__.py => init used for loading code\n |-- base.py => this should be common stuff used in all environments\n |-- development.py => change/add all you need to run the app in development\n |-- production.py => change/add all you need to run the app in production\n `-- local.py => everything that depends on your machine you currently\n working on for your own (and everybody in a team)\n safety - remove it from version control\n\n\n2) load those files in the order you want to get the\n configuration. Use environment variables to decide which settings\n should be loaded. Assuming the variable is called ``ENV``, here's\n the code that loads the configuration inside settings/__init__.py\n\n .. code-block:: python\n\n import os\n import confy\n\n confy = confy.loader(__file__)\n\n config = confy.merge(\n confy.from_modules('base', os.environ.get('ENV', 'development')),\n confy.from_modules('local', silent=True),\n )\n\n\n3) so in the end of the day you can simply import it easily and\n everythink is setup for you\n\n .. code-block:: python\n\n >>> from settings import config\n >>> # DONE!\n >>>\n >>> config.DB_USER # etc...\n\n\nThis is the basic stuff but \"confy\" has a lot more to offer.\n\n\nWhy\n---\n\n1) I believe in clean and elegant solutions.\n\n\n2) *.ini and \"configparser\"-like parsers (eg from pylons/pyramid) are\n great but there are few issues with them::\n\n => Each setting has a type. And you have to write code that changes text into other types.\n\n => __getitem__ syntax is verbose, actually it's too verbose in some cases\n\n You don't have this problem when you keep your config/settings\n inside simple python files, however there is no standardized\n one-and-only-one-good-way how to keep and load those kind of files.\n\n\n3) Recently I've found interesting presentation\n (https://speakerdeck.com/brutasse/stop-writing-settings-files)\n about configuration injected from environment variables. And I love\n the idea (untill slide No 12), but it has the same issues as *ini\n files\n\n\nConfiguration sources\n---------------------\n\nWith \"confy\" you can simply load the configuration from any source you\nwant, from any place of your system. That gives you flexibility on how\nand where you want to keep configuration.\n\n.. code-block:: python\n\n import os\n import confy\n\n confy = confy.loader(__file__)\n\n config = confy.merge(\n\n # primarily read modules\n confy.from_modules('base', os.environ.get('ENV', 'development')),\n confy.from_modules('local', silent=True), # no complains if no 'local.py'\n\n # if you'd like to setup things directly through your\n # environment variables, here's how you can do that\n confy.from_environ_vars([\n 'DB_USER',\n 'DB_PASS'\n ], silent=True), # if environ vars are not set it's not a problem\n\n # if need additional data from ini files - no problem\n confy.from_ini('~/.project_sensitive_data.ini', silent=True),\n\n # additional configuration might be kept under given directory\n # in envdir-like manner (http://cr.yp.to/daemontools/envdir.html).\n # If settings/ directory contains \"envvars\" dir all the variables\n # will be loaded into a configuration\n confy.from_dirs('envvars', silent=True),\n )\n\n\nConfiguration are loaded one after another, so please keep in mind\nthat variables might override each other.\n\n\nInstallation\n------------\n\nSimple and easy::\n\n $ pip install confy\n\n\nAuthors\n-------\n\n* Jakub Janoszek (kuba.janoszek@gmail.com)\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.python.org/pypi/confy", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "confy", "package_url": "https://pypi.org/project/confy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/confy/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://pypi.python.org/pypi/confy" }, "release_url": "https://pypi.org/project/confy/0.3.8/", "requires_dist": null, "requires_python": null, "summary": "UNKNOWN", "version": "0.3.8" }, "last_serial": 847800, "releases": { "0.2beta": [ { "comment_text": "", "digests": { "md5": "df795f325ae36a779f2118cd679c6522", "sha256": "f1b672156576f35f8433491d783acc6d426388f251f97e6bbdea7363955072d6" }, "downloads": -1, "filename": "confy-0.2beta.tar.gz", "has_sig": false, "md5_digest": "df795f325ae36a779f2118cd679c6522", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5163, "upload_time": "2013-06-16T19:07:18", "url": "https://files.pythonhosted.org/packages/d7/aa/f64c86f78e6551971b2a189933c651d05ddff68346e26b8f0b8ec9097786/confy-0.2beta.tar.gz" } ], "0.3.1beta": [ { "comment_text": "", "digests": { "md5": "1ab350c79975ab522acb551f0a89715e", "sha256": "8aac09191c081733d692ae4f3c1cdf12716d19faa3013ae605e36d2a34388ff2" }, "downloads": -1, "filename": "confy-0.3.1beta.tar.gz", "has_sig": false, "md5_digest": "1ab350c79975ab522acb551f0a89715e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6100, "upload_time": "2013-07-21T23:12:52", "url": "https://files.pythonhosted.org/packages/9a/0b/a385a91acbe304ef5fb3c60b021c3be30f79987e56441b5072cb95855465/confy-0.3.1beta.tar.gz" } ], "0.3.2beta": [ { "comment_text": "", "digests": { "md5": "82e39a96ee9dbe0ad819a428ad59e841", "sha256": "b2e3fdf592aee9ceaf25d3cc6f580b3e87ba933bbadc3647abd7a97cc4e7cbaf" }, "downloads": -1, "filename": "confy-0.3.2beta.tar.gz", "has_sig": false, "md5_digest": "82e39a96ee9dbe0ad819a428ad59e841", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6211, "upload_time": "2013-07-25T22:46:26", "url": "https://files.pythonhosted.org/packages/bc/d2/3947e34a44cac8fb613e459ab27967765add249a39f56f14aba590c16b98/confy-0.3.2beta.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "e12058001f99a2a6a15b6973e3d15b80", "sha256": "e849be56f69847acc86b29054a5015a504106cb9943884b285d8846835539b6b" }, "downloads": -1, "filename": "confy-0.3.3.tar.gz", "has_sig": false, "md5_digest": "e12058001f99a2a6a15b6973e3d15b80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6317, "upload_time": "2013-07-28T19:37:38", "url": "https://files.pythonhosted.org/packages/ff/c0/f48dfbb27a1d1aa8d8c7dff9be7ac504d7bfd31d43cd25231317730671f7/confy-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "1d8c99f441441290b6f3e323d5bc8e12", "sha256": "6d876a19d2bd7deb30680f3f79665cb34f2113065e4503cea897c90919f10c36" }, "downloads": -1, "filename": "confy-0.3.4.tar.gz", "has_sig": false, "md5_digest": "1d8c99f441441290b6f3e323d5bc8e12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6524, "upload_time": "2013-08-03T22:51:46", "url": "https://files.pythonhosted.org/packages/10/a7/1731252848dcd56359ad8c1dd340e2580b47d149939bf9ca59f61727d065/confy-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "f15592db9630463dcbbd4aec4c1e3e6b", "sha256": "2936f9953b43408bb92f924bd8f136136c2ac9d8030a1733f801f4bb401f05bb" }, "downloads": -1, "filename": "confy-0.3.5.tar.gz", "has_sig": false, "md5_digest": "f15592db9630463dcbbd4aec4c1e3e6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12043, "upload_time": "2013-08-04T18:24:29", "url": "https://files.pythonhosted.org/packages/01/91/8525a86491d3b58f4acd0e08f46976068c823dffcc96e0f0c768c762983f/confy-0.3.5.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "5edb641c0b41d6c665475d19b9cd26f0", "sha256": "70307f04a676e59f4781405f19b596c8f7e06e31c7cc1b788b70fd074184a4b2" }, "downloads": -1, "filename": "confy-0.3.7.tar.gz", "has_sig": false, "md5_digest": "5edb641c0b41d6c665475d19b9cd26f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12910, "upload_time": "2013-08-18T21:45:00", "url": "https://files.pythonhosted.org/packages/34/c6/5284d972894a26b55415a1c73c740df85493ba3f3d8a1893832c7fcb3476/confy-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "cdbc8c9fa8746e4c764272405fde3bc0", "sha256": "0db18cedd50d85f8e25d06972583b36e34f2ab7d5dca042008163a1267da922e" }, "downloads": -1, "filename": "confy-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cdbc8c9fa8746e4c764272405fde3bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13053, "upload_time": "2013-08-24T11:20:53", "url": "https://files.pythonhosted.org/packages/a9/88/16a6aefa08c6275845c0abecadc7d04120d85d4d117fe063b5f1d6c76d68/confy-0.3.8.tar.gz" } ], "0.3beta": [ { "comment_text": "", "digests": { "md5": "68e1e6b51407201fd891bd0a82d91659", "sha256": "d9545c473ddf21058bc64e674917494680199f6f18c7822c139c988a440d5020" }, "downloads": -1, "filename": "confy-0.3beta.tar.gz", "has_sig": false, "md5_digest": "68e1e6b51407201fd891bd0a82d91659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6107, "upload_time": "2013-07-14T22:42:30", "url": "https://files.pythonhosted.org/packages/db/e8/f7e619290e19b8d3dc84f6d434fa2db6302ce559e4450e2484112352d4d3/confy-0.3beta.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cdbc8c9fa8746e4c764272405fde3bc0", "sha256": "0db18cedd50d85f8e25d06972583b36e34f2ab7d5dca042008163a1267da922e" }, "downloads": -1, "filename": "confy-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cdbc8c9fa8746e4c764272405fde3bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13053, "upload_time": "2013-08-24T11:20:53", "url": "https://files.pythonhosted.org/packages/a9/88/16a6aefa08c6275845c0abecadc7d04120d85d4d117fe063b5f1d6c76d68/confy-0.3.8.tar.gz" } ] }