--- descr.py 2006-04-10 17:42:53.000000000 -0700 +++ descr-fix.py 2006-10-11 22:27:10.000000000 -0700 @@ -6,7 +6,7 @@ class FileDescr(object): saved = [] - def __init__(self, name=None): + def __init__(self, name): self.name = name def __get__(self, obj, typ=None): @@ -26,14 +26,13 @@ "could not read %r: %s" % self.name def __set__(self, obj, val): - f = open(self.name, 'w') try: - try: - pickle.dump(val, f) - FileDescr.saved.append(self.name) - except (TypeError, pickle.PicklingError), e: - raise AttributeError, \ - "could not pickle %r" % self.name + f = open(self.name, 'w') + pickle.dump(val, f) + FileDescr.saved.append(self.name) + except (IOError, TypeError, pickle.PicklingError), e: + raise AttributeError, \ + "could not pickle %r" % self.name finally: f.close()