Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Sinatra-like web framework for Python
Python
Failed to load latest commit information.
hoboken Set current date on responses
.coveragerc Add more tests for ConfigProperty, fix old tests
.gitignore Add basic logging configuration for hoboken
.gitmodules Switch to using a git read-only for oproperty
.travis.yml
LICENSE.txt Added package version info, update setup.py
MANIFEST.in Set package version to 0.6.0
Makefile Add timeout and log-capturing py.test plugins
README.md
fabfile.py Update logic in fabfile that grabs the current tag
requirements.txt Add timeout and log-capturing py.test plugins
setup.py Update TravisCI and setup.py
tox.ini

README.md

Hoboken

Build Status

Hoboken is a Sinatra-like web framework for Python. It attempts to make writing simple web applications both easy, but also provide enough power to accomplish more complex things. Hoboken officially supports Python 2.6, 2.7, 3.1, 3.2, 3.3, and PyPy. Unofficially, the tests pass on Python 3.0, but I won't officially be supporting it.

Currently, Hoboken is in alpha. There are plenty of tests (actually, test coverage is 100%), but documentation is somewhat lacking. That said, here's a simple "hello world" application:

from hoboken import HobokenApplication

app = HobokenApplication(__name__)

@app.get("/")
def index():
    return 'Hello world!'

And here's another application that demonstrates a few more of Hoboken's capabilities:

import json
from hoboken import HobokenApplication

app = HobokenApplication(__name__)

@app.get("/greet/:name")
def greeting(name=None):
    return json.dumps({
        "greeting": "Hello {0}!".format(name)
    })

You can then host this using any WSGI server (since Hoboken applications are WSGI applications). There's also a built-in test server, so if we use this to test our application: app.test_server(port=8080), we can do this:

$ curl -ik http://localhost:8080/greet/John
HTTP/1.0 200 OK
Date: Thu, 19 Jul 2012 00:00:00 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Type: text/html; charset=UTF-8
Content-Length: 26

{"greeting":"Hello John!"}

Finally, here's a longer example:

from __future__ import print_function
from hoboken import HobokenApplication

app = HobokenApplication(__name__)

@app.before("/admin/*")
def authenticate(path):
    # This runs before the actual route.  TODO: Do some authentication.
    pass

@app.get("/")
def index():
    return "Welcome to the app!"

@app.get("/books/:author/*")
def get_book(title, author=None):
    return "Looking for book '{0}' by '{1}'".format(title, author)

@app.post("/books/:author")
def add_book(author=None):
    return "Added book for '{0}'".format(author)

And there you go! Some simple demonstrations of how Hoboken works.

Miscellanea

Hoboken is licensed under the Apache license, and is created and developed by Andrew Dunham.

Something went wrong with that request. Please try again.