diff --git a/osc/util/safewriter.py b/osc/util/safewriter.py index 079e3d83..3d92fcf9 100644 --- a/osc/util/safewriter.py +++ b/osc/util/safewriter.py @@ -1,29 +1,23 @@ # be careful when debugging this code: # don't add print statements when setting sys.stdout = SafeWriter(sys.stdout)... -class SafeWriter: +class SafeWriter(object): """ Safely write an (unicode) str. In case of an "UnicodeEncodeError" the the str is encoded with the "encoding" encoding. All getattr, setattr calls are passed through to the "writer" instance. """ def __init__(self, writer, encoding='unicode_escape'): - self.__dict__['writer'] = writer - self.__dict__['encoding'] = encoding - - def __get_writer(self): - return self.__dict__['writer'] - - def __get_encoding(self): - return self.__dict__['encoding'] + self._writer = writer + self._encoding = encoding def write(self, s): try: - self.__get_writer().write(s) + self._writer.write(s) except UnicodeEncodeError as e: - self.__get_writer().write(s.encode(self.__get_encoding())) + self._writer.write(s.encode(self._encoding)) def __getattr__(self, name): - return getattr(self.__get_writer(), name) + return getattr(self._writer, name) def __setattr__(self, name, value): - setattr(self.__get_writer(), name, value) + super(SafeWriter, self).__setattr__(name, value)