From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Lalit Maganti <lalitmaganti@gmail.com>
Cc: irogers@google.com, namhyung@kernel.org, james.clark@linaro.org,
adrian.hunter@intel.com, linux-perf-users@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf pmu-events: Fix jevents.py type annotations for mypy 2.x
Date: Tue, 27 Oct 2026 17:38:11 -0300 [thread overview]
Message-ID: <auELs_5MK1Z3_78c@phoenix2> (raw)
In-Reply-To: <20261018065345.918176-1-lalitmaganti@gmail.com>
On Sun, Oct 18, 2026 at 07:53:45AM +0100, Lalit Maganti wrote:
> Since the build runs mypy whenever it is installed, the perf build fails
> with mypy 2.4 on 7 errors in jevents.py, e.g.:
>
> pmu-events/jevents.py:542: error: Item "None" of "str | None" has no
> attribute "replace" [union-attr]
> pmu-events/jevents.py:563: error: Item "None" of "BigCString | None"
> has no attribute "offsets" [union-attr]
>
> Both come from wrong annotations rather than from code that can see
> None:
> - unit_to_pmu() is annotated as returning Optional[str] but always
> returns a string, so JsonEvent.pmu is typed as optional where it is
> used as a str.
> - _bcs is set to None before the BigCString class is defined and only
> assigned an instance after it, so mypy types it as BigCString | None.
>
> Correct the return type and declare _bcs with its type instead of the
> None placeholder. The generated pmu-events.c and pmu-events-string.c
> are unchanged, and mypy 1.9 still passes.
>
> Fixes: b3e9c396d0ac ("perf build: Make mypy build test opt-out (NO_MYPY=1)")
> Assisted-by: LLM
> Signed-off-by: Lalit Maganti <lalitmaganti@gmail.com>
Looks ok,
Thanks, applied for v7.4.
- Arnaldo
> ---
> tools/perf/pmu-events/jevents.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
> index cc143f7e7cdf..080e04b51b8c 100755
> --- a/tools/perf/pmu-events/jevents.py
> +++ b/tools/perf/pmu-events/jevents.py
> @@ -35,7 +35,7 @@ _pending_metrics: list["JsonEvent"] = []
> # Name of metrics table to be written out
> _pending_metrics_tblname: Optional[str] = None
> # Global BigCString shared by all structures.
> -_bcs = None
> +_bcs: "BigCString"
> # Map from the name of a metric group to a description of the group.
> _metricgroups: Dict[str, str] = {}
> # Order specific JsonEvent attributes will be visited.
> @@ -262,7 +262,7 @@ class JsonEvent:
> return fixed[name.lower()]
> return event
>
> - def unit_to_pmu(unit: Optional[str]) -> Optional[str]:
> + def unit_to_pmu(unit: Optional[str]) -> str:
> """Convert a JSON Unit to Linux PMU name."""
> if not unit:
> return 'default_core'
>
> base-commit: 1c90f0a3c8a1c4e38f9edd97af9e20848805a7fb
> --
> 2.56.0
>
prev parent reply other threads:[~2026-10-27 20:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-18 6:53 [PATCH] perf pmu-events: Fix jevents.py type annotations for mypy 2.x Lalit Maganti
2026-10-18 6:55 ` sashiko-bot
2026-10-27 20:38 ` Arnaldo Carvalho de Melo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=auELs_5MK1Z3_78c@phoenix2 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=lalitmaganti@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.