From: Benjamin Gray <bgray@linux.ibm.com>
To: Adrian Hunter <adrian.hunter@intel.com>,
linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, llvm@lists.linux.dev,
linux-pm@vger.kernel.org, bpf@vger.kernel.org,
linux-kselftest@vger.kernel.org
Cc: Jonathan Corbet <corbet@lwn.net>, Ian Abbott <abbotti@mev.co.uk>,
H Hartley Sweeten <hsweeten@visionengravers.com>,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Tom Rix <trix@redhat.com>, Jan Kiszka <jan.kiszka@siemens.com>,
Kieran Bingham <kbingham@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
linux-perf-users@vger.kernel.org,
Todd E Brandt <todd.e.brandt@linux.intel.com>,
Andrii Nakryiko <andrii@kernel.org>,
Mykola Lysenko <mykolal@fb.com>, Shuah Khan <shuah@kernel.org>
Subject: Re: [PATCH v2 5/7] tools/perf: fix Python string escapes
Date: Wed, 13 Sep 2023 10:26:53 +1000 [thread overview]
Message-ID: <d603d3b3-7563-d1c9-5086-c5bb78ea2e52@linux.ibm.com> (raw)
In-Reply-To: <340eae90-d270-5e52-4982-a67459bc46dd@intel.com>
On 12/9/23 8:56 pm, Adrian Hunter wrote:
> On 12/09/23 09:07, Benjamin Gray wrote:
>> diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
>> index a7e88332276d..980f080a5a2c 100755
>> --- a/tools/perf/pmu-events/jevents.py
>> +++ b/tools/perf/pmu-events/jevents.py
>> @@ -83,7 +83,7 @@ def c_len(s: str) -> int:
>> """Return the length of s a C string
>>
>> This doesn't handle all escape characters properly. It first assumes
>> - all \ are for escaping, it then adjusts as it will have over counted
>> + all \\ are for escaping, it then adjusts as it will have over counted
>
> It looks like the whole string should be a raw string
>
...
>> - s = value.replace("%", "\%")
>> - s = s.replace("_", "\_")
>> + s = value.replace("%", "\\%")
>> + s = s.replace("_", "\\_")
>
> Raw strings seem more readable, so could be
> used here too
Yeah, sounds good. I normally use r strings only for regex, but there
shouldn't be any ambiguity here (it might have been misleading if the
search argument to replace looked like a regex).
Having the docstring be an r string is a good catch. There's probably a
few like that in the kernel, but finding them is a little more
complicated because they might be 'valid' syntax (e.g., the '\000' just
becomes a null byte. This series is focused on the syntax errors though,
so I'll just leave it be.
How is the following?
---
Subject: [PATCH] tools/perf: fix Python string escapes
Python 3.6 introduced a DeprecationWarning for invalid escape sequences.
This is upgraded to a SyntaxWarning in Python 3.12, and will eventually
be a syntax error.
Fix these now to get ahead of it before it's an error.
Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
---
tools/perf/pmu-events/jevents.py | 2 +-
tools/perf/scripts/python/arm-cs-trace-disasm.py | 4 ++--
tools/perf/scripts/python/compaction-times.py | 2 +-
tools/perf/scripts/python/exported-sql-viewer.py | 4 ++--
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/perf/pmu-events/jevents.py
b/tools/perf/pmu-events/jevents.py
index a7e88332276d..1b4519333a28 100755
--- a/tools/perf/pmu-events/jevents.py
+++ b/tools/perf/pmu-events/jevents.py
@@ -80,7 +80,7 @@ def file_name_to_table_name(prefix: str, parents:
Sequence[str],
def c_len(s: str) -> int:
- """Return the length of s a C string
+ r"""Return the length of s a C string
This doesn't handle all escape characters properly. It first assumes
all \ are for escaping, it then adjusts as it will have over counted
diff --git a/tools/perf/scripts/python/arm-cs-trace-disasm.py
b/tools/perf/scripts/python/arm-cs-trace-disasm.py
index d59ff53f1d94..de58991c78bb 100755
--- a/tools/perf/scripts/python/arm-cs-trace-disasm.py
+++ b/tools/perf/scripts/python/arm-cs-trace-disasm.py
@@ -45,8 +45,8 @@ parser = OptionParser(option_list=option_list)
# Initialize global dicts and regular expression
disasm_cache = dict()
cpu_data = dict()
-disasm_re = re.compile("^\s*([0-9a-fA-F]+):")
-disasm_func_re = re.compile("^\s*([0-9a-fA-F]+)\s.*:")
+disasm_re = re.compile(r"^\s*([0-9a-fA-F]+):")
+disasm_func_re = re.compile(r"^\s*([0-9a-fA-F]+)\s.*:")
cache_size = 64*1024
glb_source_file_name = None
diff --git a/tools/perf/scripts/python/compaction-times.py
b/tools/perf/scripts/python/compaction-times.py
index 2560a042dc6f..9401f7c14747 100644
--- a/tools/perf/scripts/python/compaction-times.py
+++ b/tools/perf/scripts/python/compaction-times.py
@@ -260,7 +260,7 @@ def pr_help():
comm_re = None
pid_re = None
-pid_regex = "^(\d*)-(\d*)$|^(\d*)$"
+pid_regex = r"^(\d*)-(\d*)$|^(\d*)$"
opt_proc = popt.DISP_DFL
opt_disp = topt.DISP_ALL
diff --git a/tools/perf/scripts/python/exported-sql-viewer.py
b/tools/perf/scripts/python/exported-sql-viewer.py
index 13f2d8a81610..78763531fe5a 100755
--- a/tools/perf/scripts/python/exported-sql-viewer.py
+++ b/tools/perf/scripts/python/exported-sql-viewer.py
@@ -677,8 +677,8 @@ class CallGraphModelBase(TreeModel):
# sqlite supports GLOB (text only) which uses * and ? and is case
sensitive
if not self.glb.dbref.is_sqlite3:
# Escape % and _
- s = value.replace("%", "\%")
- s = s.replace("_", "\_")
+ s = value.replace("%", r"\%")
+ s = s.replace("_", r"\_")
# Translate * and ? into SQL LIKE pattern characters % and _
trans = string.maketrans("*?", "%_")
match = " LIKE '" + str(s).translate(trans) + "'"
--
2.41.0
next prev parent reply other threads:[~2023-09-13 0:27 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-12 6:07 [PATCH v2 0/7] Fix Python string escapes Benjamin Gray
2023-09-12 6:07 ` [PATCH v2 1/7] ia64: fix " Benjamin Gray
2023-09-12 15:33 ` Nick Desaulniers
2023-09-12 6:07 ` [PATCH v2 2/7] Documentation/sphinx: " Benjamin Gray
2023-09-12 21:03 ` Jonathan Corbet
2023-09-12 6:07 ` [PATCH v2 3/7] drivers/comedi: " Benjamin Gray
2023-09-12 10:18 ` Ian Abbott
2023-09-12 6:07 ` [PATCH v2 4/7] scripts: " Benjamin Gray
2023-09-12 6:07 ` [PATCH v2 5/7] tools/perf: " Benjamin Gray
2023-09-12 10:56 ` Adrian Hunter
2023-09-13 0:26 ` Benjamin Gray [this message]
2023-09-13 5:53 ` Adrian Hunter
2023-11-21 13:14 ` Arnaldo Carvalho de Melo
2023-09-12 6:08 ` [PATCH v2 6/7] tools/power: " Benjamin Gray
2023-09-12 6:08 ` [PATCH v2 7/7] selftests/bpf: " Benjamin Gray
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=d603d3b3-7563-d1c9-5086-c5bb78ea2e52@linux.ibm.com \
--to=bgray@linux.ibm.com \
--cc=abbotti@mev.co.uk \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=hsweeten@visionengravers.com \
--cc=irogers@google.com \
--cc=jan.kiszka@siemens.com \
--cc=jolsa@kernel.org \
--cc=kbingham@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mykolal@fb.com \
--cc=namhyung@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=peterz@infradead.org \
--cc=shuah@kernel.org \
--cc=todd.e.brandt@linux.intel.com \
--cc=trix@redhat.com \
/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.