Source code for jsonschema_diff.core.abstraction

from enum import Enum
from typing import Any


[docs] class Statuses(Enum): ADDED = "+" DELETED = "-" REPLACED = "r" MODIFIED = "m" NO_DIFF = " " UNKNOWN = "?"
[docs] class ToCompare: def __init__( self, old_key: str | None, old_value: Any, new_key: str | None, new_value: Any ) -> None:
[docs] self.old_key = old_key
[docs] self.old_value = old_value
[docs] self.new_key = new_key
[docs] self.new_value = new_value
if old_key is None and new_key is not None: self.status = Statuses.ADDED self.key = new_key self.value = new_value elif old_key is not None and new_key is None: self.status = Statuses.DELETED self.key = old_key self.value = old_value elif old_key is not None and new_key is not None: if str(new_value) == str(old_value): self.status = Statuses.NO_DIFF else: self.status = Statuses.REPLACED self.key = new_key self.value = new_value else: raise ValueError( "Cannot compare None to None: " f"`{old_key}: {type(old_value).__name__} = {old_value}` -> " f"`{new_key}: {type(new_value).__name__} = {new_value}`" )
[docs] def __repr__(self) -> str: return ( "ToCompare(" f"key={self.key}, old_value={self.old_value}, " f"new_value={self.new_value}, status={self.status.name})" )