code: def update_config(self, d):
          
          for key, value in d.items():
              if hasattr(self, key):
                  if key == "requirements":
                      items, value = value, []
                      for item in items:
                          if isinstance(item, basestring):
                              req = RequirementConfig(path=item)
                          elif isinstance(item, dict):
                              path, item = item.popitem()
                              req = RequirementConfig(
                                  path=path,
                                  pin=item.get("pin", None),
                                  compile=item.get("compile", False),
                                  update=item.get("update", Config.UPDATE_ALL)
                              )
                          value.append(req)
                          # add constraint requirement files to config
                          if req.compile:
                              for spec in req.compile.specs:
                                  value.append(RequirementConfig(path=spec, pin=False))
                  elif key == "assignees":
                      # assignees can be a string or a list. If it's a string, convert it to a list
                      # to make things consistent
                      if isinstance(value, basestring):
                          value = [value, ]
                  elif key == 'gitlab':
                      value = GitlabConfig(**value)
                  elif key == 'pr_prefix':
                      # make sure that pr prefixes don't contain a PIPE
                      if "|" in value:
                          continue
                  # cast ints and floats to str
                  if isinstance(value, (int, float)) and not isinstance(value, bool):
                      value = str(value)
  
                  setattr(self, key, value)
docs: Updates the config object.
          :param d: dict