From 92a60326c82002941943afa3c8e3aa32cfac7bf5 Mon Sep 17 00:00:00 2001 From: Kevin Turcios Date: Mon, 12 May 2025 18:27:59 -0700 Subject: [PATCH 1/2] add array.array t comparator --- codeflash/verification/comparator.py | 10 ++++++++++ tests/test_comparator.py | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/codeflash/verification/comparator.py b/codeflash/verification/comparator.py index ce166cdfc..c9e85d888 100644 --- a/codeflash/verification/comparator.py +++ b/codeflash/verification/comparator.py @@ -1,3 +1,4 @@ +import array import ast import datetime import decimal @@ -170,6 +171,15 @@ def comparator(orig: Any, new: Any, superset_obj=False) -> bool: if HAS_PANDAS and pandas.isna(orig) and pandas.isna(new): return True + if isinstance(orig, array.array): + if not isinstance(new, array.array): + return False + if orig.typecode != new.typecode: + return False + if len(orig) != len(new): + return False + return all(comparator(elem1, elem2, superset_obj) for elem1, elem2 in zip(orig, new)) + # This should be at the end of all numpy checking try: if HAS_NUMPY and np.isnan(orig): diff --git a/tests/test_comparator.py b/tests/test_comparator.py index b8d789401..c94abb277 100644 --- a/tests/test_comparator.py +++ b/tests/test_comparator.py @@ -7,6 +7,7 @@ import sys from enum import Enum, Flag, IntFlag, auto from pathlib import Path +import array # Add import for array import pydantic import pytest @@ -203,6 +204,24 @@ class Color4(IntFlag): assert not comparator(a, c) assert not comparator(a, d) + arr1 = array.array('i', [1, 2, 3]) + arr2 = array.array('i', [1, 2, 3]) + arr3 = array.array('i', [4, 5, 6]) + arr4 = array.array('f', [1.0, 2.0, 3.0]) + + assert comparator(arr1, arr2) + assert not comparator(arr1, arr3) + assert not comparator(arr1, arr4) + assert not comparator(arr1, [1, 2, 3]) + + empty_arr_i1 = array.array('i') + empty_arr_i2 = array.array('i') + empty_arr_f = array.array('f') + assert comparator(empty_arr_i1, empty_arr_i2) + assert not comparator(empty_arr_i1, empty_arr_f) + assert not comparator(empty_arr_i1, arr1) + + def test_numpy(): try: From ca9f0046662ef94adf012c9f1c5899f1efe81b07 Mon Sep 17 00:00:00 2001 From: Saurabh Misra Date: Mon, 12 May 2025 18:44:08 -0700 Subject: [PATCH 2/2] Update codeflash/verification/comparator.py --- codeflash/verification/comparator.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/codeflash/verification/comparator.py b/codeflash/verification/comparator.py index c9e85d888..1e13eb1cf 100644 --- a/codeflash/verification/comparator.py +++ b/codeflash/verification/comparator.py @@ -172,8 +172,6 @@ def comparator(orig: Any, new: Any, superset_obj=False) -> bool: return True if isinstance(orig, array.array): - if not isinstance(new, array.array): - return False if orig.typecode != new.typecode: return False if len(orig) != len(new):