def test_flatten(): in_list = [[1, 2, 3], [4], [[5, 6], 7], 8] flat = flatten(in_list) assert flat == [1, 2, 3, 4, 5, 6, 7, 8] back = unflatten(flat, in_list) assert in_list == back new_list = [2, 3, 4, 5, 6, 7, 8, 9] back = unflatten(new_list, in_list) assert back == [[2, 3, 4], [5], [[6, 7], 8], 9] flat = flatten([]) assert flat == [] back = unflatten([], []) assert back == []
def test_flatten(): in_list = [[1, 2, 3], [4], [[5, 6], 7], 8] flat = flatten(in_list) yield assert_equal, flat, [1, 2, 3, 4, 5, 6, 7, 8] back = unflatten(flat, in_list) yield assert_equal, in_list, back new_list = [2, 3, 4, 5, 6, 7, 8, 9] back = unflatten(new_list, in_list) yield assert_equal, back, [[2, 3, 4], [5], [[6, 7], 8], 9] flat = flatten([]) yield assert_equal, flat, [] back = unflatten([], []) yield assert_equal, back, []
def _get_hashval(self): """Compute hash including iterfield lists.""" self._get_inputs() if self._hashvalue is not None and self._hashed_inputs is not None: return self._hashed_inputs, self._hashvalue self._check_iterfield() hashinputs = copy.deepcopy(self._interface.inputs) for name in self.iterfield: hashinputs.remove_trait(name) hashinputs.add_trait( name, InputMultiPath( self._interface.inputs.traits()[name].trait_type)) logger.debug('setting hashinput %s-> %s', name, getattr(self._inputs, name)) if self.nested: setattr(hashinputs, name, flatten(getattr(self._inputs, name))) else: setattr(hashinputs, name, getattr(self._inputs, name)) for f in self.ignore_cache: try: delattr(hashinputs, f) except: pass hashed_inputs, hashvalue = hashinputs.get_hashval( hash_method=self.config['execution']['hash_method']) rm_extra = self.config['execution']['remove_unnecessary_outputs'] if str2bool(rm_extra) and self.needed_outputs: hashobject = md5() hashobject.update(hashvalue.encode()) sorted_outputs = sorted(self.needed_outputs) hashobject.update(str(sorted_outputs).encode()) hashvalue = hashobject.hexdigest() hashed_inputs.append(('needed_outputs', sorted_outputs)) self._hashed_inputs, self._hashvalue = hashed_inputs, hashvalue return self._hashed_inputs, self._hashvalue