There is no need for magic around url:

    self.db = couchdb.Database(dburl) 
    try:
         self.db.resource.head() # ping db
    except couchdb.ResourceNotFound as err:
        try:
            self.db.resource.put() # attempt to create db
        except couchdb.Forbidden:
            raise err

The reason why to use HTTP requests instead of parsing URL is that database url may be rewritted by some proxy like nginx. For instance:  provided dburl is `http://dbname.couchdb.org/` while it going to be rewritted into `http://localhost:5984/dbname` so you will have no access to server root resource and the `Server` object would be broken. This is pretty much common rewrite rule to just ignore it.

Anyway, don't worry about, I'll update PR a bit later today.