Marco Nawijn <naw...@gmail.com> wrote: > 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
That sounds like a reasonable approach, thank you (and all the other ideas). -- Chris Green -- http://mail.python.org/mailman/listinfo/python-list