Skip to content

Commit 1094e5b

Browse files
committed
fix segfault on pypy 3.10 on ubuntu
1 parent 270c9d2 commit 1094e5b

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

tests/opentelemetry-test-utils/src/opentelemetry/test/weaver_live_check.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,24 +52,21 @@ def _extract_violations(report: dict) -> list:
5252
raw: list[dict] = []
5353

5454
def _collect(obj: Any) -> list[dict]:
55-
match obj:
56-
case {"live_check_result": {"all_advice": advices}, **_rest}:
57-
violations = [
58-
a for a in advices if a.get("level") == "violation"
59-
]
60-
return violations + list(
61-
chain.from_iterable(_collect(v) for v in obj.values())
62-
)
63-
case dict():
64-
return list(
65-
chain.from_iterable(_collect(v) for v in obj.values())
66-
)
67-
case list():
68-
return list(
69-
chain.from_iterable(_collect(item) for item in obj)
70-
)
71-
case _:
72-
return []
55+
if isinstance(obj, dict):
56+
result: list[dict] = []
57+
lcr = obj.get("live_check_result")
58+
if isinstance(lcr, dict):
59+
advices = lcr.get("all_advice")
60+
if isinstance(advices, list):
61+
result.extend(
62+
a for a in advices if a.get("level") == "violation"
63+
)
64+
for v in obj.values():
65+
result.extend(_collect(v))
66+
return result
67+
if isinstance(obj, list):
68+
return list(chain.from_iterable(_collect(item) for item in obj))
69+
return []
7370

7471
raw = _collect(report)
7572

0 commit comments

Comments
 (0)