A development-mode error handler for Python web applications.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example
markii
tests
.bumpversion.cfg
.gitignore
.travis.yml
LICENSE
MANIFEST.in
README.md
requirements.txt
requirements_dev.txt
setup.cfg
setup.py
tox.ini

README.md

markii

MarkII is a development-mode error handler for Python web applications.

Build Status Coverage Status Codacy Badge

Installation

pip install markii

Usage

falcon

import falcon
import os

from functools import partial
from markii.frameworks.falcon import handle_error
from paste import httpserver


class Handler(object):
    def on_get(self, request, response, n):
        response.body = str(int(n))


root = os.path.abspath(os.path.dirname(__file__))
app = falcon.API()
app.add_error_handler(Exception, partial(handle_error, app_root=root))
app.add_route("/{n}", Handler())
httpserver.serve(app, host="127.0.0.1", port="8080")

webapp2

import webapp2

from functools import partial
from markii.frameworks.webapp2 import handle_error
from paste import httpserver


class Handler(webapp2.RequestHandler):
    def get(self, n):
        self.response.write(str(int(n)))


app = webapp2.WSGIApplication([
    webapp2.Route(r"/<n:.*>", handler=Handler)
], debug=True)
app.error_handlers[400] = partial(handle_error, code=400)
app.error_handlers[404] = partial(handle_error, code=404)
app.error_handlers[500] = partial(handle_error, code=500)
httpserver.serve(app, host="127.0.0.1", port="8080")

Screenshot

Screenshot

Warning

Make sure you only use MarkII in development mode.

Gotchas

On AppEngine, you must call markii.appengine.fix_appengine() inside your error handler.

Text editor support

MarkII supports opening files in your editor when you double click a frame by taking advantage of OSX's URL handler feature. See:

Acknowledgements

MarkII borrows its ideas (and most of its look) from better_errors.