Next release of web.py will be version 0.3. As you number suggests it  
will be major release. There will be some changes to API, which  
breaks the backward compatability. But I promise, it is not going to  
change very much.

Major changes will be
     * return instead of print
     * moving away from globals
     * better db api

Apart from these, the existing subversion repository is be migrated  
to bazaar.
 From now on, the official repository will be

     http://webpy.org/bzr/webpy.dev

Please let me know if you have any suggestions, objections or feature  
requests.
Some of these changes(application stuff and return instead of print)  
are already checked in, I request you to play with it and let me know  
if there are any bugs.

Here is how the new API is going to look like.

## Hello world

`print` will be replaced with `return`.

     import web

     urls = (
         '/(.*)', 'hello'
     )

     # more about this later
     app = web.application(urls, globals())

     class hello:
         def GET(self, name):
             if not name: name = 'world'
             return 'Hello,' + name + '!'

     if __name__ == "__main__":
         app.run()

## database

db configuration will not be global any more. Multiple databases can  
be used at the same time and no `web.load()` magic required to make  
database work.

     import web

     db = web.database(dbn='postgres', db='todo', user='you', pw='')

     db.select('todo')
     db.select('todo', where='id=$id', vars={'id': 2})
     db.query('SELECT * FROM todo')

## application
Application is a new way of mapping urls to classes, coming in 0.3.
There will be many different kinds of supported applications.

### web.application
Application to delegate requests based on path.

     urls = (
         "/hello", "hello",
         "/magic/.*", "magic")

     app = web.application(urls, globals())

### web.auto_application
Application similar to web.application but urls are constructed  
automatiacally using metaclasses.

     app = web.auto_application()

     class hello(app.page):
         def GET(self):
             return "hello, world!"

### web.subdir_application
Application to delegate requests based on subdir.
This allows reuse of code easily by taking some exiting app and  
mounting it at a directory.

     import wiki
     import blog
     import auth

     mapping = (
         "/wiki", wiki.app,
         "/blog", blog.app,
         "/auth", auth.app)

     app = web.subdir_application(mapping)

### web.subdomain_application
Application to delegate requests based on host.
This makes virtual hosting very easy.

     import mainsite
     import usersite

     mapping = (
         "(www\.)?example.com", mainsite.app,
         ".*\.example.com", usersite.app
     )

     app = web.subdomain_application(mapping)

## testing

Testing becomes very easy with applications. Both doctest and  
unittest can be used to test web applications.

doctest:

     urls = ("/hello", "hello")
     app = web.application(urls, globals())

     class hello:
         """Hello world example.

             >>> response = app.request("/hello")
             >>> response.data
             'hello, world!'
             >>> response.status
             '200 OK'
             >>> response.headers['Content-Type']
             'text/plain'
         """
         def GET(self):
             web.header('Content-Type', 'text/plain')
             return "hello, world!"

unittest:

     import unittest
     from helloworld import app

     class HelloWorldTest(unittest.TestCase):
         def testHelloWorld(self):
             response = app.request('GET', '/')
             self.assertEquals(response.data, 'hello, world!')
             self.assertEquals(response.headers['Content-Type'],  
'text/plain')
             self.assertEquals(response.status, '200 OK')

     if __name__ == "__main__":
         unittest.main()

## templates

* no whitespace magic
* better error reporting
* should allow template reuse
* Probably use Adam Atlas's implementation

## Contrib

* New module, `web.contrib` with contributed utilities, which are not  
part of the web.py core. For example, good auth module (port from  
django?) and OpenID support.



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to