parameters: (self, source, destination)
docstring: merge recursively source into destination
              for dict => if the key in source exists in destination
                  we replace simple values and merge dicts and lists
              for list => we browse source
                  if there is an element at the same index in destination,
                      we replace simple values and merge dicts and lists
                  otherwise
                      we add the source list element at the end of destination list
docstring_summary: merge recursively source into destination
              for dict => if the key in source exists in destination
                  we replace simple values and merge dicts and lists
              for list => we browse source
                  if there is an element at the same index in destination,
                      we replace simple values and merge dicts and lists
                  otherwise
                      we add the source list element at the end of destination list
docstring_tokens: merge recursively source into destination for dict = > if the key in source exists in destination we replace simple values and merge dicts and lists for list = > we browse source if there is an element at the same index in destination we replace simple values and merge dicts and lists otherwise we add the source list element at the end of destination list
function: def _merge(self, source, destination):
          """
          merge recursively source into destination
              for dict => if the key in source exists in destination
                  we replace simple values and merge dicts and lists
              for list => we browse source
                  if there is an element at the same index in destination,
                      we replace simple values and merge dicts and lists
                  otherwise
                      we add the source list element at the end of destination list
          """
          if isinstance(source, dict):
              for k, v in source.iteritems():
                  if isinstance(v, dict):
                      node = destination.setdefault(k, {})
                      self._merge(v, node)
                  elif isinstance(v, list):
                      if k in destination:
                          self._merge(v, destination[k])
                      else:
                          destination[k] = v
                  else:
                      destination[k] = v
          elif isinstance(source, list):
              for i in range(len(source)):
                  if i < len(destination):
                      if isinstance(source[i], dict) or isinstance(source[i], list):
                          self._merge(source[i], destination[i])
                      else:
                          destination[i] = source[i]
                  else:
                      destination.append(source[i])
function_tokens: def _merge ( self , source , destination ) : if isinstance ( source , dict ) : for k , v in source . iteritems ( ) : if isinstance ( v , dict ) : node = destination . setdefault ( k , { } ) self . _merge ( v , node ) elif isinstance ( v , list ) : if k in destination : self . _merge ( v , destination [ k ] ) else : destination [ k ] = v else : destination [ k ] = v elif isinstance ( source , list ) : for i in range ( len ( source ) ) : if i < len ( destination ) : if isinstance ( source [ i ] , dict ) or isinstance ( source [ i ] , list ) : self . _merge ( source [ i ] , destination [ i ] ) else : destination [ i ] = source [ i ] else : destination . append ( source [ i ] )