MCPcopy Create free account
hub / github.com/Snapchat/Valdi / _diff_classes

Function _diff_classes

tools/api_surface/check_api_surface.py:119–166  ·  view source on GitHub ↗

Compare class definitions. Returns (warnings, errors).

(baseline: dict, current: dict)

Source from the content-addressed store, hash-verified

117
118
119def _diff_classes(baseline: dict, current: dict):
120 """Compare class definitions. Returns (warnings, errors)."""
121 warnings = []
122 errors = []
123
124 baseline_names = set(baseline.keys())
125 current_names = set(current.keys())
126
127 for name in sorted(baseline_names - current_names):
128 errors.append(f"Removed class '{name}'")
129
130 for name in sorted(current_names - baseline_names):
131 warnings.append(f"Added class '{name}'")
132
133 for name in sorted(baseline_names & current_names):
134 b_cls = baseline[name]
135 c_cls = current[name]
136
137 # Check extends
138 if b_cls.get("extends") != c_cls.get("extends"):
139 warnings.append(
140 f"Changed '{name}' extends:\n"
141 f" baseline: {b_cls.get('extends')}\n"
142 f" current: {c_cls.get('extends')}"
143 )
144
145 # Check methods
146 b_methods = b_cls.get("methods", {})
147 c_methods = c_cls.get("methods", {})
148
149 b_keys = set(b_methods.keys())
150 c_keys = set(c_methods.keys())
151
152 for method in sorted(b_keys - c_keys):
153 errors.append(f"Removed '{name}.{method}' (was: {b_methods[method]})")
154
155 for method in sorted(c_keys - b_keys):
156 warnings.append(f"Added '{name}.{method}': {c_methods[method]}")
157
158 for method in sorted(b_keys & c_keys):
159 if b_methods[method] != c_methods[method]:
160 warnings.append(
161 f"Changed '{name}.{method}':\n"
162 f" baseline: {b_methods[method]}\n"
163 f" current: {c_methods[method]}"
164 )
165
166 return warnings, errors
167
168
169def check(open_source_root: Path, strict: bool = False) -> int:

Callers 1

checkFunction · 0.85

Calls 4

keysMethod · 0.65
appendMethod · 0.65
getMethod · 0.65
setFunction · 0.50

Tested by

no test coverage detected