from typing import TypeVar, NamedTuple, Callable, Any, Generic
T = TypeVar("T")
T2 = TypeVar("T2")
class Comparison(NamedTuple, Generic[T]):
comparer: Callable[[T, T], bool]
default: T
def compare(old: T, new: T, comparison: dict[str, Comparison[T2]]) -> bool:
for field, (comparer, default) in comparison.items():
if comparer(getattr(old, field, default), getattr(new, field, default)):
return True
return False
print("A")