Re: [PATCH] perf test: Replace optparse with argparse in attr.py

From: Ian Rogers

Date: Thu Oct 01 2026 - 13:04:10 EST


On Thu, Oct 1, 2026 at 8:52 AM Leo Yan <leo.yan@xxxxxxx> wrote:
>
> Depending on the Python and pylint versions, pylint can report that
> optparse is deprecated and fail the lint check. Use argparse to avoid
> this potential warning.
>
> Preserve the existing options and defaults, and let argparse handle
> help and unexpected positional arguments.
>
> Tested with:
>
> # ./perf test -v 'Perf attribute expectations test'
> 78: Perf attribute expectations test : Ok
>
> Suggested-by: Ian Rogers <irogers@xxxxxxxxxx>
> Signed-off-by: Leo Yan <leo.yan@xxxxxxx>

Hi Leo, thanks for the fix! I see Arnaldo already took this equivalent change:
https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/commit/?h=tmp.perf-tools-next&id=cd116fcbc0bec7340a659e62210b963c49f93c1e

Sorry for the extra work, but again thanks!
Ian

> ---
> tools/perf/tests/shell/lib/attr.py | 37 ++++++++++++++-----------------------
> 1 file changed, 14 insertions(+), 23 deletions(-)
>
> diff --git a/tools/perf/tests/shell/lib/attr.py b/tools/perf/tests/shell/lib/attr.py
> index 7f3d5b64b00dd7de45baff4f7d9baff89e003147..68f06df9565a081174c788b964a5b051fdedf626 100644
> --- a/tools/perf/tests/shell/lib/attr.py
> +++ b/tools/perf/tests/shell/lib/attr.py
> @@ -4,7 +4,7 @@ import configparser
> import os
> import sys
> import glob
> -import optparse
> +import argparse
> import platform
> import tempfile
> import logging
> @@ -426,29 +426,20 @@ def setup_log(verbose):
> ch.setFormatter(formatter)
> log.addHandler(ch)
>
> -USAGE = '''%s [OPTIONS]
> - -d dir # tests dir
> - -p path # perf binary
> - -t test # single test
> - -v # verbose level
> -''' % sys.argv[0]
> -
> def main():
> - parser = optparse.OptionParser(usage=USAGE)
> -
> - parser.add_option("-t", "--test",
> - action="store", type="string", dest="test")
> - parser.add_option("-d", "--test-dir",
> - action="store", type="string", dest="test_dir")
> - parser.add_option("-p", "--perf",
> - action="store", type="string", dest="perf")
> - parser.add_option("-v", "--verbose",
> - default=0, action="count", dest="verbose")
> -
> - options, args = parser.parse_args()
> - if args:
> - parser.error('FAILED wrong arguments %s' % ' '.join(args))
> - return -1
> + parser = argparse.ArgumentParser()
> +
> + parser.add_argument("-t", "--test",
> + action="store", dest="test", help="single test")
> + parser.add_argument("-d", "--test-dir",
> + action="store", dest="test_dir", help="tests dir")
> + parser.add_argument("-p", "--perf",
> + action="store", dest="perf", help="perf binary")
> + parser.add_argument("-v", "--verbose",
> + default=0, action="count", dest="verbose",
> + help="verbose level")
> +
> + options = parser.parse_args()
>
> setup_log(options.verbose)
>
>
> ---
> base-commit: 705da5b15ab89ba97b11eedbe507c2fd83d31cb9
> change-id: 20261001-perf_replace_optparse_with_argparse-e7f51849a08c
>
> Best regards,
> --
> Leo Yan <leo.yan@xxxxxxx>
>