#NEWLINE# def update( self , update_dict ) : #NEWLINE# #INDENT# changes = { #NEWLINE# #INDENT# #NEWLINE# #UNINDENT# } #NEWLINE# for ( key , value ) in update_dict . iteritems ( ) : #NEWLINE# #INDENT# if hasattr ( value , 'iteritems' ) : #NEWLINE# #INDENT# sect = _Section ( name = key , inicontents = '' , separator = self . sep , commenter = self . com ) #NEWLINE# sect . update ( value ) #NEWLINE# value = sect #NEWLINE# value_plain = value . as_dict ( ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value = str ( value ) #NEWLINE# value_plain = value #NEWLINE# #UNINDENT# if ( key not in self ) : #NEWLINE# #INDENT# changes . update ( { #NEWLINE# #INDENT# key : { #NEWLINE# #INDENT# 'before' : None , #NEWLINE# 'after' : value_plain , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } ) #NEWLINE# if ( not hasattr ( value , 'iteritems' ) ) : #NEWLINE# #INDENT# self . _uncomment_if_commented ( key ) #NEWLINE# #UNINDENT# super ( _Section , self ) . update ( { #NEWLINE# #INDENT# key : value , #NEWLINE# #UNINDENT# } ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# curr_value = self . get ( key , None ) #NEWLINE# if isinstance ( curr_value , _Section ) : #NEWLINE# #INDENT# sub_changes = curr_value . update ( value ) #NEWLINE# if sub_changes : #NEWLINE# #INDENT# changes . update ( { #NEWLINE# #INDENT# key : sub_changes , #NEWLINE# #UNINDENT# } ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( changes != value ) : #NEWLINE# #INDENT# changes . update ( { #NEWLINE# #INDENT# key : { #NEWLINE# #INDENT# 'before' : curr_value , #NEWLINE# 'after' : value_plain , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } ) #NEWLINE# super ( _Section , self ) . update ( { #NEWLINE# #INDENT# key : value , #NEWLINE# #UNINDENT# } ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# return changes