def testSimple(self): self.assertTrue(pruneNulls(VALUES) == VALUES) extended_values = list(VALUES) extended_values.append(None) self.assertTrue(pruneNulls(extended_values) == VALUES) extended_values.append(np.nan) self.assertTrue(pruneNulls(extended_values) == VALUES)
def makeList(val): result = cell_types.makeIterable(val) pruned_result = pruneNulls(result) if isinstance(pruned_result, list): return pruned_result else: return [v for v in pruned_result]
def isEquivalentData(val1, val2): """ Determines if two objects are equivalent. Recursively inspects iterables. :param object val1, val2: :return bool: """ warnings.filterwarnings('error') try: if isStr(val1) and isStr(val2): return val1 == val2 # Catch where this becomes a warning except Warning: import pdb; pdb.set_trace() pass if isIterable(val1): try: pruned_val1 = pruneNulls(val1) pruned_val2 = pruneNulls(val2) if len(pruned_val1) == len(pruned_val2): length = len(pruned_val1) for idx in range(length): if not isEquivalentData(pruned_val1[idx], pruned_val2[idx]): return False return True else: return False except TypeError as err: return False elif isinstance(val2, collections.Iterable) and not isStr(val2): return False else: if isFloat(val1) and isEquivalentFloats(val1, val2): return True try: if val1 == val2: return True except: pass values = coerceData([val1, val2]) coerced_val1 = values[0] coerced_val2 = values[1] if isFloat(coerced_val1): return isEquivalentFloats(coerced_val1, coerced_val2) else: return coerced_val1 == coerced_val2
def test4(self): self.assertEqual(len(pruneNulls([np.nan, np.nan])), 0)
def testEmbeddedNulls(self): extended_values = list(VALUES) extended_values.insert(0, None) self.assertTrue(pruneNulls(extended_values) == extended_values)