From 511ca545d257f1885dfd08848a6edb4d19cf6f69 Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Tue, 15 Feb 2022 18:10:45 -0700 Subject: [PATCH 1/2] Factor out iter_files(). --- Tools/scripts/generate_global_objects.py | 28 ++++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/Tools/scripts/generate_global_objects.py b/Tools/scripts/generate_global_objects.py index e989f3c086f344..3d91809dd56ce9 100644 --- a/Tools/scripts/generate_global_objects.py +++ b/Tools/scripts/generate_global_objects.py @@ -100,24 +100,28 @@ ####################################### # helpers -def iter_global_strings(): - id_regex = re.compile(r'\b_Py_ID\((\w+)\)') - str_regex = re.compile(r'\b_Py_DECLARE_STR\((\w+), "(.*?)"\)') +def iter_files(): for dirname, _, files in os.walk(ROOT): if os.path.relpath(dirname, ROOT).startswith('Include'): continue for name in files: if not name.endswith(('.c', '.h')): continue - filename = os.path.join(dirname, name) - with open(os.path.join(filename), encoding='utf-8') as infile: - for lno, line in enumerate(infile, 1): - for m in id_regex.finditer(line): - identifier, = m.groups() - yield identifier, None, filename, lno, line - for m in str_regex.finditer(line): - varname, string = m.groups() - yield varname, string, filename, lno, line + yield os.path.join(dirname, name) + + +def iter_global_strings(): + id_regex = re.compile(r'\b_Py_ID\((\w+)\)') + str_regex = re.compile(r'\b_Py_DECLARE_STR\((\w+), "(.*?)"\)') + for filename in iter_files(): + with open(filename, encoding='utf-8') as infile: + for lno, line in enumerate(infile, 1): + for m in id_regex.finditer(line): + identifier, = m.groups() + yield identifier, None, filename, lno, line + for m in str_regex.finditer(line): + varname, string = m.groups() + yield varname, string, filename, lno, line def iter_to_marker(lines, marker): for line in lines: From 985aa5a9e8ac58cd86c5a0559b318e7c3dd519fe Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Tue, 15 Feb 2022 18:20:02 -0700 Subject: [PATCH 2/2] Be explicit about where we scan files. --- Tools/scripts/generate_global_objects.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Tools/scripts/generate_global_objects.py b/Tools/scripts/generate_global_objects.py index 3d91809dd56ce9..5fd8a4fe4ced98 100644 --- a/Tools/scripts/generate_global_objects.py +++ b/Tools/scripts/generate_global_objects.py @@ -101,13 +101,13 @@ # helpers def iter_files(): - for dirname, _, files in os.walk(ROOT): - if os.path.relpath(dirname, ROOT).startswith('Include'): - continue - for name in files: - if not name.endswith(('.c', '.h')): - continue - yield os.path.join(dirname, name) + for name in ('Modules', 'Objects', 'Parser', 'PC', 'Programs', 'Python'): + root = os.path.join(ROOT, name) + for dirname, _, files in os.walk(root): + for name in files: + if not name.endswith(('.c', '.h')): + continue + yield os.path.join(dirname, name) def iter_global_strings():