On Monday, October 15, 2012 1:33:02 PM UTC+2, (unknown) wrote: > I want to fix an error in some code I have installed, however I don't > > really want to just bodge it. > > > > The function producing the error is:- > > > > def get_text(self, idx): # override ! > > node = self.items[idx] > > > > a= [ > > ", ".join(node.tags), > > node.comment, > > node.folderName, > > cd2rd(node.date), > > node.name, > > '[' + self.rating_stars[node.rating] + ']' > > ] [self.select] > > > > return a > > > > > > The error occurs when node[] (or at least its members) turn out to be > > empty, you get a Traceback that ends with:- > > > > File "/usr/lib/jbrout/jbrout/listview.py", line 608, in draw_cell > layout.set_text(self.get_text(thumbnail_num)) > > File "/usr/lib/jbrout/jbrout.py", line 325, in get_text ", > ".join(node.tags), > > TypeError: sequence item 0: expected string, NoneType found > > > > Now its *probably* something higher up the tree causing the problem > > (it's only one particular image in 20 thousand or so that breaks > > things) but I really want to just get things working. So, what's the > > neatest way to protect the get_text() method from empty data? > > > > > > -- > > Chris Green Hi,
Instead of protecting against empty data, you could just catch the exception, issue a warning and return a default "error" node which is valid. So something like (not tested): def get_text(self, idx): # override ! node = self.items[idx] error_a = "A valid, but erroneous representation of a" try: a= [ ", ".join(node.tags), node.comment, node.folderName, cd2rd(node.date), node.name, '[' + self.rating_stars[node.rating] + ']' ] [self.select] except TypeError: print 'Oops, something went wrong' a = error_a # You should always have a valid a here (or another exception has occured) return a -- http://mail.python.org/mailman/listinfo/python-list