Remove f-strings from DAP

Message ID 20230602154500.3941614-1-tromey@adacore.com
State New
Headers
Series Remove f-strings from DAP |

Commit Message

Tom Tromey June 2, 2023, 3:45 p.m. UTC
  Kévin pointed out that gdb claims a minimum Python version of 3.2, but
the DAP code uses f-strings, which were added in 3.6.

This patch removes the uses of f-strings from the DAP code.  I can't
test an older version of Python, but I did confirm that this still
works with the version I have.
---
 gdb/python/lib/gdb/dap/evaluate.py | 2 +-
 gdb/python/lib/gdb/dap/io.py       | 2 +-
 gdb/python/lib/gdb/dap/launch.py   | 2 +-
 gdb/python/lib/gdb/dap/state.py    | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
  

Comments

Paul Koning June 2, 2023, 3:57 p.m. UTC | #1
> On Jun 2, 2023, at 11:45 AM, Tom Tromey via Gdb-patches <gdb-patches@sourceware.org> wrote:
> 
> Kévin pointed out that gdb claims a minimum Python version of 3.2, but
> the DAP code uses f-strings, which were added in 3.6.
> 
> This patch removes the uses of f-strings from the DAP code.  I can't
> test an older version of Python, but I did confirm that this still
> works with the version I have.
> ---
> gdb/python/lib/gdb/dap/evaluate.py | 2 +-
> gdb/python/lib/gdb/dap/io.py       | 2 +-
> gdb/python/lib/gdb/dap/launch.py   | 2 +-
> gdb/python/lib/gdb/dap/state.py    | 2 +-
> 4 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/gdb/python/lib/gdb/dap/evaluate.py b/gdb/python/lib/gdb/dap/evaluate.py
> index fffd255417b..7c4fee4f84b 100644
> --- a/gdb/python/lib/gdb/dap/evaluate.py
> +++ b/gdb/python/lib/gdb/dap/evaluate.py
> @@ -62,7 +62,7 @@ def eval_request(*, expression, frameId=None, context="variables", **args):
>     elif context == "repl":
>         return send_gdb_with_response(lambda: _repl(expression, frameId))
>     else:
> -        raise Exception(f'unknown evaluate context "{context}"')
> +        raise Exception("unknown evaluate context " + context)

That (and the others) is not quite equivalent to what was there before.  You might do this with calls to the "format" method explicitly, as in:

+        raise Exception('unknown evaluate context "{}"'.format(context))

	paul
  
Tom Tromey June 2, 2023, 4:34 p.m. UTC | #2
>>>>> "Paul" == Paul Koning <paulkoning@comcast.net> writes:

>> -        raise Exception(f'unknown evaluate context "{context}"')
>> +        raise Exception("unknown evaluate context " + context)

Paul> That (and the others) is not quite equivalent to what was there
Paul> before.

Yeah, it isn't identical, but it's the same in practice.

In some spots the argument is known to be a string, and in ones where
str() is applied, it's known to be an int.  This is clearer after the
runtime type-checking patch is applied.

Tom
  
Paul Koning June 2, 2023, 6:14 p.m. UTC | #3
> On Jun 2, 2023, at 12:34 PM, Tom Tromey <tromey@adacore.com> wrote:
> 
>>>>>> "Paul" == Paul Koning <paulkoning@comcast.net> writes:
> 
>>> -        raise Exception(f'unknown evaluate context "{context}"')
>>> +        raise Exception("unknown evaluate context " + context)
> 
> Paul> That (and the others) is not quite equivalent to what was there
> Paul> before.
> 
> Yeah, it isn't identical, but it's the same in practice.
> 
> In some spots the argument is known to be a string, and in ones where
> str() is applied, it's known to be an int.  This is clearer after the
> runtime type-checking patch is applied.
> 
> Tom

Ok, but at least in that line I pointed to, the output is different: the previous text quotes the value while your changed code does not.

	paul
  
Tom Tromey June 2, 2023, 7:02 p.m. UTC | #4
Paul> Ok, but at least in that line I pointed to, the output is
Paul> different: the previous text quotes the value while your changed
Paul> code does not.

Ah, now I see what you mean.  I've fixed that.

Tom
  
Tom Tromey June 12, 2023, 6:23 p.m. UTC | #5
>>>>> "Tom" == Tom Tromey via Gdb-patches <gdb-patches@sourceware.org> writes:

Tom> Kévin pointed out that gdb claims a minimum Python version of 3.2, but
Tom> the DAP code uses f-strings, which were added in 3.6.

Tom> This patch removes the uses of f-strings from the DAP code.  I can't
Tom> test an older version of Python, but I did confirm that this still
Tom> works with the version I have.

I'm checking in the updated version of this patch.

Tom
  

Patch

diff --git a/gdb/python/lib/gdb/dap/evaluate.py b/gdb/python/lib/gdb/dap/evaluate.py
index fffd255417b..7c4fee4f84b 100644
--- a/gdb/python/lib/gdb/dap/evaluate.py
+++ b/gdb/python/lib/gdb/dap/evaluate.py
@@ -62,7 +62,7 @@  def eval_request(*, expression, frameId=None, context="variables", **args):
     elif context == "repl":
         return send_gdb_with_response(lambda: _repl(expression, frameId))
     else:
-        raise Exception(f'unknown evaluate context "{context}"')
+        raise Exception("unknown evaluate context " + context)
 
 
 @in_gdb_thread
diff --git a/gdb/python/lib/gdb/dap/io.py b/gdb/python/lib/gdb/dap/io.py
index 7cec7b032e3..2f3a2351925 100644
--- a/gdb/python/lib/gdb/dap/io.py
+++ b/gdb/python/lib/gdb/dap/io.py
@@ -60,7 +60,7 @@  def start_json_writer(stream, queue):
             seq = seq + 1
             encoded = json.dumps(obj)
             body_bytes = encoded.encode("utf-8")
-            header = f"Content-Length: {len(body_bytes)}\r\n\r\n"
+            header = "Content-Length: " + str(len(body_bytes)) + "\r\n\r\n"
             header_bytes = header.encode("ASCII")
             stream.write(header_bytes)
             stream.write(body_bytes)
diff --git a/gdb/python/lib/gdb/dap/launch.py b/gdb/python/lib/gdb/dap/launch.py
index 21499a339e1..428fd811471 100644
--- a/gdb/python/lib/gdb/dap/launch.py
+++ b/gdb/python/lib/gdb/dap/launch.py
@@ -40,7 +40,7 @@  def launch(*, program=None, args=[], env=None, **extra):
     if program is not None:
         global _program
         _program = program
-        send_gdb(f"file {_program}")
+        send_gdb("file " + _program)
     if len(args) > 0 or env is not None:
         send_gdb(lambda: _set_args_env(args, env))
 
diff --git a/gdb/python/lib/gdb/dap/state.py b/gdb/python/lib/gdb/dap/state.py
index caf654aaf07..f4f81d2afa0 100644
--- a/gdb/python/lib/gdb/dap/state.py
+++ b/gdb/python/lib/gdb/dap/state.py
@@ -22,4 +22,4 @@  def set_thread(thread_id):
     if thread_id == 0:
         log("+++ Thread == 0 +++")
     else:
-        exec_and_log(f"thread {thread_id}")
+        exec_and_log("thread " + str(thread_id))