You can do a= {'foo-':'bar','bar':'foo'} HTTP(404,**a)
On Aug 5, 5:45 am, Niphlod <niph...@gmail.com> wrote: > ok, I digged more, and sadly I think that for problem 1) HTTP should > be rewritten, or at least a new class should be extended to let more > flexibility. > > Don't know if I'm boring some ultra-technical pythonist, but I'll try > to explain what I managed to understand. > > this is how HTTP is defined in http.py : > > class HTTP(BaseException): > > def __init__( self, status, body='', **headers ): > bla bla bla > > basically, every extra argument passed get transformed to a dict and > passed along with the function. > > eg. HTTP(401,['hello'],foo='bar', bar='foo') ---> HTTP(401, > ['hello'],dict(foo='bar',bar='foo')) --> __init__ done > > Now, the hard part: dict() only allow "keyword" syntax for the keys, > and that will be in our case the various headers "name", while their > values should be header content. Unfortunately, keywords accept > letters, digit and underscore.... no dash. > > In fact: > ************** > python> a= dict(foo='bar',bar='foo') > > a= dict(foo_1='bar',bar='foo') > > a= dict(foo-1='bar',bar='foo') > > SyntaxError: keyword can't be an expression > ************** > > So, we can't actually pass any header to HTTP() without interfering > with dict() call that gets called on **headers if our keyword contains > '-' . That eliminates a LOT of standard headers and make HTTP quite > unuseful... I can't get the reason behind this wasn't a problem for > peoples writing APIs or services.... > > Another question popped: can we use response.status and > response.headers ? It seems that if my controller function return > anything (string, list or dict) the status is always 200 and no added > headers show up in firebug....