Metadata-Version: 2.0
Name: exception-template
Version: 1.0.0
Summary: Create exception classes from message templates.
Home-page: https://github.com/rcfox/exception-template
Author: Ryan Fox
Author-email: ryan@rcfox.ca
License: MIT
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Typing :: Typed

=================
ExceptionTemplate
=================

Raise exceptions with consistent messages while avoiding the boiler plate.

Compare this:

>>> from exception_template import ExceptionTemplate
>>> class MyException(ExceptionTemplate):
...    message = 'Hello, {person}. Here is my {adjective} exception class.'
>>> raise MyException(person='Ryan', adjective='fancy')
Traceback (most recent call last):
    ...
MyException: Hello, Ryan. Here is my fancy exception class.


To this:

>>> class MyException(Exception):
...     def __init__(self, person: str, adjective: str) -> None:
...         self.person = person
...         self.adjective = adjective
...         super().__init__('Hello, {person}. Here is my {adjective} exception class.'
...                          .format(person=person, adjective=adjective))
>>> raise MyException('Ryan', 'lame')
Traceback (most recent call last):
    ...
MyException: Hello, Ryan. Here is my lame exception class.


Or this:

>>> class MyException(Exception):
...     pass
>>> raise MyException('Hello, Ryan. Here is my exception class with a message I copy-pasted in 500 places.')
Traceback (most recent call last):
    ...
MyException: Hello, Ryan. Here is my exception class with a message I copy-pasted in 500 places.


Additionally, the ExceptionTemplate parameters are available as members on the exception instance:

>>> try:
...     foo()
... except MyException as ex:
...    print(ex.person)
Ryan


Installing
==========

``pip install exception-template``

No extra dependencies are needed!


