Message ID | 20231219132313.31107-1-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [kvm-unit-tests] scripts/pretty_print_stacks.py: Silence warning from Python 3.12 | expand |
On Tue, 2023-12-19 at 14:23 +0100, Thomas Huth wrote: > Python 3.12 complains: > > ./scripts/pretty_print_stacks.py:41: SyntaxWarning: > invalid escape sequence '\?' > m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) > > Switch to a raw string to silence the problem. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > scripts/pretty_print_stacks.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/pretty_print_stacks.py b/scripts/pretty_print_stacks.py > index d990d300..5bce84fc 100755 > --- a/scripts/pretty_print_stacks.py > +++ b/scripts/pretty_print_stacks.py > @@ -38,7 +38,7 @@ def pretty_print_stack(binary, line): > return > > for line in out.splitlines(): > - m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) > + m = re.match(r'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) Did you test this? Should this not be rb'<regex>'? I get TypeError: cannot use a string pattern on a bytes-like object When imitating this in a REPL. We don't open the process in text mode, so its output should be bytes and after splitting, "line" should be too. > if m is None: > puts('%s\n' % line) > return
On 19/12/2023 15.52, Nina Schoetterl-Glausch wrote: > On Tue, 2023-12-19 at 14:23 +0100, Thomas Huth wrote: >> Python 3.12 complains: >> >> ./scripts/pretty_print_stacks.py:41: SyntaxWarning: >> invalid escape sequence '\?' >> m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) >> >> Switch to a raw string to silence the problem. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> scripts/pretty_print_stacks.py | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/scripts/pretty_print_stacks.py b/scripts/pretty_print_stacks.py >> index d990d300..5bce84fc 100755 >> --- a/scripts/pretty_print_stacks.py >> +++ b/scripts/pretty_print_stacks.py >> @@ -38,7 +38,7 @@ def pretty_print_stack(binary, line): >> return >> >> for line in out.splitlines(): >> - m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) >> + m = re.match(r'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) > > Did you test this? Should this not be rb'<regex>'? > I get > TypeError: cannot use a string pattern on a bytes-like object Drat, of course I only tested it in the sense that I made sure that the python warning goes away when running the run_test.sh script, but I did not trigger a backtrace ... You're right of course, it has to be rb'...' here instead. I'll send a v2. Thomas
diff --git a/scripts/pretty_print_stacks.py b/scripts/pretty_print_stacks.py index d990d300..5bce84fc 100755 --- a/scripts/pretty_print_stacks.py +++ b/scripts/pretty_print_stacks.py @@ -38,7 +38,7 @@ def pretty_print_stack(binary, line): return for line in out.splitlines(): - m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) + m = re.match(r'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) if m is None: puts('%s\n' % line) return
Python 3.12 complains: ./scripts/pretty_print_stacks.py:41: SyntaxWarning: invalid escape sequence '\?' m = re.match(b'(.*) at (.*):(([0-9]+)|\?)([^:]*)', line) Switch to a raw string to silence the problem. Signed-off-by: Thomas Huth <thuth@redhat.com> --- scripts/pretty_print_stacks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)