for on_preprocess in on_layer.get_preprocess_layers(): # Depend on the layer's pre-process my_preprocess.depend_on(on_preprocess, DependType.LayerOnLayer) # # Handle depend propigation. # # Propigation occurs when a layer A depends on layer B, and # layer C depends on layer D, but Layer A also depends on Layer # C, which means layer D must now also depend on layer B. # # Currently this creates a depend-all (LayerOnLayer) between # the propigated depends. # for depend in on_layer.get_depends(): if depend.is_propigated(): for my_depend in self.get_depends(): dependant = my_depend.get_depend_on_layer() logger.info("propigating dependency %s -> %s" % (dependant, depend.get_depend_on_layer())) dependant.depend_all(depend.get_depend_on_layer(), propigate=False) def undepend(self, depend): """ Remove the given dependency. If the dependency does not exist no exception is thrown. """ try: self.__depends.remove(depend) except Exception, e: