code: def delete_source(self, name, save_template=True, delete_source_map=False,
                        build_fixed_wts=True, **kwargs):
          
  
          if not self.roi.has_source(name):
              self.logger.error('No source with name: %s', name)
              return
  
          loglevel = kwargs.pop('loglevel', self.loglevel)
  
          self.logger.log(loglevel, 'Deleting source %s', name)
  
          # STs require a source to be freed before deletion
          if self.like is not None:
              self.free_norm(name, loglevel=logging.DEBUG)
  
          for c in self.components:
              c.delete_source(name, save_template=save_template,
                              delete_source_map=delete_source_map,
                              build_fixed_wts=build_fixed_wts)
  
          src = self.roi.get_source_by_name(name)
          self.roi.delete_sources([src])
          if self.like is not None:
              self.like.model = self.like.components[0].model
              self._update_roi()
          return src
docs: Delete a source from the ROI model.
  
          Parameters
          ----------
          name : str
              Source name.
  
          save_template : bool
              Keep the SpatialMap FITS template associated with this
              source.
  
          delete_source_map : bool
              Delete the source map associated with this source from the
              source maps file.
  
          Returns
          -------
          src : `~fermipy.roi_model.Model`
              The deleted source object.