def unregister(self, cls): try: if self.__values[cls.key] != cls: # dont allow unregistering of arbitrary provider raise NotRegistered(cls.key) except KeyError: # we gracefully handle a missing provider return del self.__values[cls.key]
def get(self, key, **kwargs): try: cls = self.__values[key] except KeyError: raise NotRegistered(key) return cls(**kwargs)