perf treport: Fix profile builder type narrowing in progress callback

Mypy does not retain the narrowing of an optional local variable inside
the nested progress callback, causing the perf build to fail with:

  python/treport.py:649: error: Item "None" of "ProfileBuilder | None" has no attribute "cancelled" [union-attr]

Check the loading builder before assigning it to profile so the captured
variable is inferred as ProfileBuilder rather than
Optional[ProfileBuilder]. Keep the existing assertion and background
loading behavior.

Fixes: b379b70b7b ("perf treport: Show the profile while it loads")
Assisted-by: Codex:GPT-6.1-Sol
Signed-off-by: James Clark <james.clark@linaro.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
James Clark 2026-10-06 14:03:32 +01:00 committed by Arnaldo Carvalho de Melo
parent 5927da0078
commit dd1c6ac2f7

View File

@ -638,8 +638,9 @@ class ReportApp(App):
@work(thread=True, exclusive=True)
def load_profile(self) -> None:
"""Build the profile in a thread so the UI stays responsive."""
profile = self.loading
assert profile is not None
loading = self.loading
assert loading is not None
profile = loading
def progress() -> None:
try: