def updateFunctionPort(self):
        nameInput = self.get_input('InputPort')
        nameOutput = self.get_input('OutputPort')
        rawInputList = self.get_input('InputList')

        # Create inputList to always have iterable elements
        # to simplify code
        if len(nameInput) == 1:
            element_is_iter = False
            inputList = [[element] for element in rawInputList]
        else:
            element_is_iter = True
            inputList = rawInputList
        suspended = []
        loop = self.logging.begin_loop_execution(self, len(inputList))
        ## Update everything for each value inside the list
        for i, element in enumerate(inputList):
            self.logging.update_progress(self, float(i)/len(inputList))
            if element_is_iter:
                self.element = element
            else:
                self.element = element[0]
            do_operation = True
            for connector in self.inputPorts.get('FunctionPort'):
                module = copy.copy(connector.obj)

                if not self.upToDate: # pragma: no branch
                    ## Type checking
                    if i == 0:
                        self.typeChecking(module, nameInput, inputList)

                    module.upToDate = False
                    module.computed = False

                    self.setInputValues(module, nameInput, element, i)

                loop.begin_iteration(module, i)

                try:
                    module.update()
                except ModuleSuspended, e:
                    suspended.append(e)
                    do_operation = False
                    loop.end_iteration(module)
                    continue

                loop.end_iteration(module)

                ## Getting the result from the output port
                if nameOutput not in module.outputPorts:
                    raise ModuleError(module,
                                      'Invalid output port: %s' % nameOutput)
                self.elementResult = module.get_output(nameOutput)
            if do_operation:
                self.operation()

            self.logging.update_progress(self, i * 1.0 / len(inputList))

        if suspended:
            raise ModuleSuspended(
                    self,
                    "function module suspended in %d/%d iterations" % (
                            len(suspended), len(inputList)),
                    children=suspended)
        loop.end_loop_execution()
Post-fork() child callback for ProcessManager.daemonize().
dataset/ETHPy150Open VisTrails/VisTrails/vistrails/packages/controlflow/fold.py/FoldWithModule.updateFunctionPort--crossover with--dataset/ETHPy150Open pantsbuild/pants/src/python/pants/reporting/reporting_server.py/ReportingServerManager.post_fork_child