{ "info": { "author": "Ryan Fox", "author_email": "ryan@rcfox.ca", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Typing :: Typed" ], "description": "=================\nExceptionTemplate\n=================\n\nRaise exceptions with consistent messages while avoiding the boiler plate.\n\nCompare this:\n\n>>> from exception_template import ExceptionTemplate\n>>> class MyException(ExceptionTemplate):\n... message = 'Hello, {person}. Here is my {adjective} exception class.'\n>>> raise MyException(person='Ryan', adjective='fancy')\nTraceback (most recent call last):\n ...\nMyException: Hello, Ryan. Here is my fancy exception class.\n\n\nTo this:\n\n>>> class MyException(Exception):\n... def __init__(self, person: str, adjective: str) -> None:\n... self.person = person\n... self.adjective = adjective\n... super().__init__('Hello, {person}. Here is my {adjective} exception class.'\n... .format(person=person, adjective=adjective))\n>>> raise MyException('Ryan', 'lame')\nTraceback (most recent call last):\n ...\nMyException: Hello, Ryan. Here is my lame exception class.\n\n\nOr this:\n\n>>> class MyException(Exception):\n... pass\n>>> raise MyException('Hello, Ryan. Here is my exception class with a message I copy-pasted in 500 places.')\nTraceback (most recent call last):\n ...\nMyException: Hello, Ryan. Here is my exception class with a message I copy-pasted in 500 places.\n\n\nAdditionally, the ExceptionTemplate parameters are available as members on the exception instance:\n\n>>> try:\n... foo()\n... except MyException as ex:\n... print(ex.person)\nRyan\n\n\nInstalling\n==========\n\n``pip install exception-template``\n\nNo extra dependencies are needed!\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rcfox/exception-template", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "exception-template", "package_url": "https://pypi.org/project/exception-template/", "platform": "", "project_url": "https://pypi.org/project/exception-template/", "project_urls": { "Homepage": "https://github.com/rcfox/exception-template" }, "release_url": "https://pypi.org/project/exception-template/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Create exception classes from message templates.", "version": "1.0.0" }, "last_serial": 5668274, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "414b58ab05da6d8c278be97fa8681c9c", "sha256": "a04fda2194464e961f0a21ee77484954fb691f078a6342bb5ba84263881b2d48" }, "downloads": -1, "filename": "exception_template-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "414b58ab05da6d8c278be97fa8681c9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4305, "upload_time": "2019-08-06T14:21:41", "url": "https://files.pythonhosted.org/packages/d6/12/4daaea0a9567b8a047c5490b266010c1a920845dca5b111cad636873c65a/exception_template-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a50e10f3d9c737f77123ae291f404b5", "sha256": "297fbdfc4a9c3274aa8dbeebfec0f92ccb728870835bf21c50fe7d33efd1c40c" }, "downloads": -1, "filename": "exception-template-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9a50e10f3d9c737f77123ae291f404b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2407, "upload_time": "2019-08-06T14:21:44", "url": "https://files.pythonhosted.org/packages/61/f3/ccaa95ff9b685c91be1b1c509aefc0721adba1c17852e3cb124defd731f6/exception-template-0.0.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "fa534ef5be748aaa0ec107bc4e3fece9", "sha256": "284169005e9c50aff3c3cce5f48e31eda1f545c85042473d12435328b65d811a" }, "downloads": -1, "filename": "exception_template-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa534ef5be748aaa0ec107bc4e3fece9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4375, "upload_time": "2019-08-12T19:11:43", "url": "https://files.pythonhosted.org/packages/64/0e/162d31a5515b546964c4e30d0efbc54d7ce2857258e81b5dd8a82d0a60f2/exception_template-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e4a9baf9604fc3716b4be8eea4b7e64", "sha256": "a927f01540ae223805d4eb20aad0022185257d773dfbea9989bed457790165ef" }, "downloads": -1, "filename": "exception-template-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1e4a9baf9604fc3716b4be8eea4b7e64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2474, "upload_time": "2019-08-12T19:11:44", "url": "https://files.pythonhosted.org/packages/53/f9/aa7483675cd2cf59fd194a1e76d99423be41e69a4cdbb42a5ef6e4782f9a/exception-template-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fa534ef5be748aaa0ec107bc4e3fece9", "sha256": "284169005e9c50aff3c3cce5f48e31eda1f545c85042473d12435328b65d811a" }, "downloads": -1, "filename": "exception_template-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fa534ef5be748aaa0ec107bc4e3fece9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4375, "upload_time": "2019-08-12T19:11:43", "url": "https://files.pythonhosted.org/packages/64/0e/162d31a5515b546964c4e30d0efbc54d7ce2857258e81b5dd8a82d0a60f2/exception_template-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e4a9baf9604fc3716b4be8eea4b7e64", "sha256": "a927f01540ae223805d4eb20aad0022185257d773dfbea9989bed457790165ef" }, "downloads": -1, "filename": "exception-template-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1e4a9baf9604fc3716b4be8eea4b7e64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2474, "upload_time": "2019-08-12T19:11:44", "url": "https://files.pythonhosted.org/packages/53/f9/aa7483675cd2cf59fd194a1e76d99423be41e69a4cdbb42a5ef6e4782f9a/exception-template-1.0.0.tar.gz" } ] }