"""Undocumented Module""" __all__ = ['Factory'] from direct.directnotify.DirectNotifyGlobal import directNotify class Factory: """This class manages a list of object types and their corresponding constructors. Objects may be created on-demand from their type. Object types may be any hashable piece of unique data (such as a string). This class is intended to be derived from. Subclasses should call self._registerTypes to set up type constructors.""" notify = directNotify.newCategory('Factory') def __init__(self): self._type2ctor = {} def create(self, type, *args, **kwArgs): return self._type2ctor[type](*args, **kwArgs) def _registerType(self, type, ctor): if type in self._type2ctor: self.notify.debug('replacing %s ctor %s with %s' % (type, self._type2ctor[type], ctor)) self._type2ctor[type] = ctor def _registerTypes(self, type2ctor): for type, ctor in type2ctor.items(): self._registerType(type, ctor) def nullCtor(self, *args, **kwArgs): return None