{ "info": { "author": "Martijn Faassen", "author_email": "faassen@startifact.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Application Frameworks" ], "description": "Dectate: a configuration engine for Python frameworks\n=======================================================\n\nDectate is a powerful configuration engine for Python frameworks.\n\n`Read the docs`_\n\n.. _`Read the docs`: http://dectate.readthedocs.org\n\nIt is used by Morepath_.\n\n.. _Morepath: http://morepath.readthedocs.org\n\nBuild Status\n------------\n\n.. image:: https://travis-ci.org/morepath/dectate.svg?branch=master\n :target: https://travis-ci.org/morepath/dectate\n\n.. image:: https://coveralls.io/repos/github/morepath/dectate/badge.svg?branch=master\n :target: https://coveralls.io/github/morepath/dectate?branch=master\n\nCHANGES\n*******\n\n0.13 (2016-12-23)\n=================\n\n- Add a Sentinel class, used for the ``NOT_FOUND`` object.\n\n- Upload universal wheels to pypi during release.\n\n- make ``directive_name`` property available on ``Directive`` instances.\n\n0.12 (2016-10-04)\n=================\n\n- **Breaking changes**: previously you defined new directives using the\n ``App.directive`` directive. This would lead to import confusion: you\n *have* to import the modules that define directives before you can actually\n use them, even though you've already imported your app class.\n\n In this version of Dectate we've changed the way you define directives.\n Instead of::\n\n class MyApp(dectate.App):\n pass\n\n @MyApp.directive('foo')\n class FooAction(dectate.Action):\n ...\n\n You now write this::\n\n class FooAction(directive.Action)\n ...\n\n class MyApp(dectate.App):\n foo = directive(FooAction)\n\n So, you define the directives directly on the app class that needs\n them.\n\n Uses of ``private_action_class`` should be replaced by an underscored\n directive definition::\n\n class MyApp(dectate.App):\n _my_private_thing = directive(PrivateAction)\n\n- Use the same Git ignore file used in other Morepath projects.\n\n- If you set the ``app_class_arg`` class attribute to ``True`` on an\n action, then an ``app_class`` is passed along to ``perform``,\n ``identifier``, etc. This way you can affect the app class directly\n instead of just its underlying configuration in the ``config``\n attribute.\n\n- Similarly if you set the ``app_class_arg`` attribute ``True`` on a\n factory class, it is passed in.\n\n- Add a ``clean`` method to the ``App`` class. You can override this\n to introduce your own cleanup policy for aspects of the class that are\n not contained in the ``config`` attribute.\n\n- We now use virtualenv and pip instead of buildout to set up the\n development environment. The development documentation has been\n updated accordingly.\n\n- Include doctests in Tox and Travis.\n\n0.11 (2016-07-18)\n=================\n\n- **Removed**: ``autocommit`` was removed from the Dectate API. Rely\n on the ``commit`` class method of the ``App`` class instead for a\n more explicit alternative.\n\n- **Removed**: ``auto_query_tool`` was removed from the Dectate API.\n Use ``query_tool(App.commit())`` instead.\n\n- Fix ``repr`` of directives so that you can at least see their name.\n\n- the execution order of filters is now reproducible, to ensure\n consistent test coverage reports.\n\n- Use abstract base classes from the standard library for the ``Action``\n and ``Composite`` classes.\n\n- Use feature detection instead of version detection to ensure Python\n 2/3 compatibility.\n\n- Increased test coverage.\n\n- Set up Travis CI and Coverall as continuous integration services for\n quality assurance purposes.\n\n- Add support for Python 3.3 and 3.5.\n\n- Make Python 3.5 the default testing environment.\n\n0.10.2 (2016-04-26)\n===================\n\n- If nothing is found for an app in the query tool, don't mention it\n in the output so as to avoid cluttering the results.\n\n- Fix a major bug in the query tool where if an app resulted in no\n results, any subsequent apps weren't even searched.\n\n0.10.1 (2016-04-26)\n===================\n\n- Create proper deprecation warnings instead of plain warnings for\n ``autocommit`` and ``auto_query_tool``.\n\n0.10 (2016-04-25)\n=================\n\n- **Deprecated** The ``autocommit`` function is deprecated. Rely on\n the ``commit`` class method of the ``App`` class instead for a more\n explicit alternative.\n\n- **Deprecated** The ``auto_query_tool`` function is deprecated. Rely\n on ``dectate.query_tool(MyApp.commit())`` instead. Since the commit\n method returns an iterable of ``App`` classes that are required to\n commit the app class it is invoked on, this returns the right\n information.\n\n- ``topological_sort`` function is exposed as the public API.\n\n- A ``commit`` class method on ``App`` classes.\n\n- Report on inconsistent uses of factories between different directives'\n ``config`` settings as well as ``factory_arguments`` for registries. This\n prevents bugs where a new directive introduces the wrong factory for\n an existing directive.\n\n- Expanded internals documentation.\n\n0.9.1 (2016-04-19)\n==================\n\n- Fix a subtle bug introduced in the last release. If\n ``factory_arguments`` were in use with a config name only created in\n that context, it was not properly cleaned up, which in some cases\n can make a commit of a subclass get the same config object as that\n of the base class.\n\n0.9 (2016-04-19)\n================\n\n- Change the behavior of ``query_tool`` so that if it cannot find an\n action class for the directive name the query result is empty\n instead of making this an error. This makes ``auto_query_tool`` work\n better.\n\n- Introduce ``auto_query_tool`` which uses the automatically found\n app classes as the default app classes to query.\n\n- Fix tests that use ``__builtin__`` that were failing on Python 3.\n\n- Dependencies only listed in ``factory_arguments`` are also created\n during config creation.\n\n0.8 (2016-04-12)\n================\n\n- Document how to refer to builtins in Python 3.\n\n- Expose ``is_committed`` method on ``App`` subclasses.\n\n0.7 (2016-04-11)\n================\n\n- Fix a few documentation issues.\n\n- Expose ``convert_dotted_name`` and document it.\n\n- Implement new ``convert_bool``.\n\n- Allow use of directive name instead of Action subclass as argument\n to Query.\n\n- A ``query_app`` function which is especially helpful when writing\n tests for the query tool -- it takes unconverted filter arguments.\n\n- Use newer version of ``with_metaclass`` from six.\n\n- Expose ``NOT_FOUND`` and document it.\n\n- Introduce a new ``filter_get_value`` method you can implement if the\n normal attribute getting and ``filter_name`` are not enough.\n\n0.6 (2016-04-06)\n================\n\n- Introduce a query system for actions and a command-line tool that\n lets you query actions.\n\n0.5 (2016-04-04)\n================\n\n- **Breaking change** The signature of ``commit`` has changed. Just\n pass in one or more arguments you want to commit instead of a list. See\n #8.\n\n0.4 (2016-04-01)\n================\n\n- Expose ``code_info`` attribute for action. The ``path`` in\n particular can be useful in implementing a directive such as\n Morepath's ``template_directory``. Expose it for composite too.\n\n- Report a few more errors; you cannot use ``config``, ``before`` or\n ``after`` after in an action class if ``group_class`` is set.\n\n- Raise a DirectiveReportError if a DirectiveError is raised in a\n composite ``actions`` method.\n\n0.3 (2016-03-30)\n================\n\n- Document ``importscan`` package that can be used in combination with\n this one.\n\n- Introduced ``factory_arguments`` feature on ``config`` factories,\n which can be used to create dependency relationships between\n configuration.\n\n- Fix a bug where config items were not always properly reused. Now\n only the first one in the action class dependency order is used, and\n it is not recreated.\n\n0.2 (2016-03-29)\n================\n\n- Remove clear_autocommit as it was useless during testing anyway.\n In tests just use explicit commit.\n\n- Add a ``dectate.sphinxext`` module that can be plugged into Sphinx\n so that directives are documented properly.\n\n- Document how Dectate deals with double imports.\n\n0.1 (2016-03-29)\n================\n\n- Initial public release.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://dectate.readthedocs.io", "keywords": "configuration", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "dectate", "package_url": "https://pypi.org/project/dectate/", "platform": "", "project_url": "https://pypi.org/project/dectate/", "project_urls": { "Homepage": "http://dectate.readthedocs.io" }, "release_url": "https://pypi.org/project/dectate/0.13/", "requires_dist": [ "setuptools", "pytest-cov; extra == 'coverage'", "sphinx; extra == 'docs'", "flake8; extra == 'pep8'", "pytest (>=2.9.0); extra == 'test'", "pytest-remove-stale-bytecode; extra == 'test'" ], "requires_python": "", "summary": "A configuration engine for Python frameworks", "version": "0.13" }, "last_serial": 2536434, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ff6a8c610213c5977d6d5cf7386c80cd", "sha256": "74667b6c04e848d4a3897267bdf6152da0180f2acd45a9052f260ee7ddd1f397" }, "downloads": -1, "filename": "dectate-0.1.tar.gz", "has_sig": false, "md5_digest": "ff6a8c610213c5977d6d5cf7386c80cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31376, "upload_time": "2016-03-29T12:23:29", "url": "https://files.pythonhosted.org/packages/ef/0c/87f7691fd67590887b56a2618554b51037503fb37f11e244bc5ac49d1363/dectate-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "17cc90ed7269f7a3703e44277004a96c", "sha256": "f1bf524367bccd21e4cfb052423875bc7bb10bab706da1be48b08e98731324b9" }, "downloads": -1, "filename": "dectate-0.10.tar.gz", "has_sig": false, "md5_digest": "17cc90ed7269f7a3703e44277004a96c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49402, "upload_time": "2016-04-25T13:18:10", "url": "https://files.pythonhosted.org/packages/29/b7/f683e21c53b36aa96648cb3d9dfebb97d0179a584752c218260d3577880b/dectate-0.10.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "73bdcd475c9f3f598846fda3684d4664", "sha256": "d5944d6cb2e050f2856830277805016f474913d8648f8d8b431950b2dde6fde6" }, "downloads": -1, "filename": "dectate-0.10.1.tar.gz", "has_sig": false, "md5_digest": "73bdcd475c9f3f598846fda3684d4664", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49613, "upload_time": "2016-04-26T12:22:58", "url": "https://files.pythonhosted.org/packages/65/2c/d7fd6fa31685da6c22ad2dea3b75b305cbe6c34175c39d0b5d48fb901d5d/dectate-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "dac3432b4818a5bd92b8fd9fcf0dcacd", "sha256": "120c685aededd7c5f41cb5353c5139331a8626bf9ecfc4ce11c206361ea04619" }, "downloads": -1, "filename": "dectate-0.10.2.tar.gz", "has_sig": false, "md5_digest": "dac3432b4818a5bd92b8fd9fcf0dcacd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49973, "upload_time": "2016-04-26T13:19:34", "url": "https://files.pythonhosted.org/packages/02/3f/20b98687ca5b0ad600631d93b96046887f9b40e2c568da88382d22e6972f/dectate-0.10.2.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "2e9e4f74fd25a86f91556feee8da1868", "sha256": "3f51a4996b20222e5da8f1f51450c101292fdb1a8b7691a259a40ae1c3ffe64f" }, "downloads": -1, "filename": "dectate-0.11.tar.gz", "has_sig": false, "md5_digest": "2e9e4f74fd25a86f91556feee8da1868", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51412, "upload_time": "2016-07-18T11:33:29", "url": "https://files.pythonhosted.org/packages/cb/4b/7ce04e83c6bbc5ddc1d1dc48d208e3bf1fedc1c8e7e54c4ca1846973c4a7/dectate-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "2b5ded2dcd8175378e083113e8d39fe1", "sha256": "a3b985a4b7e1b2a20fd501745594995558bd591bf285ba63e809e5924c310c92" }, "downloads": -1, "filename": "dectate-0.12.tar.gz", "has_sig": false, "md5_digest": "2b5ded2dcd8175378e083113e8d39fe1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51419, "upload_time": "2016-10-04T13:39:27", "url": "https://files.pythonhosted.org/packages/4a/1a/5b9b8da34da15e5f834676aabc1cd0ed84762416be962a76c9a22ab0a4fb/dectate-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "c25d6d1ba2d3c0aaf54f1eea621f3afc", "sha256": "bc3920b30e26d361cb119db9b081add0ffba7b5550b5b33221e805dd7433b49e" }, "downloads": -1, "filename": "dectate-0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c25d6d1ba2d3c0aaf54f1eea621f3afc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36689, "upload_time": "2016-12-23T12:00:50", "url": "https://files.pythonhosted.org/packages/f4/46/e2f06be325dc81994ef8e9210c73a51786ce587105755cb93d97114e1880/dectate-0.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdf02fb5bf121cf156ae01b36aaab9d4", "sha256": "299a5d3d674d7cd095c8489331ecece22e5a567ee8a7636e8b57bbb220c568e4" }, "downloads": -1, "filename": "dectate-0.13.tar.gz", "has_sig": false, "md5_digest": "bdf02fb5bf121cf156ae01b36aaab9d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51824, "upload_time": "2016-12-23T12:00:51", "url": "https://files.pythonhosted.org/packages/0d/b8/9ce9e0ee72372d4dc8817e48d26a16d63d4397424cf3b8936b6e565be4ad/dectate-0.13.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0d6505061748a8a45bb51e1a7e9403e0", "sha256": "5b07ea76d8e75f7ae0b0d86cc446ef79c4ddfc2d015259a91ee529d1ba204fe9" }, "downloads": -1, "filename": "dectate-0.2.tar.gz", "has_sig": false, "md5_digest": "0d6505061748a8a45bb51e1a7e9403e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33260, "upload_time": "2016-03-29T13:45:31", "url": "https://files.pythonhosted.org/packages/75/84/4dd2c31c15d4070bb05135b2d83ccb18bc1f6114bec83fce145f50c9f8ca/dectate-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "b7f3260848724aa17ce9c8f6713b94f2", "sha256": "52066d80b293213f4217e4099d2a8a482d15f5e001f2921b55474139debe1861" }, "downloads": -1, "filename": "dectate-0.3.tar.gz", "has_sig": false, "md5_digest": "b7f3260848724aa17ce9c8f6713b94f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35209, "upload_time": "2016-03-30T13:17:15", "url": "https://files.pythonhosted.org/packages/20/d7/cdc3068baf488d49585f07aa69d280ab641f07920e9af8982157d350d935/dectate-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "68d0c28cd0ddda6e6f5a00f91ff42843", "sha256": "58eed109579db7dce6425a9ee067dcbed408c4860801ecb16f4bef7f5a262544" }, "downloads": -1, "filename": "dectate-0.4.tar.gz", "has_sig": false, "md5_digest": "68d0c28cd0ddda6e6f5a00f91ff42843", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35426, "upload_time": "2016-04-01T09:15:38", "url": "https://files.pythonhosted.org/packages/3c/21/cbe7c8ed4128e27147a13f80be0d58c69e09f0cf8dccec9424571ec34aae/dectate-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "4926ee720c313cf65c3d692c85a7d71e", "sha256": "b5ac325378c345569b333ee9fd2a85824e133317e1a81f21b73bdd485deca1b4" }, "downloads": -1, "filename": "dectate-0.5.tar.gz", "has_sig": false, "md5_digest": "4926ee720c313cf65c3d692c85a7d71e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35606, "upload_time": "2016-04-04T09:19:23", "url": "https://files.pythonhosted.org/packages/0a/bc/a87d553d937ecdec46016fc12e64314963e6038a11ffdae21eb714f1e96f/dectate-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "9fac2845a6bfad9e754046a2cc7a86c6", "sha256": "a0589b77406c69ac2ce805253a460a5c1e848e7b987dd4020de59c2ccbc546ad" }, "downloads": -1, "filename": "dectate-0.6.tar.gz", "has_sig": false, "md5_digest": "9fac2845a6bfad9e754046a2cc7a86c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41877, "upload_time": "2016-04-06T11:56:55", "url": "https://files.pythonhosted.org/packages/e7/72/7c42f75a1423954c57348f9390fa2982db71123cada512445d7bf118c13b/dectate-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "643d1ec1c717295e228eedb0bae4ae04", "sha256": "e2f2b44d1744ddd4a54d2f58a9f4f7f6615cd073ccec39917f9e8f651b921d4b" }, "downloads": -1, "filename": "dectate-0.7.tar.gz", "has_sig": false, "md5_digest": "643d1ec1c717295e228eedb0bae4ae04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44236, "upload_time": "2016-04-11T07:02:33", "url": "https://files.pythonhosted.org/packages/9c/59/fe837fcf693bfd76df0f7f28b207486d0203bcbd15ea4e593a1eaf92d416/dectate-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "94bfc9f5110784606babd73d9ad6d054", "sha256": "3175ef076e9fdbf025da342f7fb847b767613311bf4e651192e30fa947990cd6" }, "downloads": -1, "filename": "dectate-0.8.tar.gz", "has_sig": false, "md5_digest": "94bfc9f5110784606babd73d9ad6d054", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44411, "upload_time": "2016-04-12T13:36:03", "url": "https://files.pythonhosted.org/packages/18/cf/91f4db3307e9601c8ded9220118088f2106fdb01e9c178dfdec2583553e2/dectate-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "39541ea306dfa1b4f1f882fed9ecd7ce", "sha256": "39940e716d23d0b05a9926f9dc564fb66ea37d21fbc273f23d7386dddf7238e5" }, "downloads": -1, "filename": "dectate-0.9.tar.gz", "has_sig": false, "md5_digest": "39541ea306dfa1b4f1f882fed9ecd7ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45675, "upload_time": "2016-04-19T13:40:32", "url": "https://files.pythonhosted.org/packages/05/3c/1a82bb6d8a5eeac600f8a55454a9666974b4449b6a73b44ea01d182db10a/dectate-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "f4037b6273af9b1bd8fb1205a7203d46", "sha256": "e424e940d76a8b5e0f10f39cbd6f921828795e971acfad61bbb06906fdb6d0e7" }, "downloads": -1, "filename": "dectate-0.9.1.tar.gz", "has_sig": false, "md5_digest": "f4037b6273af9b1bd8fb1205a7203d46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46167, "upload_time": "2016-04-19T14:43:23", "url": "https://files.pythonhosted.org/packages/7c/3f/ae97f5d0a9a8c931f7d388d5498815c3482762c828d91ae990f33d31f848/dectate-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c25d6d1ba2d3c0aaf54f1eea621f3afc", "sha256": "bc3920b30e26d361cb119db9b081add0ffba7b5550b5b33221e805dd7433b49e" }, "downloads": -1, "filename": "dectate-0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c25d6d1ba2d3c0aaf54f1eea621f3afc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36689, "upload_time": "2016-12-23T12:00:50", "url": "https://files.pythonhosted.org/packages/f4/46/e2f06be325dc81994ef8e9210c73a51786ce587105755cb93d97114e1880/dectate-0.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdf02fb5bf121cf156ae01b36aaab9d4", "sha256": "299a5d3d674d7cd095c8489331ecece22e5a567ee8a7636e8b57bbb220c568e4" }, "downloads": -1, "filename": "dectate-0.13.tar.gz", "has_sig": false, "md5_digest": "bdf02fb5bf121cf156ae01b36aaab9d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51824, "upload_time": "2016-12-23T12:00:51", "url": "https://files.pythonhosted.org/packages/0d/b8/9ce9e0ee72372d4dc8817e48d26a16d63d4397424cf3b8936b6e565be4ad/dectate-0.13.tar.gz" } ] }