#NEWLINE# @ utils . Synchronized #NEWLINE# def DeleteAttribute( self , attribute ) : #NEWLINE# #INDENT# 'Clears the attribute from this object.' #NEWLINE# if ( 'w' not in self . mode ) : #NEWLINE# #INDENT# raise IOError ( ( 'Deleting attribute %s from read only object.' % attribute ) ) #NEWLINE# #UNINDENT# if ( ( self . mode != 'w' ) and attribute . lock_protected and ( not self . transaction ) ) : #NEWLINE# #INDENT# raise IOError ( ( 'Object must be locked to delete attribute %s.' % attribute ) ) #NEWLINE# #UNINDENT# if ( attribute in self . synced_attributes ) : #NEWLINE# #INDENT# self . _to_delete . add ( self ) #NEWLINE# del self . synced_attributes [ attribute ] #NEWLINE# #UNINDENT# if ( attribute in self . new_attributes ) : #NEWLINE# #INDENT# del self . new_attributes [ attribute ] #NEWLINE# #UNINDENT# if ( attribute . versioned and attribute . creates_new_object_version ) : #NEWLINE# #INDENT# self . _new_version = True #NEWLINE# #UNINDENT# self . _dirty = True