code: def rename_component(self, old_component, new_component):
          
          # TODO: raise error if old_component not found?
  
          # even though _rename_tag will call _check_label again, we should
          # do it first so that we can raise any errors BEFORE we start messing
          # with the hierarchy
          self._check_label(new_component)
          # changing hierarchy must be called first since it needs to access
          # the kind of old_component
          if len([c for c in self.components if new_component in c]):
              logger.warning("hierarchy may not update correctly with new component")
          self.hierarchy.rename_component(old_component, new_component)
  
          self._rename_label('component', old_component, new_component)
  
          self._handle_dataset_selectparams()
docs: Change the label of a component attached to the Bundle
  
          :parameter str old_component: the current name of the component
              (must exist)
          :parameter str new_component: the desired new name of the component
              (must not exist)
          :return: None
          :raises ValueError: if the new_component is forbidden