docs: def update_attribute_group(attributegroup, **kwargs):
      """
          Add a new attribute group.
  
          An attribute group is a container for attributes which need to be grouped
          in some logical way. For example, if the 'attr_is_var' flag isn't expressive
          enough to delineate different groupings.
  
          an attribute group looks like:
              {
                  'project_id' : XXX,
                  'name'       : 'my group name'
                  'description : 'my group description' (optional)
                  'layout'     : 'my group layout'      (optional)
                  'exclusive'  : 'N' (or 'Y' )          (optional, default to 'N')
              }
      """
      user_id=kwargs.get('user_id')
  
      if attributegroup.id is None:
          raise HydraError("cannot update attribute group. no ID specified")
  
      try:
  
          group_i = db.DBSession.query(AttrGroup).filter(AttrGroup.id==attributegroup.id).one()
          group_i.project.check_write_permission(user_id)
  
          group_i.name        = attributegroup.name
          group_i.description = attributegroup.description
          group_i.layout      = attributegroup.layout
          group_i.exclusive   = attributegroup.exclusive
  
          db.DBSession.flush()
  
          log.info("Group %s in project %s updated", attributegroup.id, attributegroup.project_id)
      except NoResultFound:
  
          raise HydraError('No Attribute Group %s was found in project %s', attributegroup.id, attributegroup.project_id)
  
  
      return group_i