Skip to main content

Simple exceptions and messaging

Project description

EZCeption (and EZMessage)

These classes provide a simplified means to define exception classes and message attributes.

Goals

  • Less boilerplate to define error classes so they'll be used more.
  • Formatting does not happen at raise time so catching errors doesn't incur string computation cost.
  • Exception fields are easier to probe by exception handlers.
  • Class-bases exceptions are a snap to define.
  • Works with regular Python exception classes.
  • Interfaces with the gettext module by default.
  • Allows for associating other i18n messaging in the error classes.

Installation.

pip install ezception

NOTE: ezception is not on pypi yet. Until official releases are available:

pip install https://github.com/hrharkins/ezception/archive/master.zip

Usage

import ezception

class MyWebRequester(object):

    class Error(ezception.EZCeption):
        'A general error has occurred.'

    class OpenError(Error):
        'An error opening {self.url!r} has occurred.'

    class NoURLError(OpenError):
        '''
        No URL was provided.
        ''''

    class NoURLError(OpenError):
        '''
        The scheme {self.scheme!r} is not acceptable.
        '''

    ...

    def open(self, url):
        ... stuff happens.

        ... Oh noes!
        raise self.BadSchemeError(scheme=url.scheme)

So in the example the class defines a simple hierarchy of errors. Progreammers can trivially trap MyWebRequester.Error to catch anything generated by MyWebRequester. Because it's very simple to define those errors, a more robust exception hierarchy is more likely to emerge.

In addition, the message is NOT generated at exception time. Because of this, it is easy to catch and determine better handling code. The default Python exceptions use args, which requires the programmer to have tighter coupling with the error classes to acquire the parameters of the failure (or the error class needs to define more properties).

Only when the exception is printed does stringification occur. In addition, the message to be presented is processed using the gettext module, so adding support for other languages for such messages is possible using regular .po files. All messages are tracked by a global ezception.ALL_MSGS dict so generating base .po files is also simplified.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ezception-0.0.2.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ezception-0.0.2-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file ezception-0.0.2.tar.gz.

File metadata

  • Download URL: ezception-0.0.2.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.3

File hashes

Hashes for ezception-0.0.2.tar.gz
Algorithm Hash digest
SHA256 de646cf765f5917dbcff56e3770a9b7562c005c61951aed3f53d693118740e22
MD5 4d8d082c9010383b267f0c5501e41389
BLAKE2b-256 23a100276ddd21eca672e469c883e6151a7dc62d214b7bccdf5456e54a679293

See more details on using hashes here.

File details

Details for the file ezception-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: ezception-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.3

File hashes

Hashes for ezception-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9e02d48cd29d2c76ad636663618e9c44af1b5788554f1c9306c280b9f50262a7
MD5 d69ba9da663ec70074c9327a64a48b8e
BLAKE2b-256 bb0070ce0cc433c5e2ad5e7e5351c78d18409170d29b6f3cf3a5b143440fe8d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page