Skip to main content

wsgi microframework suitable for building modular DRY RESTful APIs

Project description

madness: a method for your madness

It is built upon WSGI and the fabulous werkzeug routing system, like Flask.

Guiding Principles

Don't repeat yourself

Dependency inversion principle

Do One Thing and Do It Well.

The Zen of Python




$ pip install -U madness

A Simple Example

from madness import application, get

def hello():
    return 'Hello, world!'

if __name__ == '__main__':
    application(get('/', hello)).run()


  • route and variants

  • routes and variants

  • defaults

  • url parameters

from madness import routes, route, get, post, index

def hello():
  return 'world'

def bar():
  return 'zing!'

# recommended style

urls = routes(
    index(lambda: 'foo')
    route(bar, methods=['GET', 'POST', 'PUT']),
    path = '/foo'

# flat style

urls = routes(
  route('/', hello, methods=['GET']),
  route('/foo', lambda: 'foo', methods=['GET']),
  route('/foo/bar', bar, methods=['GET', 'POST', 'PUT']),

# add GET to all routes

urls = routes(
  route('/', hello),
  route('/foo', lambda: 'foo'),
  route('/foo/bar', bar, methods=['POST', 'PUT']),
  methods = ['GET']

Abstractions (Dependency inversion principle)

  • g

  • extending g

  • madness.G and g_factory

Middleware (Coroutines)

as decorator

as serializer

as request-contextmanager

as response contextmanager

as request-response contextmanager

as error handler


  • json

  • cors

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

madness-0.7.0.tar.gz (5.1 kB view hashes)

Uploaded source

Built Distribution

madness-0.7.0-py3-none-any.whl (7.0 kB view hashes)

Uploaded py3

Supported by

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