code: def update(self, arg, allow_overwrite=False):
          
          # If arg happens to be an ICatalog subclass
          if inspect.isclass(arg) and issubclass(arg, ICatalog) or isinstance(arg, ICatalog):
              arg = arg._providers
          if not allow_overwrite:
              for key in arg:
                  if key in self._providers:
                      raise KeyError("Key %s already exists" % key)
          super(ProviderMapping, self).update(arg)
docs: Update our providers from either an ICatalog subclass/instance or a mapping.
  
          If arg is an ICatalog, we update from it's ._providers attribute.
  
          :param arg: Di/Catalog/Mapping to update from.
          :type arg: ICatalog or collections.Mapping
          :param allow_overwrite: If True, allow overwriting existing keys
          :type allow_overwrite: bool