MCPcopy Create free account
hub / github.com/doldecomp/mkdd / get_changes

Function get_changes

tools/changes_fmt.py:34–65  ·  view source on GitHub ↗
(changes_file: str)

Source from the content-addressed store, hash-verified

32
33
34def get_changes(changes_file: str) -> Tuple[list[Change], list[Change]]:
35 changes_file = os.path.relpath(changes_file, root_dir)
36 with open(changes_file, "r") as f:
37 changes_json = json.load(f)
38
39 regressions = []
40 progressions = []
41
42 def diff_key(object_name: Optional[str], object: dict, key: str):
43 from_value = object.get("from", {}).get(key, 0.0)
44 to_value = object.get("to", {}).get(key, 0.0)
45 key = key.removesuffix("_percent")
46 change = (object_name, key, from_value, to_value)
47 if from_value > to_value:
48 regressions.append(change)
49 elif to_value > from_value:
50 progressions.append(change)
51
52 for key in UNIT_KEYS_TO_DIFF:
53 diff_key(None, changes_json, key)
54
55 for unit in changes_json.get("units", []):
56 unit_name = unit["name"]
57 for key in UNIT_KEYS_TO_DIFF:
58 diff_key(unit_name, unit, key)
59 # Ignore sections
60 for func in unit.get("functions", []):
61 func_name = func["name"]
62 for key in FUNCTION_KEYS_TO_DIFF:
63 diff_key(func_name, func, key)
64
65 return regressions, progressions
66
67
68def generate_changes_plaintext(changes: list[Change]) -> str:

Callers 1

mainFunction · 0.85

Calls 4

openFunction · 0.85
diff_keyFunction · 0.85
loadMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected