diff mbox series

[kvm-unit-tests] scripts/pretty_print_stacks.py: Silence warning from Python 3.12

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

Commit Message

Thomas Huth Dec. 19, 2023, 1:23 p.m. UTC
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(-)

Comments

Nina Schoetterl-Glausch Dec. 19, 2023, 2:52 p.m. UTC | #1
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
Thomas Huth Dec. 19, 2023, 3:29 p.m. UTC | #2
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 mbox series

Patch

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