code: def notify_update(self, update, urgent=False):
          
          if not isinstance(update, list):
              update = [update]
          self.update_queue.extend(update)
  
          # find containers that use the modules that updated
          containers = self.config["py3_config"][".module_groups"]
          containers_to_update = set()
          for item in update:
              if item in containers:
                  containers_to_update.update(set(containers[item]))
          # force containers to update
          for container in containers_to_update:
              container_module = self.output_modules.get(container)
              if container_module:
                  # If the container registered a urgent_function then call it
                  # if this update is urgent.
                  if urgent and container_module.get("urgent_function"):
                      container_module["urgent_function"](update)
                  # If a container has registered a content_function we use that
                  # to see if the container needs to be updated.
                  # We only need to update containers if their active content has
                  # changed.
                  if container_module.get("content_function"):
                      if set(update) & container_module["content_function"]():
                          container_module["module"].force_update()
                  else:
                      # we don't know so just update.
                      container_module["module"].force_update()
  
          # we need to update the output
          if self.update_queue:
              self.update_request.set()
docs: Name or list of names of modules that have updated.