Skip to content

adeel/pump

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Adeel Ahmad Khan
Aug 3, 2011
c9ea5c4 · Aug 3, 2011

History

46 Commits
Aug 3, 2011
Mar 25, 2011
Jul 26, 2011
Jul 27, 2011
Jul 27, 2011
Jul 30, 2011

Repository files navigation

Pump User Manual

Pump is a dead simple abstraction of HTTP for Python.

Summary

The Pump specification consists of headers, requests, responses, apps, and middleware. Below are examples of each.

Pump requests.

{"server_port": "80",
 "server_name": "127.0.0.1",
 "remote_addr": "127.0.0.1",
 "uri": "/",
 "scheme": "http",
 "method": "get",
 "headers":
   {"accept_charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
    "connection": "keep-alive",
    "host": "localhost:8000",
    ...}}

Pump responses.

{"status": 200,
 "headers": {"content_type": "text/plain"},
 "body": "Hello!"}

Pump apps.

def app(req):
  if req["uri"] == "/favicon.ico":
    return {"status": 404, headers: {}, body: "Not Found"}
  return {"status": 200,
          "headers": {"content_type": "text/html"},
          "body": "<h1>Hello!</h1>"}

Pump middleware.

def wrap_with_logger(app):
  def wrapped(req):
    response = app(req)
    print "%s %s\n  => %s" % (req["method"],
                              req["uri"],
                              response)
    return response
  return wrapped

For the detailed specification, see SPEC.md.

Getting started

Installation

To install, type

$ pip install pump

or grab the code from Github:

$ git clone git://github.com/adeel/pump.git
$ cd pump
$ python setup.py install

Running your app

Pump comes with an adapter for the Paste WSGI server. If you don't have that installed, do

$ pip install Paste

and then to run your app:

import pump
pump.adapters.serve_with_paste(app, {"port": 3000})

Soon, Pump will come with adapters for other popular WSGI servers.

Thanks

Pump was heavily inspired by Clojure's Ring. Thanks, Mark McGranaghan!

License

Copyright (c) 2011 Adeel Ahmad Khan [email protected].

MIT license.

About

A dead simple abstraction of HTTP for Python.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages