[v2,1/2] gdb: make typing strict in gdb/copyright.py

Message ID 20250411150935.33068-1-simon.marchi@efficios.com
State New
Headers
Series [v2,1/2] gdb: make typing strict in gdb/copyright.py |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Test passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Test passed

Commit Message

Simon Marchi April 11, 2025, 3:08 p.m. UTC
  New in v2: use `tuple[str, ...]` as the type for `BY_HAND`.

Add `pyright: strict` at the top of the file, then adjust the fallouts.
This annotation is understood by pyright, and thus any IDE using pyright
behind the scenes (VSCode and probably others).

I presume that any GDB developer running this script is using a recent
enough version of Python, so specify the type annotations using the
actual types when possible (e.g. `list[str]` instead of
`typing.List[str]`).  I believe this required Python 3.9.

Change-Id: I3698e28555e236a03126d4cd010dae4b5647ce48
---
 gdb/copyright.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)


base-commit: 52c5091dfb18113156d645500ab86b600f1cdfe0
  

Comments

Guinevere Larsen April 11, 2025, 4:42 p.m. UTC | #1
On 4/11/25 12:08 PM, Simon Marchi wrote:
> New in v2: use `tuple[str, ...]` as the type for `BY_HAND`.
>
> Add `pyright: strict` at the top of the file, then adjust the fallouts.
> This annotation is understood by pyright, and thus any IDE using pyright
> behind the scenes (VSCode and probably others).
>
> I presume that any GDB developer running this script is using a recent
> enough version of Python, so specify the type annotations using the
> actual types when possible (e.g. `list[str]` instead of
> `typing.List[str]`).  I believe this required Python 3.9.
>
> Change-Id: I3698e28555e236a03126d4cd010dae4b5647ce48
> ---

Thanks for the change!

I couldn't test this, but looking it over everything seems reasonable. 
Feel free to add my tag!

Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
  

Patch

diff --git a/gdb/copyright.py b/gdb/copyright.py
index 5ec9944aae20..98386950cf4a 100755
--- a/gdb/copyright.py
+++ b/gdb/copyright.py
@@ -30,13 +30,15 @@ 
 #
 # This removes the bulk of the changes which are most likely to be correct.
 
+# pyright: strict
+
 import argparse
 import locale
 import os
 import os.path
 import subprocess
 import sys
-from typing import List, Optional
+from typing import Iterable
 
 
 def get_update_list():
@@ -66,7 +68,7 @@  def get_update_list():
         .split("\0")
     )
 
-    def include_file(filename):
+    def include_file(filename: str):
         (dirname, basename) = os.path.split(filename)
         dirbasename = os.path.basename(dirname)
         return not (
@@ -83,7 +85,7 @@  def get_update_list():
     return filter(include_file, result)
 
 
-def update_files(update_list):
+def update_files(update_list: Iterable[str]):
     """Update the copyright header of the files in the given list.
 
     We use gnulib's update-copyright script for that.
@@ -128,7 +130,7 @@  def update_files(update_list):
             print("*** " + line)
 
 
-def may_have_copyright_notice(filename):
+def may_have_copyright_notice(filename: str):
     """Check that the given file does not seem to have a copyright notice.
 
     The filename is relative to the root directory.
@@ -166,7 +168,7 @@  def get_parser() -> argparse.ArgumentParser:
     return parser
 
 
-def main(argv: List[str]) -> Optional[int]:
+def main(argv: list[str]) -> int | None:
     """The main subprogram."""
     parser = get_parser()
     _ = parser.parse_args(argv)
@@ -242,7 +244,7 @@  EXCLUDE_ALL_LIST = (
 )
 
 # The list of files to update by hand.
-BY_HAND = (
+BY_HAND: tuple[str, ...] = (
     # Nothing at the moment :-).
 )