Graham Dumpleton
grahamd at dscpl.com.au
Wed Oct 19 05:15:45 EDT 2005
On 19/10/2005, at 2:16 PM, Graham Dumpleton wrote: > > Now if I create a mod_python.publisher function: > > import pyexpat > > def index(): > return pyexpat.version_info > > and access that page, I get returned: > > 1952 > > I don't quite understand why it is returning an integer rather than > a tuple, > it may actually indicate a problem. As one can see though, it is > now actually > using 1.95.2 which Apache loaded and not that embedded in the pyexpat > Python module .so. Remember now why it is an integer. In mod_python.publisher in mod_python 3.2 the behaviour changed in respect of how iterable values are converted to a string. Prior to 3.2, a list would be converted using str(). In 3.2 it uses the code: elif hasattr(object,'__iter__'): # To publish iterables, we recursively publish each item # This way, generators can be published result = False for item in object: result |= publish_object(req,item) return result That is, it iterates over each item, effectively concatenating together the values for each item. Thus we get "1952" instead of "(1,95,2)". I wasn't keen on this when I saw it had been done and still not happy about it. I felt that this is something that should have been done at the user level. :-( Graham
|