test(ingest/testing-utils): Add back delta info ignore path (#8402)

This commit is contained in:
Andrew Sikowitz 2023-07-11 20:57:29 -04:00 committed by GitHub
parent 779d692cdc
commit 71f80b6207
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 9 deletions

View File

@ -89,7 +89,7 @@ def diff_metadata_json(
golden: MetadataJson,
ignore_paths: Sequence[str] = (),
) -> Union[DeepDiff, MCPDiff]:
ignore_paths = (*ignore_paths, *default_exclude_paths)
ignore_paths = (*ignore_paths, *default_exclude_paths, r"root\[\d+].delta_info")
try:
golden_map = get_aspects_by_urn(golden)
output_map = get_aspects_by_urn(output)

View File

@ -1,6 +1,7 @@
import dataclasses
import json
import re
from collections import defaultdict
from dataclasses import dataclass, field
from typing import Any, Dict, List, Sequence, Set, Tuple, Union
import deepdiff.serialization
@ -27,13 +28,13 @@ ReportType = Literal[
]
@dataclass(frozen=True)
@dataclasses.dataclass(frozen=True)
class AspectForDiff:
urn: str
change_type: str
aspect_name: str
aspect: Dict[str, Any] = field(hash=False)
delta_info: "DeltaInfo" = field(hash=False)
aspect: Dict[str, Any] = dataclasses.field(hash=False)
delta_info: "DeltaInfo" = dataclasses.field(hash=False, repr=False)
@classmethod
def create_from_mcp(cls, idx: int, obj: Dict[str, Any]) -> "AspectForDiff":
@ -46,8 +47,17 @@ class AspectForDiff:
delta_info=DeltaInfo(idx=idx, original=obj),
)
def __repr__(self):
d = {
field.name: getattr(self, field.name)
for field in dataclasses.fields(self)
if field.repr
}
d["aspect"] = "<aspect>"
return "\n" + "\t" * 2 + str(json.dumps(d))
@dataclass
@dataclasses.dataclass
class DeltaInfo:
"""Information about an MCP used to construct a diff delta.
@ -59,6 +69,10 @@ class DeltaInfo:
class DeltaInfoOperator(BaseOperator):
"""Warning: Doesn't seem to be working right now.
Ignored via an ignore path as an extra layer of defense.
"""
def __init__(self):
super().__init__(types=[DeltaInfo])
@ -93,7 +107,7 @@ def get_aspects_by_urn(obj: object) -> AspectsByUrn:
return d
@dataclass
@dataclasses.dataclass
class MCPAspectDiff:
aspects_added: Dict[int, AspectForDiff]
aspects_removed: Dict[int, AspectForDiff]
@ -126,7 +140,7 @@ class MCPAspectDiff:
)
@dataclass
@dataclasses.dataclass
class MCPDiff:
aspect_changes: Dict[str, Dict[str, MCPAspectDiff]] # urn -> aspect -> diff
urns_added: Set[str]
@ -169,7 +183,7 @@ class MCPDiff:
def convert_path(path: str) -> str:
# Attempt to use paths intended for the root golden... sorry for the regex
return re.sub(
r"root\\?\[([0-9]+|\\d\+)\\?]\\?\['aspect'\\?](\\?\['(json|value)'\\?])?",
r"^root\\?\[([0-9]+|\\d\+)\\?]\\?\['aspect'\\?](\\?\['(json|value)'\\?])?",
r"root\[\\d+].aspect",
path,
)