def xxx(events: list[TraceEvent]) -> None:
timed: list[PauseEvent | CounterEvent | InstantEvent] = []
for event in events:
if event["ph"] in ("X", "C", "I"):
timed.append(event)
ERROR Argument `CounterEvent | IncrementalEvent | InstantEvent | PauseEvent | ProcessMeta | ThreadMeta` is not assignable to parameter `object` with type `CounterEvent | IncrementalEvent | InstantEvent | PauseEvent` in function `list.append` [bad-argument-type]
--> src\gc_monitor\exporters\chrome_trace_io.py:125:26
|
125 | timed.append(event)
| ^^^^^
|
Field `name` in `ProcessMeta` has type `Literal['process_name']`, which is not consistent with `str` in `CounterEvent` (read-write fields must have the same type)
INFO 1 error
Describe the Bug
In the following example, the type is not narrowed:
With error:
Mypy does it right since 1.20.0: https://mypy-play.net/?mypy=latest&python=3.14&gist=8cb6b9d333395c90f9cd2a446d5fc30c
Sandbox Link
https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0AZCAxiVUUADR0AcrgYAlGAEcArhEoxMUgCrNNAEQgBjBgB105o1FRw4dAJLo4DDAwCiANxjoGACl3EBsYMAJSI5nSRdOioNDCIdM6UEVHEABYJQiJiUADapiD2BQC6KZFwmcKi4vkgxCXmjehWNnYACqgqcDCe3n4BQSZhZdGx8YkMyehRdEaoDAlJI%2BmV2TUFABoN01EMFZw%2BTS22dADCuCo%2Bor0%2B-nqYhkPhO5ExcYuTyxmCVTm1p9sZnsEqwzBZwcd2tQjPA4ABZGAuO6BB7BYYvUbvH5rPIFYjQ2EAfTeMEBqW%2BWWquJAcO25m0YhhN34AF46B0uj0vD46AAfM4XK6UZl89kE2wIlyixzOVzMprmTAwMB0fBq3wwbnAuhQCDOXIM1BMrXFEJ0AC0AD4ZLh0PERgwuJoErr9RzuiL%2BedLtlPQ4nC4fMzinQ2blShiwLw6Jq%2BgcY1qKiMZhAVbGfLV0iV475NgUpAUASAC4UCuiZhXdk7MIRUMRAlgNVqQuZi3VSBowFBSIQGLQoBQAMTsjvK7uJDA4AizW2QNgqMSO22EczDgDKMBgdDSDAYxAqAHoD2RO93CLw2AfvAfMLgjHAD0ZZxB54uILaD3Qo5Q6KgPKhoFQbBYBndA5wXeZ32mXBiCXJwV3QMgGDSW1zS8Sg4Cg0M6AKABmQgAEYABYCnMXJRGoDCI0uLgeD4TRzUwdQYBMCAvGwgByF90F4GAOPMHiGHNDRVGYzBzQAaxgUhzSNGETjZDiAHdUEodB%2BPQEAAF8JBAI1HS8AAxaAYAoNAsDwIgyG0oA
(Only applicable for extension issues) IDE Information
No response