{ "info": { "author": "Paul Becotte", "author_email": "pjbecotte@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "Intro\n======\n|pypi| |bld| |cvg| |black|\n\nOne of the most common ways to let users customize the way an app\nworks is to use config files. This means that many projects wind up\nincluding an implementation to read in the config values, specify\ndefaults, control which values get looked up when, and enforce some\nsort of schema.\n\nsettingscascade is designed to handle this scenario. While it can be\nused in simple situations, it really shines when you need to pull in\nvalues from a variety of sources, have a rich set of defaults, and\ngive users flexibility in configuring overrides at various levels.\nThe model it uses is CSS, mimicking the way that css uses selectors\nto cascade settings from various levels of specificity. Your users\nspecify rule blocks the same as they would in CSS-\n\n.. code-block:: yaml\n\n\t# Each rule block has a selector, using CSS semantics\n\t# this block is for a task element with the class \"default\"\n\ttask.default:\n\t command: \"echo hello\"\n\t on_complete: \"echo world\"\n\n\t# You can specify top level settings as well for a final\n\t# level of fallback\n\tproject_name: \"my project\"\n\nThen your app can use the config\n\n.. code-block:: python\n\n\t# Task represents an element (like a div or a in HTML).\n\t# you can specify what values are valid for this element type\n\tclass Task(SettingsSchema):\n\t\t_name_ = task\n\t\tcommand: str\n\t\ton_complete: str\n\n\tconfig = SettingsManager(yaml.load(\"config.yml\"), [Task])\n\n\t# In your code, you can pull an element from the settingsmanager\n\t# object and find the rules that apply. This is like an element\n\t# \n\ttask_config = config.task(class=\"default\")\n\trun_task(\n\t\tcommand=task_config.command,\n\t\ton_complete=task_config.on_complete,\n\t\tname=config.project_name,\n\t)\n\nRead the full documentation at https://settingscascade.readthedocs.io/en/latest/\n\nInstallation\n==================\n\nYou can install settingscascade from pypi-\n\n::\n\n\tpip install settingscascade\n\n.. |cvg| image:: https://gitlab.com/pjbecotte/settingscascade/badges/master/coverage.svg\n.. |bld| image:: https://gitlab.com/pjbecotte/settingscascade/badges/master/pipeline.svg\n.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n.. |pypi| image:: https://badge.fury.io/py/settingscascade.svg\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/pjbecotte/settingscascade", "keywords": "config,settings,ini,css,specificity", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "settingscascade", "package_url": "https://pypi.org/project/settingscascade/", "platform": "", "project_url": "https://pypi.org/project/settingscascade/", "project_urls": { "Homepage": "https://gitlab.com/pjbecotte/settingscascade", "Repository": "https://gitlab.com/pjbecotte/settingscascade" }, "release_url": "https://pypi.org/project/settingscascade/0.4.2/", "requires_dist": [ "jinja2 (>=2.10,<2.11)", "sortedcontainers (>=2.1,<2.2)" ], "requires_python": ">=3.6,<4.0", "summary": "Cascade settings from multiple levels of specificity", "version": "0.4.2" }, "last_serial": 5993395, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8169fa3f5eea15c0b2a64f8dbf2e395c", "sha256": "eef3d3b4f237ffae33b80f96262d31bdb4e93b06963bfd7de130de57cc56b430" }, "downloads": -1, "filename": "settingscascade-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8169fa3f5eea15c0b2a64f8dbf2e395c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 4422, "upload_time": "2019-06-26T02:32:56", "url": "https://files.pythonhosted.org/packages/9f/f5/eb44a105bc225fae86d26f31981730e8b833d8142a13c8294970d26f4c7e/settingscascade-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cae2a287e27cebb22ee4ac8819539ed3", "sha256": "47c0971b792d0c8f493c69a08b3d9c59b18f5091688a3636bdccd2b671cddffb" }, "downloads": -1, "filename": "settingscascade-0.1.tar.gz", "has_sig": false, "md5_digest": "cae2a287e27cebb22ee4ac8819539ed3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4336, "upload_time": "2019-06-26T02:32:58", "url": "https://files.pythonhosted.org/packages/62/c1/7831138dbf195ecf7e3bfdc6b02debfc173471f0dd17d03c4310e646cb74/settingscascade-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "b03452b40a8c5b4a97e940f829fbd9ec", "sha256": "a6d71973527732487bc39237f7d7796ee45ba15dc3a54afe1a92db0f24b6852f" }, "downloads": -1, "filename": "settingscascade-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b03452b40a8c5b4a97e940f829fbd9ec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 7239, "upload_time": "2019-06-28T19:32:24", "url": "https://files.pythonhosted.org/packages/a0/6d/a9c56242146f0cd763d9fb16abef4f51d39f33efb3c60e12b5f1fd63d7c3/settingscascade-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfe7588d2378e97c09310c0e5314ad68", "sha256": "122e3d6eee1fd97b61eb92910e41c0b3a48abc5af8590c882c125f05e1c26941" }, "downloads": -1, "filename": "settingscascade-0.2.tar.gz", "has_sig": false, "md5_digest": "dfe7588d2378e97c09310c0e5314ad68", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7280, "upload_time": "2019-06-28T19:32:26", "url": "https://files.pythonhosted.org/packages/ce/ea/df9eb9250f1753156374ebdd153c8944c4e38a776e8c8dbb0dd8b089dbad/settingscascade-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "166eece6ce9b1b87ed897c0ae55da191", "sha256": "75ea5eb82b0ad302299d6065ee12f625e0f5e3a9a5f8b9345b8439194ca596c8" }, "downloads": -1, "filename": "settingscascade-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "166eece6ce9b1b87ed897c0ae55da191", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 7332, "upload_time": "2019-06-30T15:05:19", "url": "https://files.pythonhosted.org/packages/9d/b2/915caa9c8275ab9735670ea81cdf4da3d26b8ef0f6f2380d7620dd863515/settingscascade-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec19fb390e7abf0ec1c8925cb0d18ae9", "sha256": "c9e9eeb41810ad3ef43de8ea26a9f6b47c916623c81f6bc74dfc73b41b63cc98" }, "downloads": -1, "filename": "settingscascade-0.2.1.tar.gz", "has_sig": false, "md5_digest": "ec19fb390e7abf0ec1c8925cb0d18ae9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7346, "upload_time": "2019-06-30T15:05:20", "url": "https://files.pythonhosted.org/packages/7b/ab/a36933b5466e14bfa60b97aa9a351156be3f4bc5a1fd5ddadcb7cad76113/settingscascade-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6eb4e5fe7fae61587afdee9770c1926d", "sha256": "71fcdbf2bc2dc5a47394268cb899e12f14b8e40997f3d84ac328f3a49055e2f6" }, "downloads": -1, "filename": "settingscascade-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6eb4e5fe7fae61587afdee9770c1926d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 8417, "upload_time": "2019-07-13T02:30:44", "url": "https://files.pythonhosted.org/packages/4a/8c/dfc29f8d5b8172c47d6a9b26de889fa687c081b52a460ff1d7f6906f5540/settingscascade-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6905db37a5c6e9230102e1aef57d838", "sha256": "8af85d05a46bad0081302381827fba558966c67182b1404c9a140b6975f1660c" }, "downloads": -1, "filename": "settingscascade-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f6905db37a5c6e9230102e1aef57d838", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7371, "upload_time": "2019-07-13T02:30:45", "url": "https://files.pythonhosted.org/packages/b8/b1/c600cecb15a836f43527ccb3c10ed51198c4c8c7427134e38204a1be266c/settingscascade-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "912457c02f4cfbcbc1c2a88289b45ab6", "sha256": "10e5429f28acb03f164f58f130cb01bb775aa13f4b01efbe3ed81ab5b8060dd4" }, "downloads": -1, "filename": "settingscascade-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "912457c02f4cfbcbc1c2a88289b45ab6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 8498, "upload_time": "2019-07-15T12:11:50", "url": "https://files.pythonhosted.org/packages/c3/0e/6ac3f988e0d6a5ece28fd04abdd514625c31601a38e5ac273c311fbede06/settingscascade-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8034bcc52699e95d1895e07548bae04", "sha256": "32560a80fb4c9595e1db45dc56f9d2efcfbcbf4c7232418842de6d9da590d5b6" }, "downloads": -1, "filename": "settingscascade-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f8034bcc52699e95d1895e07548bae04", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7446, "upload_time": "2019-07-15T12:11:51", "url": "https://files.pythonhosted.org/packages/71/26/a51de0571f01f48e03b512b80d67b6d896f34c147c79c28231029e7967ee/settingscascade-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "e821618f2c7dfed70860e4f22f1bbfa7", "sha256": "222c98fc44a11306a1f3bfe67c849199dea005d6808673d53f28da24eac1d873" }, "downloads": -1, "filename": "settingscascade-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e821618f2c7dfed70860e4f22f1bbfa7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 8605, "upload_time": "2019-07-20T04:05:31", "url": "https://files.pythonhosted.org/packages/1e/02/209b7135b4d2270a7e4bb1a70e0ba1c20bd2d7b586f3de154946ca081f71/settingscascade-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57ad9954a6ec1aa1053f0b3115f20756", "sha256": "5cd0b7b13c949f495935ca1456f588323093dd44bae247e9bda4560fa92fb483" }, "downloads": -1, "filename": "settingscascade-0.3.2.tar.gz", "has_sig": false, "md5_digest": "57ad9954a6ec1aa1053f0b3115f20756", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7662, "upload_time": "2019-07-20T04:05:33", "url": "https://files.pythonhosted.org/packages/34/98/e2ddb4bf285ec96dc1396ba45fa8a5812b596a8d7a3eb7111c44bba26eed/settingscascade-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "2b175007d42f0b28baaabc332ed313bb", "sha256": "4881390bbd74396db4661f5dfcdcebe74b7610f83222a4ae8382c4e464fda1fb" }, "downloads": -1, "filename": "settingscascade-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2b175007d42f0b28baaabc332ed313bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 8818, "upload_time": "2019-07-22T16:07:31", "url": "https://files.pythonhosted.org/packages/4d/79/34de898a53030dcb7e2171aff14800d095574369a81650b4bd391cefa34c/settingscascade-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19efaed37ee462f29fc072f183c83b02", "sha256": "083fc2abf87602d5a8db06c2e78151824aa60495264b8ebec03855b91bb635e5" }, "downloads": -1, "filename": "settingscascade-0.3.3.tar.gz", "has_sig": false, "md5_digest": "19efaed37ee462f29fc072f183c83b02", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7917, "upload_time": "2019-07-22T16:07:33", "url": "https://files.pythonhosted.org/packages/42/c5/2aa16f72eab6021e6db57574ba67c19a76f97d018d865b282cb50e07b68f/settingscascade-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "ba06da7de252435e85c5de6315b20684", "sha256": "cef8fd8817c27caa8a51f5fbd2c5035162dda432cdb7080243764c4041665c1b" }, "downloads": -1, "filename": "settingscascade-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "ba06da7de252435e85c5de6315b20684", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 8817, "upload_time": "2019-07-24T11:47:06", "url": "https://files.pythonhosted.org/packages/17/47/238d2fcce078c805e4e7e1aa3ed63175e9b38895264e5a3edd05f82442bf/settingscascade-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a064bbb1445904fb7bde51b6729c46c7", "sha256": "309161a192f6e07b185236adc83ad240f26a9cfde75c389fc1ecabd7aa6ceb20" }, "downloads": -1, "filename": "settingscascade-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a064bbb1445904fb7bde51b6729c46c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7925, "upload_time": "2019-07-24T11:47:08", "url": "https://files.pythonhosted.org/packages/be/ef/6ae98769deac1046f9ee9794b62d39f4c2fcbf5b70b33f0cdfc9c3df8a98/settingscascade-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "7562625b10750b9c4324e539d1a32ebc", "sha256": "a71863a9e5a26ac7786fa3689e3fa502333c96a8b578438c1abc882e0c6ea4c7" }, "downloads": -1, "filename": "settingscascade-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7562625b10750b9c4324e539d1a32ebc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9704, "upload_time": "2019-08-06T03:03:53", "url": "https://files.pythonhosted.org/packages/19/0f/449db5b38ecf6b9582d63a9ec746f68718b54c06ea0d2524cabafcf694a5/settingscascade-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8a560903c47abf500e2a07541aef16c", "sha256": "c0b395db7d659e11f251701699db86f054c912c79b50c77ac134727d0df9102b" }, "downloads": -1, "filename": "settingscascade-0.4.0.tar.gz", "has_sig": false, "md5_digest": "d8a560903c47abf500e2a07541aef16c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9672, "upload_time": "2019-08-06T03:03:55", "url": "https://files.pythonhosted.org/packages/b0/22/bddbdba3512618ec0779e010f5403a3948f4238eb5230fed3cdc060aa58e/settingscascade-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "a0c2bacc21894e19788bed097b1724be", "sha256": "536e80a6f9a69a3eb5849c467359412a06ea7f885e27057e554c4da96d873c93" }, "downloads": -1, "filename": "settingscascade-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a0c2bacc21894e19788bed097b1724be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 10076, "upload_time": "2019-10-18T02:39:05", "url": "https://files.pythonhosted.org/packages/73/00/a3c3d862483fd11c9bccea75f658d2779e3fc88c7caa5ed9fb3dc25b9538/settingscascade-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c9490dc99f8255c03ffd12c1a401ce9", "sha256": "f25f0c742b772d02c2c7ca356d27375cfc2021ee178c51c2d1621eea7bb43837" }, "downloads": -1, "filename": "settingscascade-0.4.2.tar.gz", "has_sig": false, "md5_digest": "9c9490dc99f8255c03ffd12c1a401ce9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9986, "upload_time": "2019-10-18T02:39:06", "url": "https://files.pythonhosted.org/packages/84/2b/24d754c34a020d0e9104aebb27ac171b98c59663d8c87ee30c8c48de43d4/settingscascade-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a0c2bacc21894e19788bed097b1724be", "sha256": "536e80a6f9a69a3eb5849c467359412a06ea7f885e27057e554c4da96d873c93" }, "downloads": -1, "filename": "settingscascade-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a0c2bacc21894e19788bed097b1724be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 10076, "upload_time": "2019-10-18T02:39:05", "url": "https://files.pythonhosted.org/packages/73/00/a3c3d862483fd11c9bccea75f658d2779e3fc88c7caa5ed9fb3dc25b9538/settingscascade-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c9490dc99f8255c03ffd12c1a401ce9", "sha256": "f25f0c742b772d02c2c7ca356d27375cfc2021ee178c51c2d1621eea7bb43837" }, "downloads": -1, "filename": "settingscascade-0.4.2.tar.gz", "has_sig": false, "md5_digest": "9c9490dc99f8255c03ffd12c1a401ce9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9986, "upload_time": "2019-10-18T02:39:06", "url": "https://files.pythonhosted.org/packages/84/2b/24d754c34a020d0e9104aebb27ac171b98c59663d8c87ee30c8c48de43d4/settingscascade-0.4.2.tar.gz" } ] }