]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-36876: [c-analyzer tool] Tighten up the results and output. (GH-23431)
authorEric Snow <ericsnowcurrently@gmail.com>
Fri, 20 Nov 2020 22:39:28 +0000 (15:39 -0700)
committerGitHub <noreply@github.com>
Fri, 20 Nov 2020 22:39:28 +0000 (15:39 -0700)
We also update the "ignored" file with a temporary list of all known globals.

13 files changed:
Tools/c-analyzer/c_analyzer/__main__.py
Tools/c-analyzer/c_analyzer/datafiles.py
Tools/c-analyzer/c_analyzer/info.py
Tools/c-analyzer/c_common/fsutil.py
Tools/c-analyzer/c_common/scriptutil.py
Tools/c-analyzer/c_common/tables.py
Tools/c-analyzer/c_parser/__main__.py
Tools/c-analyzer/c_parser/datafiles.py
Tools/c-analyzer/c_parser/info.py
Tools/c-analyzer/cpython/__main__.py
Tools/c-analyzer/cpython/_analyzer.py
Tools/c-analyzer/cpython/_parser.py
Tools/c-analyzer/cpython/ignored.tsv

index 4cff1d4efb5fe98773ae4fbd5b14fab448bfa267..44325f2952e28cf0daddee6afb08e61e3c3be622 100644 (file)
@@ -5,6 +5,7 @@ import os.path
 import re
 import sys
 
+from c_common import fsutil
 from c_common.logging import VERBOSITY, Printer
 from c_common.scriptutil import (
     add_verbosity_cli,
@@ -298,9 +299,9 @@ def cmd_check(filenames, *,
               checks=None,
               ignored=None,
               fmt=None,
-              relroot=None,
               failfast=False,
               iter_filenames=None,
+              relroot=fsutil.USE_CWD,
               track_progress=None,
               verbosity=VERBOSITY,
               _analyze=_analyze,
@@ -317,14 +318,14 @@ def cmd_check(filenames, *,
     (handle_failure, handle_after, div
      ) = _get_check_handlers(fmt, printer, verbosity)
 
-    filenames = filter_filenames(filenames, iter_filenames)
+    filenames, relroot = fsutil.fix_filenames(filenames, relroot=relroot)
+    filenames = filter_filenames(filenames, iter_filenames, relroot)
     if track_progress:
         filenames = track_progress(filenames)
 
     logger.info('analyzing files...')
     analyzed = _analyze(filenames, **kwargs)
-    if relroot:
-        analyzed.fix_filenames(relroot)
+    analyzed.fix_filenames(relroot, normalize=False)
     decls = filter_forward(analyzed, markpublic=True)
 
     logger.info('checking analysis results...')
@@ -374,6 +375,7 @@ def _cli_analyze(parser, **kwargs):
 def cmd_analyze(filenames, *,
                 fmt=None,
                 iter_filenames=None,
+                relroot=fsutil.USE_CWD,
                 track_progress=None,
                 verbosity=None,
                 _analyze=_analyze,
@@ -387,12 +389,14 @@ def cmd_analyze(filenames, *,
     except KeyError:
         raise ValueError(f'unsupported fmt {fmt!r}')
 
-    filenames = filter_filenames(filenames, iter_filenames)
+    filenames, relroot = fsutil.fix_filenames(filenames, relroot=relroot)
+    filenames = filter_filenames(filenames, iter_filenames, relroot)
     if track_progress:
         filenames = track_progress(filenames)
 
     logger.info('analyzing files...')
     analyzed = _analyze(filenames, **kwargs)
+    analyzed.fix_filenames(relroot, normalize=False)
     decls = filter_forward(analyzed, markpublic=True)
 
     for line in do_fmt(decls):
@@ -434,7 +438,7 @@ def cmd_data(datacmd, filenames, known=None, *,
              _analyze=_analyze,
              formats=FORMATS,
              extracolumns=None,
-             relroot=None,
+             relroot=fsutil.USE_CWD,
              track_progress=None,
              **kwargs
              ):
@@ -447,9 +451,11 @@ def cmd_data(datacmd, filenames, known=None, *,
         for line in do_fmt(known):
             print(line)
     elif datacmd == 'dump':
+        filenames, relroot = fsutil.fix_filenames(filenames, relroot=relroot)
         if track_progress:
             filenames = track_progress(filenames)
         analyzed = _analyze(filenames, **kwargs)
+        analyzed.fix_filenames(relroot, normalize=False)
         if known is None or usestdout:
             outfile = io.StringIO()
             _datafiles.write_known(analyzed, outfile, extracolumns,
index d37a4eefe351ad5e30d4b4dc4f8f9de12399b2d9..d5db3bd3ed74ac30ec7b8ed5983ec2a5107ad45b 100644 (file)
@@ -1,3 +1,6 @@
+import os.path
+
+from c_common import fsutil
 import c_common.tables as _tables
 import c_parser.info as _info
 import c_parser.match as _match
@@ -13,31 +16,10 @@ EXTRA_COLUMNS = [
 ]
 
 
-def analyze_known(known, *,
-                  analyze_resolved=None,
-                  handle_unresolved=True,
-                  ):
-    knowntypes = knowntypespecs = {}
-    collated = _match.group_by_kinds(known)
-    types = {decl: None for decl in collated['type']}
-    typespecs = _analyze.get_typespecs(types)
-    def analyze_decl(decl):
-        return _analyze.analyze_decl(
-            decl,
-            typespecs,
-            knowntypespecs,
-            types,
-            knowntypes,
-            analyze_resolved=analyze_resolved,
-        )
-    _analyze.analyze_type_decls(types, analyze_decl, handle_unresolved)
-    return types, typespecs
-
-
 def get_known(known, extracolumns=None, *,
               analyze_resolved=None,
               handle_unresolved=True,
-              relroot=None,
+              relroot=fsutil.USE_CWD,
               ):
     if isinstance(known, str):
         known = read_known(known, extracolumns, relroot)
@@ -48,7 +30,7 @@ def get_known(known, extracolumns=None, *,
     )
 
 
-def read_known(infile, extracolumns=None, relroot=None):
+def read_known(infile, extracolumns=None, relroot=fsutil.USE_CWD):
     extracolumns = EXTRA_COLUMNS + (
         list(extracolumns) if extracolumns else []
     )
@@ -58,8 +40,29 @@ def read_known(infile, extracolumns=None, relroot=None):
     return known
 
 
+def analyze_known(known, *,
+                  analyze_resolved=None,
+                  handle_unresolved=True,
+                  ):
+    knowntypes = knowntypespecs = {}
+    collated = _match.group_by_kinds(known)
+    types = {decl: None for decl in collated['type']}
+    typespecs = _analyze.get_typespecs(types)
+    def analyze_decl(decl):
+        return _analyze.analyze_decl(
+            decl,
+            typespecs,
+            knowntypespecs,
+            types,
+            knowntypes,
+            analyze_resolved=analyze_resolved,
+        )
+    _analyze.analyze_type_decls(types, analyze_decl, handle_unresolved)
+    return types, typespecs
+
+
 def write_known(rows, outfile, extracolumns=None, *,
-                relroot=None,
+                relroot=fsutil.USE_CWD,
                 backup=True,
                 ):
     extracolumns = EXTRA_COLUMNS + (
@@ -86,22 +89,34 @@ IGNORED_COLUMNS = [
 IGNORED_HEADER = '\t'.join(IGNORED_COLUMNS)
 
 
-def read_ignored(infile):
-    return dict(_iter_ignored(infile))
+def read_ignored(infile, relroot=fsutil.USE_CWD):
+    return dict(_iter_ignored(infile, relroot))
 
 
-def _iter_ignored(infile):
+def _iter_ignored(infile, relroot):
+    if relroot and relroot is not fsutil.USE_CWD:
+        relroot = os.path.abspath(relroot)
+    bogus = {_tables.EMPTY, _tables.UNKNOWN}
     for row in _tables.read_table(infile, IGNORED_HEADER, sep='\t'):
         *varidinfo, reason = row
+        if _tables.EMPTY in varidinfo or _tables.UNKNOWN in varidinfo:
+            varidinfo = tuple(None if v in bogus else v
+                              for v in varidinfo)
+        if reason in bogus:
+            reason = None
         varid = _info.DeclID.from_row(varidinfo)
+        varid = varid.fix_filename(relroot, formatted=False, fixroot=False)
         yield varid, reason
 
 
-def write_ignored(variables, outfile):
+def write_ignored(variables, outfile, relroot=fsutil.USE_CWD):
     raise NotImplementedError
+    if relroot and relroot is not fsutil.USE_CWD:
+        relroot = os.path.abspath(relroot)
     reason = '???'
     #if not isinstance(varid, DeclID):
     #    varid = getattr(varid, 'parsed', varid).id
+    decls = (d.fix_filename(relroot, fixroot=False) for d in decls)
     _tables.write_table(
         outfile,
         IGNORED_HEADER,
index be9281502d250d55e7248b4137bd93add8f56b6a..b75918e5e7a68744eea736dacf9589ff699df235 100644 (file)
@@ -1,5 +1,7 @@
 from collections import namedtuple
+import os.path
 
+from c_common import fsutil
 from c_common.clsutil import classonly
 import c_common.misc as _misc
 from c_parser.info import (
@@ -223,8 +225,9 @@ class Analyzed:
         else:
             return UNKNOWN not in self.typedecl
 
-    def fix_filename(self, relroot):
-        self.item.fix_filename(relroot)
+    def fix_filename(self, relroot=fsutil.USE_CWD, **kwargs):
+        self.item.fix_filename(relroot, **kwargs)
+        return self
 
     def as_rowdata(self, columns=None):
         # XXX finsih!
@@ -309,9 +312,11 @@ class Analysis:
         else:
             return self._analyzed[key]
 
-    def fix_filenames(self, relroot):
+    def fix_filenames(self, relroot=fsutil.USE_CWD, **kwargs):
+        if relroot and relroot is not fsutil.USE_CWD:
+            relroot = os.path.abspath(relroot)
         for item in self._analyzed:
-            item.fix_filename(relroot)
+            item.fix_filename(relroot, fixroot=False, **kwargs)
 
     def _add_result(self, info, resolved):
         analyzed = type(self).build_item(info, resolved)
index 56023f33523b0df6a58e1710f70ad5ef89288ec3..120a140288fb729769405f6bbb13124282e0982d 100644 (file)
@@ -8,6 +8,9 @@ import stat
 from .iterutil import iter_many
 
 
+USE_CWD = object()
+
+
 C_SOURCE_SUFFIXES = ('.c', '.h')
 
 
@@ -29,6 +32,78 @@ def create_backup(old, backup=None):
     return backup
 
 
+##################################
+# filenames
+
+def fix_filename(filename, relroot=USE_CWD, *,
+                 fixroot=True,
+                 _badprefix=f'..{os.path.sep}',
+                 ):
+    """Return a normalized, absolute-path copy of the given filename."""
+    if not relroot or relroot is USE_CWD:
+        return os.path.abspath(filename)
+    if fixroot:
+        relroot = os.path.abspath(relroot)
+    return _fix_filename(filename, relroot)
+
+
+def _fix_filename(filename, relroot, *,
+                  _badprefix=f'..{os.path.sep}',
+                  ):
+    orig = filename
+
+    # First we normalize.
+    filename = os.path.normpath(filename)
+    if filename.startswith(_badprefix):
+        raise ValueError(f'bad filename {orig!r} (resolves beyond relative root')
+
+    # Now make sure it is absolute (relative to relroot).
+    if not os.path.isabs(filename):
+        filename = os.path.join(relroot, filename)
+    else:
+        relpath = os.path.relpath(filename, relroot)
+        if os.path.join(relroot, relpath) != filename:
+            raise ValueError(f'expected {relroot!r} as lroot, got {orig!r}')
+
+    return filename
+
+
+def fix_filenames(filenames, relroot=USE_CWD):
+    if not relroot or relroot is USE_CWD:
+        filenames = (os.path.abspath(v) for v in filenames)
+    else:
+        relroot = os.path.abspath(relroot)
+        filenames = (_fix_filename(v, relroot) for v in filenames)
+    return filenames, relroot
+
+
+def format_filename(filename, relroot=USE_CWD, *,
+                    fixroot=True,
+                    normalize=True,
+                    _badprefix=f'..{os.path.sep}',
+                    ):
+    """Return a consistent relative-path representation of the filename."""
+    orig = filename
+    if normalize:
+        filename = os.path.normpath(filename)
+    if relroot is None:
+        # Otherwise leave it as-is.
+        return filename
+    elif relroot is USE_CWD:
+        # Make it relative to CWD.
+        filename = os.path.relpath(filename)
+    else:
+        # Make it relative to "relroot".
+        if fixroot:
+            relroot = os.path.abspath(relroot)
+        elif not relroot:
+            raise ValueError('missing relroot')
+        filename = os.path.relpath(filename, relroot)
+    if filename.startswith(_badprefix):
+        raise ValueError(f'bad filename {orig!r} (resolves beyond relative root')
+    return filename
+
+
 ##################################
 # find files
 
@@ -54,34 +129,29 @@ def match_glob(filename, pattern):
     return fnmatch.fnmatch(filename, pattern.replace('**/', '', 1))
 
 
-def iter_filenames(filenames, *,
-                   start=None,
-                   include=None,
-                   exclude=None,
-                   ):
+def process_filenames(filenames, *,
+                      start=None,
+                      include=None,
+                      exclude=None,
+                      relroot=USE_CWD,
+                      ):
+    if relroot and relroot is not USE_CWD:
+        relroot = os.path.abspath(relroot)
+    if start:
+        start = fix_filename(start, relroot, fixroot=False)
+    if include:
+        include = set(fix_filename(v, relroot, fixroot=False)
+                      for v in include)
+    if exclude:
+        exclude = set(fix_filename(v, relroot, fixroot=False)
+                      for v in exclude)
+
     onempty = Exception('no filenames provided')
     for filename, solo in iter_many(filenames, onempty):
+        filename = fix_filename(filename, relroot, fixroot=False)
+        relfile = format_filename(filename, relroot, fixroot=False, normalize=False)
         check, start = _get_check(filename, start, include, exclude)
-        yield filename, check, solo
-#    filenames = iter(filenames or ())
-#    try:
-#        first = next(filenames)
-#    except StopIteration:
-#        raise Exception('no filenames provided')
-#    try:
-#        second = next(filenames)
-#    except StopIteration:
-#        check, _ = _get_check(first, start, include, exclude)
-#        yield first, check, False
-#        return
-#
-#    check, start = _get_check(first, start, include, exclude)
-#    yield first, check, True
-#    check, start = _get_check(second, start, include, exclude)
-#    yield second, check, True
-#    for filename in filenames:
-#        check, start = _get_check(filename, start, include, exclude)
-#        yield filename, check, True
+        yield filename, relfile, check, solo
 
 
 def expand_filenames(filenames):
index 222059015d76ec130bb108b92e537725ee2b08f0..50dd754886919305f324e43ded84772dce88c684 100644 (file)
@@ -307,7 +307,9 @@ def add_file_filtering_cli(parser, *, excluded=None):
             exclude=tuple(_parse_files(_exclude)),
             # We use the default for "show_header"
         )
-        ns[key] = (lambda files: fsutil.iter_filenames(files, **kwargs))
+        def process_filenames(filenames, relroot=None):
+            return fsutil.process_filenames(filenames, relroot=relroot, **kwargs)
+        ns[key] = process_filenames
     return process_args
 
 
@@ -529,42 +531,46 @@ def set_command(name, add_cli):
 ##################################
 # main() helpers
 
-def filter_filenames(filenames, iter_filenames=None):
-    for filename, check, _ in _iter_filenames(filenames, iter_filenames):
+def filter_filenames(filenames, process_filenames=None, relroot=fsutil.USE_CWD):
+    # We expect each filename to be a normalized, absolute path.
+    for filename, _, check, _ in _iter_filenames(filenames, process_filenames, relroot):
         if (reason := check()):
             logger.debug(f'{filename}: {reason}')
             continue
         yield filename
 
 
-def main_for_filenames(filenames, iter_filenames=None):
-    for filename, check, show in _iter_filenames(filenames, iter_filenames):
+def main_for_filenames(filenames, process_filenames=None, relroot=fsutil.USE_CWD):
+    filenames, relroot = fsutil.fix_filenames(filenames, relroot=relroot)
+    for filename, relfile, check, show in _iter_filenames(filenames, process_filenames, relroot):
         if show:
             print()
+            print(relfile)
             print('-------------------------------------------')
-            print(filename)
         if (reason := check()):
             print(reason)
             continue
-        yield filename
+        yield filename, relfile
 
 
-def _iter_filenames(filenames, iter_files):
-    if iter_files is None:
-        iter_files = fsutil.iter_filenames
-        yield from iter_files(filenames)
+def _iter_filenames(filenames, process, relroot):
+    if process is None:
+        yield from fsutil.process_filenames(filenames, relroot=relroot)
         return
 
     onempty = Exception('no filenames provided')
-    items = iter_files(filenames)
+    items = process(filenames, relroot=relroot)
     items, peeked = iterutil.peek_and_iter(items)
     if not items:
         raise onempty
     if isinstance(peeked, str):
+        if relroot and relroot is not fsutil.USE_CWD:
+            relroot = os.path.abspath(relroot)
         check = (lambda: True)
         for filename, ismany in iterutil.iter_many(items, onempty):
-            yield filename, check, ismany
-    elif len(peeked) == 3:
+            relfile = fsutil.format_filename(filename, relroot, fixroot=False)
+            yield filename, relfile, check, ismany
+    elif len(peeked) == 4:
         yield from items
     else:
         raise NotImplementedError
index 70a230a90b6e856d85c2eead9bb763780c017349..411152e3f9498fb6d3cd1d4a391c4a6abd188825 100644 (file)
@@ -26,13 +26,14 @@ def fix_row(row, **markers):
     unknown = parse_markers(markers.pop('unknown', ('???',)))
     row = (val if val else None for val in row)
     if not empty:
-        if not unknown:
-            return row
-        return (UNKNOWN if val in unknown else val for val in row)
+        if unknown:
+            row = (UNKNOWN if val in unknown else val for val in row)
     elif not unknown:
-        return (EMPTY if val in empty else val for val in row)
-    return (EMPTY if val in empty else (UNKNOWN if val in unknown else val)
-            for val in row)
+        row = (EMPTY if val in empty else val for val in row)
+    else:
+        row = (EMPTY if val in empty else (UNKNOWN if val in unknown else val)
+               for val in row)
+    return tuple(row)
 
 
 def _fix_read_default(row):
index 1752a703f606ad03c99082f17b63ed5dc1dfc8e7..539cec509cecb47cfef76ac176c939ef1609919c 100644 (file)
@@ -2,6 +2,7 @@ import logging
 import os.path
 import sys
 
+from c_common import fsutil
 from c_common.scriptutil import (
     CLIArgSpec as Arg,
     add_verbosity_cli,
@@ -64,8 +65,9 @@ def fmt_raw(filename, item, *, showfwd=None):
 
 
 def fmt_summary(filename, item, *, showfwd=None):
-    if item.filename and item.filename != os.path.join('.', filename):
+    if item.filename != filename:
         yield f'> {item.filename}'
+
     if showfwd is None:
         LINE = ' {lno:>5} {kind:10} {funcname:40} {fwd:1} {name:40} {data}'
     else:
@@ -172,6 +174,7 @@ def cmd_parse(filenames, *,
               fmt='summary',
               showfwd=None,
               iter_filenames=None,
+              relroot=None,
               **kwargs
               ):
     if 'get_file_preprocessor' not in kwargs:
@@ -180,9 +183,10 @@ def cmd_parse(filenames, *,
         do_fmt = FORMATS[fmt]
     except KeyError:
         raise ValueError(f'unsupported fmt {fmt!r}')
-    for filename in main_for_filenames(filenames, iter_filenames):
+    for filename, relfile in main_for_filenames(filenames, iter_filenames, relroot):
         for item in _iter_parsed(filename, **kwargs):
-            for line in do_fmt(filename, item, showfwd=showfwd):
+            item = item.fix_filename(relroot, fixroot=False, normalize=False)
+            for line in do_fmt(relfile, item, showfwd=showfwd):
                 print(line)
 
 
index cdd69b1f9b2d8a35c862082b9abc4d514a7c7a0f..f053056619f05f1e56ee8e2fc8002b66a1965d7d 100644 (file)
@@ -1,5 +1,6 @@
 import os.path
 
+from c_common import fsutil
 import c_common.tables as _tables
 import c_parser.info as _info
 
@@ -81,21 +82,27 @@ def _get_format_handlers(group, fmt):
 
 # tsv
 
-def iter_decls_tsv(infile, extracolumns=None, relroot=None):
-    for info, extra in _iter_decls_tsv(infile, extracolumns, relroot):
+def iter_decls_tsv(infile, extracolumns=None, relroot=fsutil.USE_CWD):
+    if relroot and relroot is not fsutil.USE_CWD:
+        relroot = os.path.abspath(relroot)
+    for info, extra in _iter_decls_tsv(infile, extracolumns):
         decl = _info.Declaration.from_row(info)
+        decl = decl.fix_filename(relroot, formatted=False, fixroot=False)
         yield decl, extra
 
 
 def write_decls_tsv(decls, outfile, extracolumns=None, *,
-                    relroot=None,
+                    relroot=fsutil.USE_CWD,
                     **kwargs
                     ):
+    if relroot and relroot is not fsutil.USE_CWD:
+        relroot = os.path.abspath(relroot)
+    decls = (d.fix_filename(relroot, fixroot=False) for d in decls)
     # XXX Move the row rendering here.
-    _write_decls_tsv(decls, outfile, extracolumns, relroot, kwargs)
+    _write_decls_tsv(decls, outfile, extracolumns, kwargs)
 
 
-def _iter_decls_tsv(infile, extracolumns=None, relroot=None):
+def _iter_decls_tsv(infile, extracolumns=None):
     columns = _get_columns('decls', extracolumns)
     for row in _tables.read_table(infile, columns, sep='\t'):
         if extracolumns:
@@ -104,15 +111,13 @@ def _iter_decls_tsv(infile, extracolumns=None, relroot=None):
         else:
             declinfo = row
             extra = None
-        if relroot:
-            # XXX Use something like tables.fix_row() here.
-            declinfo = [None if v == '-' else v
-                        for v in declinfo]
-            declinfo[0] = os.path.join(relroot, declinfo[0])
+        # XXX Use something like tables.fix_row() here.
+        declinfo = [None if v == '-' else v
+                    for v in declinfo]
         yield declinfo, extra
 
 
-def _write_decls_tsv(decls, outfile, extracolumns, relroot,kwargs):
+def _write_decls_tsv(decls, outfile, extracolumns, kwargs):
     columns = _get_columns('decls', extracolumns)
     if extracolumns:
         def render_decl(decl):
@@ -121,7 +126,7 @@ def _write_decls_tsv(decls, outfile, extracolumns, relroot,kwargs):
             else:
                 extra = ()
             extra += ('???',) * (len(extraColumns) - len(extra))
-            *row, declaration = _render_known_row(decl, relroot)
+            *row, declaration = _render_known_row(decl)
             row += extra + (declaration,)
             return row
     else:
@@ -129,13 +134,13 @@ def _write_decls_tsv(decls, outfile, extracolumns, relroot,kwargs):
     _tables.write_table(
         outfile,
         header='\t'.join(columns),
-        rows=(render_decl(d, relroot) for d in decls),
+        rows=(render_decl(d) for d in decls),
         sep='\t',
         **kwargs
     )
 
 
-def _render_known_decl(decl, relroot, *,
+def _render_known_decl(decl, *,
                        # These match BASE_COLUMNS + END_COLUMNS[group].
                        _columns = 'filename parent name kind data'.split(),
                        ):
@@ -143,8 +148,6 @@ def _render_known_decl(decl, relroot, *,
         # e.g. Analyzed
         decl = decl.decl
     rowdata = decl.render_rowdata(_columns)
-    if relroot:
-        rowdata['filename'] = os.path.relpath(rowdata['filename'], relroot)
     return [rowdata[c] or '-' for c in _columns]
     # XXX
     #return _tables.fix_row(rowdata[c] for c in columns)
index 798a45d2e08e71ae9d36ff655bff27f54129c698..98ff511cfe64a025fb251909788247606e8e3253 100644 (file)
@@ -3,6 +3,7 @@ import enum
 import os.path
 import re
 
+from c_common import fsutil
 from c_common.clsutil import classonly
 import c_common.misc as _misc
 import c_common.strutil as _strutil
@@ -148,6 +149,16 @@ def get_kind_group(item):
 #############################
 # low-level
 
+def _fix_filename(filename, relroot, *,
+                  formatted=True,
+                  **kwargs):
+    if formatted:
+        fix = fsutil.format_filename
+    else:
+        fix = fsutil.fix_filename
+    return fix(filename, relroot=relroot, **kwargs)
+
+
 class FileInfo(namedtuple('FileInfo', 'filename lno')):
     @classmethod
     def from_raw(cls, raw):
@@ -165,8 +176,10 @@ class FileInfo(namedtuple('FileInfo', 'filename lno')):
     def __str__(self):
         return self.filename
 
-    def fix_filename(self, relroot):
-        filename = os.path.relpath(self.filename, relroot)
+    def fix_filename(self, relroot=fsutil.USE_CWD, **kwargs):
+        filename = _fix_filename(self.filename, relroot, **kwargs)
+        if filename == self.filename:
+            return self
         return self._replace(filename=filename)
 
 
@@ -194,6 +207,16 @@ class DeclID(namedtuple('DeclID', 'filename funcname name')):
         row = _tables.fix_row(row, **markers)
         return cls(*row)
 
+    # We have to provde _make() becaose we implemented __new__().
+
+    @classmethod
+    def _make(cls, iterable):
+        try:
+            return cls(*iterable)
+        except Exception:
+            super()._make(iterable)
+            raise  # re-raise
+
     def __new__(cls, filename, funcname, name):
         self = super().__new__(
             cls,
@@ -221,6 +244,12 @@ class DeclID(namedtuple('DeclID', 'filename funcname name')):
             return NotImplemented
         return self._compare > other
 
+    def fix_filename(self, relroot=fsutil.USE_CWD, **kwargs):
+        filename = _fix_filename(self.filename, relroot, **kwargs)
+        if filename == self.filename:
+            return self
+        return self._replace(filename=filename)
+
 
 class ParsedItem(namedtuple('ParsedItem', 'file kind parent name data')):
 
@@ -290,6 +319,12 @@ class ParsedItem(namedtuple('ParsedItem', 'file kind parent name data')):
         else:
             return self.parent.name
 
+    def fix_filename(self, relroot=fsutil.USE_CWD, **kwargs):
+        fixed = self.file.fix_filename(relroot, **kwargs)
+        if fixed == self.file:
+            return self
+        return self._replace(file=fixed)
+
     def as_row(self, columns=None):
         if not columns:
             columns = self._fields
@@ -591,9 +626,10 @@ class HighlevelParsedItem:
             )
             return self._parsed
 
-    def fix_filename(self, relroot):
+    def fix_filename(self, relroot=fsutil.USE_CWD, **kwargs):
         if self.file:
-            self.file = self.file.fix_filename(relroot)
+            self.file = self.file.fix_filename(relroot, **kwargs)
+        return self
 
     def as_rowdata(self, columns=None):
         columns, datacolumns, colnames = self._parse_columns(columns)
index 23ce29776ca68e3da28e472c0016b030324c92a8..6d78af299bb6f8274a2979ad5397873bb920de8a 100644 (file)
@@ -105,7 +105,11 @@ def cmd_parse(filenames=None, **kwargs):
     filenames = _resolve_filenames(filenames)
     if 'get_file_preprocessor' not in kwargs:
         kwargs['get_file_preprocessor'] = _parser.get_preprocessor()
-    c_parser.cmd_parse(filenames, **kwargs)
+    c_parser.cmd_parse(
+        filenames,
+        relroot=REPO_ROOT,
+        **kwargs
+    )
 
 
 def _cli_check(parser, **kwargs):
@@ -131,6 +135,7 @@ def cmd_analyze(filenames=None, **kwargs):
     kwargs['get_file_preprocessor'] = _parser.get_preprocessor(log_err=print)
     c_analyzer.cmd_analyze(
         filenames,
+        relroot=REPO_ROOT,
         _analyze=_analyzer.analyze,
         formats=formats,
         **kwargs
index 978831d1fd9496b6a1dd746bac972e380b162079..09904236cd623de6263da10d7fcaaa4bb740c89b 100644 (file)
@@ -84,13 +84,13 @@ def write_known():
 
 def read_ignored():
     if not _IGNORED:
-        _IGNORED.update(_datafiles.read_ignored(IGNORED_FILE))
+        _IGNORED.update(_datafiles.read_ignored(IGNORED_FILE, relroot=REPO_ROOT))
     return dict(_IGNORED)
 
 
 def write_ignored():
     raise NotImplementedError
-    datafiles.write_ignored(variables, IGNORED_FILE)
+    _datafiles.write_ignored(variables, IGNORED_FILE, relroot=REPO_ROOT)
 
 
 def analyze(filenames, *,
index 7c8c29666539898bc85d9e5be696adb599d73fbc..eef758495386c4fb0310529c098e3d10548c5695 100644 (file)
@@ -162,6 +162,12 @@ Modules/_datetimemodule.c  Py_BUILD_CORE   1
 Modules/_ctypes/cfield.c       Py_BUILD_CORE   1
 Modules/_heapqmodule.c Py_BUILD_CORE   1
 Modules/_posixsubprocess.c     Py_BUILD_CORE   1
+Modules/_sre.c Py_BUILD_CORE   1
+Modules/_collectionsmodule.c   Py_BUILD_CORE   1
+Modules/_zoneinfo.c    Py_BUILD_CORE   1
+Modules/unicodedata.c  Py_BUILD_CORE   1
+Modules/_cursesmodule.c        Py_BUILD_CORE   1
+Modules/_ctypes/_ctypes.c      Py_BUILD_CORE   1
 Objects/stringlib/codecs.h     Py_BUILD_CORE   1
 Python/ceval_gil.h     Py_BUILD_CORE   1
 Python/condvar.h       Py_BUILD_CORE   1
index 2c456db063e429014ccf3bb1d5e4ebc3c6fdfc45..e5d93782076c3d938efdf9c11da588230d5bab03 100644 (file)
 filename       funcname        name    reason
 #???   -       somevar ???
+
+# XXX The analyzer should have ignored these (forward/extern references):
+Include/py_curses.h    -       PyCurses_API    -
+Include/pydecimal.h    -       _decimal_api    -
+Modules/_blake2/blake2module.c -       blake2b_type_spec       -
+Modules/_blake2/blake2module.c -       blake2s_type_spec       -
+Modules/_io/fileio.c   -       _Py_open_cloexec_works  -
+Modules/_io/_iomodule.h        -       PyIOBase_Type   -
+Modules/_io/_iomodule.h        -       PyRawIOBase_Type        -
+Modules/_io/_iomodule.h        -       PyBufferedIOBase_Type   -
+Modules/_io/_iomodule.h        -       PyTextIOBase_Type       -
+Modules/_io/_iomodule.h        -       PyFileIO_Type   -
+Modules/_io/_iomodule.h        -       PyBytesIO_Type  -
+Modules/_io/_iomodule.h        -       PyStringIO_Type -
+Modules/_io/_iomodule.h        -       PyBufferedReader_Type   -
+Modules/_io/_iomodule.h        -       PyBufferedWriter_Type   -
+Modules/_io/_iomodule.h        -       PyBufferedRWPair_Type   -
+Modules/_io/_iomodule.h        -       PyBufferedRandom_Type   -
+Modules/_io/_iomodule.h        -       PyTextIOWrapper_Type    -
+Modules/_io/_iomodule.h        -       PyIncrementalNewlineDecoder_Type        -
+Modules/_io/_iomodule.h        -       _PyBytesIOBuffer_Type   -
+Modules/_io/_iomodule.h        -       _PyIO_str_close -
+Modules/_io/_iomodule.h        -       _PyIO_str_closed        -
+Modules/_io/_iomodule.h        -       _PyIO_str_decode        -
+Modules/_io/_iomodule.h        -       _PyIO_str_encode        -
+Modules/_io/_iomodule.h        -       _PyIO_str_fileno        -
+Modules/_io/_iomodule.h        -       _PyIO_str_flush -
+Modules/_io/_iomodule.h        -       _PyIO_str_getstate      -
+Modules/_io/_iomodule.h        -       _PyIO_str_isatty        -
+Modules/_io/_iomodule.h        -       _PyIO_str_newlines      -
+Modules/_io/_iomodule.h        -       _PyIO_str_nl    -
+Modules/_io/_iomodule.h        -       _PyIO_str_peek  -
+Modules/_io/_iomodule.h        -       _PyIO_str_read  -
+Modules/_io/_iomodule.h        -       _PyIO_str_read1 -
+Modules/_io/_iomodule.h        -       _PyIO_str_readable      -
+Modules/_io/_iomodule.h        -       _PyIO_str_readall       -
+Modules/_io/_iomodule.h        -       _PyIO_str_readinto      -
+Modules/_io/_iomodule.h        -       _PyIO_str_readline      -
+Modules/_io/_iomodule.h        -       _PyIO_str_reset -
+Modules/_io/_iomodule.h        -       _PyIO_str_seek  -
+Modules/_io/_iomodule.h        -       _PyIO_str_seekable      -
+Modules/_io/_iomodule.h        -       _PyIO_str_setstate      -
+Modules/_io/_iomodule.h        -       _PyIO_str_tell  -
+Modules/_io/_iomodule.h        -       _PyIO_str_truncate      -
+Modules/_io/_iomodule.h        -       _PyIO_str_writable      -
+Modules/_io/_iomodule.h        -       _PyIO_str_write -
+Modules/_io/_iomodule.h        -       _PyIO_empty_str -
+Modules/_io/_iomodule.h        -       _PyIO_empty_bytes       -
+Modules/_multiprocessing/multiprocessing.h     -       _PyMp_SemLockType       -
+Modules/_sqlite/cache.h        -       pysqlite_NodeType       -
+Modules/_sqlite/cache.h        -       pysqlite_CacheType      -
+Modules/_sqlite/cursor.h       -       pysqlite_CursorType     -
+Modules/_sqlite/row.h  -       pysqlite_RowType        -
+Modules/_sqlite/prepare_protocol.h     -       pysqlite_PrepareProtocolType    -
+Modules/_sqlite/statement.h    -       pysqlite_StatementType  -
+Modules/_sqlite/connection.h   -       pysqlite_ConnectionType -
+Modules/_sqlite/module.c       -       pysqlite_Error  -
+Modules/_sqlite/module.c       -       pysqlite_Warning        -
+Modules/_sqlite/module.c       -       pysqlite_InterfaceError -
+Modules/_sqlite/module.c       -       pysqlite_DatabaseError  -
+Modules/_sqlite/module.c       -       pysqlite_InternalError  -
+Modules/_sqlite/module.c       -       pysqlite_OperationalError       -
+Modules/_sqlite/module.c       -       pysqlite_ProgrammingError       -
+Modules/_sqlite/module.c       -       pysqlite_IntegrityError -
+Modules/_sqlite/module.c       -       pysqlite_DataError      -
+Modules/_sqlite/module.c       -       pysqlite_NotSupportedError      -
+Modules/_sqlite/module.c       -       _pysqlite_converters    -
+Modules/_sqlite/module.c       -       _pysqlite_enable_callback_tracebacks    -
+Modules/_sqlite/module.c       -       pysqlite_BaseTypeAdapted        -
+Modules/_testcapimodule.c      -       _PyBytesIOBuffer_Type   -
+Modules/posixmodule.c  -       _Py_open_cloexec_works  -
+Python/importdl.h      -       _PyImport_DynLoadFiletab        -
+
+
+##################################
+# test code
+# []
+
+Modules/_ctypes/_ctypes_test.c -       _ctypes_test_slots      -
+Modules/_ctypes/_ctypes_test.c -       module_methods  -
+Modules/_ctypes/_ctypes_test.c -       my_spams        -
+Modules/_ctypes/_ctypes_test.c -       my_eggs -
+Modules/_ctypes/_ctypes_test.c -       an_integer      -
+Modules/_ctypes/_ctypes_test.c -       _xxx_lib        -
+Modules/_ctypes/_ctypes_test.c -       left    -
+Modules/_ctypes/_ctypes_test.c -       top     -
+Modules/_ctypes/_ctypes_test.c -       right   -
+Modules/_ctypes/_ctypes_test.c -       bottom  -
+Modules/_ctypes/_ctypes_test.c -       _ctypes_testmodule      -
+Modules/_ctypes/_ctypes_test.c -       last_tfrsuv_arg -
+Modules/_ctypes/_ctypes_test.c -       last_tf_arg_s   -
+Modules/_ctypes/_ctypes_test.c -       last_tf_arg_u   -
+Modules/_testbuffer.c  -       simple_format   -
+Modules/_testbuffer.c  -       static_mem      -
+Modules/_testbuffer.c  -       static_shape    -
+Modules/_testbuffer.c  -       static_strides  -
+Modules/_testbuffer.c  -       NDArray_Type    -
+Modules/_testbuffer.c  -       StaticArray_Type        -
+Modules/_testbuffer.c  ndarray_init    kwlist  -
+Modules/_testbuffer.c  ndarray_push    kwlist  -
+Modules/_testbuffer.c  staticarray_init        kwlist  -
+Modules/_testbuffer.c  -       ndarray_methods -
+Modules/_testbuffer.c  -       _testbuffer_functions   -
+Modules/_testbuffer.c  -       ndarray_getset  -
+Modules/_testbuffer.c  -       ndarray_as_buffer       -
+Modules/_testbuffer.c  -       staticarray_as_buffer   -
+Modules/_testbuffer.c  -       ndarray_as_sequence     -
+Modules/_testbuffer.c  -       ndarray_as_mapping      -
+Modules/_testbuffer.c  -       structmodule    -
+Modules/_testbuffer.c  -       _testbuffermodule       -
+Modules/_testbuffer.c  -       Struct  -
+Modules/_testbuffer.c  -       calcsize        -
+Modules/_testbuffer.c  -       simple_fmt      -
+Modules/_testbuffer.c  -       static_buffer   -
+Modules/_testbuffer.c  ndarray_memoryview_from_buffer  format  -
+Modules/_testbuffer.c  ndarray_memoryview_from_buffer  shape   -
+Modules/_testbuffer.c  ndarray_memoryview_from_buffer  strides -
+Modules/_testbuffer.c  ndarray_memoryview_from_buffer  suboffsets      -
+Modules/_testbuffer.c  ndarray_memoryview_from_buffer  info    -
+Modules/_testbuffer.c  -       infobuf -
+Modules/_testcapimodule.c      -       TestError       -
+Modules/_testcapimodule.c      test_capsule    buffer  -
+Modules/_testcapimodule.c      -       decimal_initialized     -
+Modules/_testcapimodule.c      -       thread_done     -
+Modules/_testcapimodule.c      -       capsule_error   -
+Modules/_testcapimodule.c      -       capsule_destructor_call_count   -
+Modules/_testcapimodule.c      -       str1    -
+Modules/_testcapimodule.c      -       str2    -
+Modules/_testcapimodule.c      -       test_run_counter        -
+Modules/_testcapimodule.c      -       FmHook  -
+Modules/_testcapimodule.c      -       FmData  -
+Modules/_testcapimodule.c      -       _testcapimodule -
+Modules/_testcapimodule.c      -       _HashInheritanceTester_Type     -
+Modules/_testcapimodule.c      -       test_structmembersType  -
+Modules/_testcapimodule.c      -       matmulType      -
+Modules/_testcapimodule.c      -       ipowType        -
+Modules/_testcapimodule.c      -       awaitType       -
+Modules/_testcapimodule.c      -       PyRecursingInfinitelyError_Type -
+Modules/_testcapimodule.c      -       MyList_Type     -
+Modules/_testcapimodule.c      -       GenericAlias_Type       -
+Modules/_testcapimodule.c      -       Generic_Type    -
+Modules/_testcapimodule.c      -       MethodDescriptorBase_Type       -
+Modules/_testcapimodule.c      -       MethodDescriptorDerived_Type    -
+Modules/_testcapimodule.c      -       MethodDescriptorNopGet_Type     -
+Modules/_testcapimodule.c      -       MethodDescriptor2_Type  -
+Modules/_testcapimodule.c      -       MethInstance_Type       -
+Modules/_testcapimodule.c      -       MethClass_Type  -
+Modules/_testcapimodule.c      -       MethStatic_Type -
+Modules/_testcapimodule.c      -       ContainerNoGC_type      -
+Modules/_testcapimodule.c      slot_tp_del     PyId___tp_del__ -
+Modules/_testcapimodule.c      raise_SIGINT_then_send_None     PyId_send       -
+Modules/_testcapimodule.c      -       HeapDocCType_spec       -
+Modules/_testcapimodule.c      -       HeapGcCType_spec        -
+Modules/_testcapimodule.c      -       HeapCType_spec  -
+Modules/_testcapimodule.c      -       HeapCTypeSubclass_spec  -
+Modules/_testcapimodule.c      -       HeapCTypeWithBuffer_spec        -
+Modules/_testcapimodule.c      -       HeapCTypeSubclassWithFinalizer_spec     -
+Modules/_testcapimodule.c      -       HeapCTypeWithDict_spec  -
+Modules/_testcapimodule.c      -       HeapCTypeWithNegativeDict_spec  -
+Modules/_testcapimodule.c      -       HeapCTypeWithWeakref_spec       -
+Modules/_testcapimodule.c      -       HeapCTypeSetattr_spec   -
+Modules/_testcapimodule.c      -       capsule_name    -
+Modules/_testcapimodule.c      -       capsule_pointer -
+Modules/_testcapimodule.c      -       capsule_context -
+Modules/_testcapimodule.c      -       x       -
+Modules/_testcapimodule.c      getargs_keyword_only    keywords        -
+Modules/_testcapimodule.c      getargs_keywords        keywords        -
+Modules/_testcapimodule.c      getargs_positional_only_and_keywords    keywords        -
+Modules/_testcapimodule.c      make_exception_with_doc kwlist  -
+Modules/_testcapimodule.c      test_empty_argparse     kwlist  -
+Modules/_testcapimodule.c      test_structmembers_new  keywords        -
+Modules/_testcapimodule.c      -       ml      -
+Modules/_testcapimodule.c      -       TestMethods     -
+Modules/_testcapimodule.c      -       generic_alias_methods   -
+Modules/_testcapimodule.c      -       generic_methods -
+Modules/_testcapimodule.c      -       meth_instance_methods   -
+Modules/_testcapimodule.c      -       meth_class_methods      -
+Modules/_testcapimodule.c      -       meth_static_methods     -
+Modules/_testcapimodule.c      -       test_members    -
+Modules/_testcapimodule.c      -       heapctype_members       -
+Modules/_testcapimodule.c      -       heapctypesubclass_members       -
+Modules/_testcapimodule.c      -       heapctypewithdict_members       -
+Modules/_testcapimodule.c      -       heapctypewithnegativedict_members       -
+Modules/_testcapimodule.c      -       heapctypewithweakref_members    -
+Modules/_testcapimodule.c      -       heapctypesetattr_members        -
+Modules/_testcapimodule.c      -       ContainerNoGC_members   -
+Modules/_testcapimodule.c      -       matmulType_as_number    -
+Modules/_testcapimodule.c      -       ipowType_as_number      -
+Modules/_testcapimodule.c      -       awaitType_as_async      -
+Modules/_testcapimodule.c      -       heapctypewithdict_getsetlist    -
+Modules/_testcapimodule.c      -       HeapDocCType_slots      -
+Modules/_testcapimodule.c      -       HeapGcCType_slots       -
+Modules/_testcapimodule.c      -       HeapCType_slots -
+Modules/_testcapimodule.c      -       HeapCTypeSubclass_slots -
+Modules/_testcapimodule.c      -       HeapCTypeWithBuffer_slots       -
+Modules/_testcapimodule.c      -       HeapCTypeSubclassWithFinalizer_slots    -
+Modules/_testcapimodule.c      -       HeapCTypeWithDict_slots -
+Modules/_testcapimodule.c      -       HeapCTypeWithNegativeDict_slots -
+Modules/_testcapimodule.c      -       HeapCTypeWithWeakref_slots      -
+Modules/_testcapimodule.c      -       HeapCTypeSetattr_slots  -
+Modules/_testimportmultiple.c  -       _foomodule      -
+Modules/_testimportmultiple.c  -       _barmodule      -
+Modules/_testimportmultiple.c  -       _testimportmultiple     -
+Modules/_testinternalcapi.c    -       _testcapimodule -
+Modules/_testinternalcapi.c    -       TestMethods     -
+Modules/_testmultiphase.c      -       slots_create_nonmodule  -
+Modules/_testmultiphase.c      -       def_nonmodule   -
+Modules/_testmultiphase.c      -       main_def        -
+Modules/_testmultiphase.c      -       def_nonmodule_with_methods      -
+Modules/_testmultiphase.c      -       def_nonascii_latin      -
+Modules/_testmultiphase.c      -       def_nonascii_kana       -
+Modules/_testmultiphase.c      -       null_slots_def  -
+Modules/_testmultiphase.c      -       def_bad_large   -
+Modules/_testmultiphase.c      -       def_bad_negative        -
+Modules/_testmultiphase.c      -       def_create_int_with_state       -
+Modules/_testmultiphase.c      -       def_negative_size       -
+Modules/_testmultiphase.c      -       uninitialized_def       -
+Modules/_testmultiphase.c      -       def_create_null -
+Modules/_testmultiphase.c      -       def_create_raise        -
+Modules/_testmultiphase.c      -       def_create_unreported_exception -
+Modules/_testmultiphase.c      -       def_nonmodule_with_exec_slots   -
+Modules/_testmultiphase.c      -       def_exec_err    -
+Modules/_testmultiphase.c      -       def_exec_raise  -
+Modules/_testmultiphase.c      -       def_exec_unreported_exception   -
+Modules/_testmultiphase.c      -       def_meth_state_access   -
+Modules/_testmultiphase.c      -       imp_dummy_def   -
+Modules/_testmultiphase.c      -       Example_Type_slots      -
+Modules/_testmultiphase.c      -       StateAccessType_Type_slots      -
+Modules/_testmultiphase.c      -       Str_Type_slots  -
+Modules/_testmultiphase.c      -       main_slots      -
+Modules/_testmultiphase.c      -       slots_create_nonmodule  -
+Modules/_testmultiphase.c      -       slots_bad_large -
+Modules/_testmultiphase.c      -       slots_bad_negative      -
+Modules/_testmultiphase.c      -       slots_create_null       -
+Modules/_testmultiphase.c      -       slots_create_raise      -
+Modules/_testmultiphase.c      -       slots_create_unreported_exception       -
+Modules/_testmultiphase.c      -       slots_nonmodule_with_exec_slots -
+Modules/_testmultiphase.c      -       slots_exec_err  -
+Modules/_testmultiphase.c      -       slots_exec_raise        -
+Modules/_testmultiphase.c      -       slots_exec_unreported_exception -
+Modules/_testmultiphase.c      -       meth_state_access_slots -
+Modules/_testmultiphase.c      -       Example_methods -
+Modules/_testmultiphase.c      -       StateAccessType_methods -
+Modules/_testmultiphase.c      -       testexport_methods      -
+Modules/_testmultiphase.c      -       nonmodule_methods       -
+Modules/_testmultiphase.c      -       Example_Type_spec       -
+Modules/_testmultiphase.c      -       StateAccessType_spec    -
+Modules/_testmultiphase.c      -       Str_Type_spec   -
+Modules/_xxtestfuzz/_xxtestfuzz.c      -       module_methods  -
+Modules/_xxtestfuzz/_xxtestfuzz.c      -       _fuzzmodule     -
+Modules/_xxtestfuzz/fuzzer.c   -       csv_module      -
+Modules/_xxtestfuzz/fuzzer.c   -       regex_patterns  -
+Modules/_xxtestfuzz/fuzzer.c   -       struct_unpack_method    -
+Modules/_xxtestfuzz/fuzzer.c   -       struct_error    -
+Modules/_xxtestfuzz/fuzzer.c   -       json_loads_method       -
+Modules/_xxtestfuzz/fuzzer.c   -       sre_compile_method      -
+Modules/_xxtestfuzz/fuzzer.c   -       sre_error_exception     -
+Modules/_xxtestfuzz/fuzzer.c   -       compiled_patterns       -
+Modules/_xxtestfuzz/fuzzer.c   -       csv_error       -
+Modules/_xxtestfuzz/fuzzer.c   -       SRE_FLAG_DEBUG  -
+Modules/_xxtestfuzz/fuzzer.c   LLVMFuzzerTestOneInput  STRUCT_UNPACK_INITIALIZED       -
+Modules/_xxtestfuzz/fuzzer.c   LLVMFuzzerTestOneInput  JSON_LOADS_INITIALIZED  -
+Modules/_xxtestfuzz/fuzzer.c   LLVMFuzzerTestOneInput  SRE_COMPILE_INITIALIZED -
+Modules/_xxtestfuzz/fuzzer.c   LLVMFuzzerTestOneInput  SRE_MATCH_INITIALIZED   -
+Modules/_xxtestfuzz/fuzzer.c   LLVMFuzzerTestOneInput  CSV_READER_INITIALIZED  -
+
+
+##################################
+# temporary whitelist - should be const
+
+# These are all variables that we will be making non-global.
+
+#-----------------------
+# keywords for PyArg_ParseTupleAndKeywords()
+# "static char *name[]" -> "static const char * const name[]"
+# []
+
+Modules/cjkcodecs/multibytecodec.c     -       incnewkwarglist -
+Modules/cjkcodecs/multibytecodec.c     -       streamkwarglist -
+Modules/_csv.c -       dialect_kws     -
+Modules/_datetimemodule.c      date_fromisocalendar    keywords        -
+Modules/_datetimemodule.c      -       date_kws        -
+Modules/_datetimemodule.c      date_strftime   keywords        -
+Modules/_datetimemodule.c      datetime_astimezone     keywords        -
+Modules/_datetimemodule.c      datetime_combine        keywords        -
+Modules/_datetimemodule.c      datetime_fromtimestamp  keywords        -
+Modules/_datetimemodule.c      datetime_isoformat      keywords        -
+Modules/_datetimemodule.c      -       datetime_kws    -
+Modules/_datetimemodule.c      delta_new       keywords        -
+Modules/_datetimemodule.c      time_isoformat  keywords        -
+Modules/_datetimemodule.c      -       time_kws        -
+Modules/_datetimemodule.c      time_strftime   keywords        -
+Modules/_datetimemodule.c      -       timezone_kws    -
+Modules/_decimal/_decimal.c    context_init    kwlist  -
+Modules/_decimal/_decimal.c    ctxmanager_new  kwlist  -
+Modules/_decimal/_decimal.c    ctx_mpd_qpow    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_class   kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_compare_total   kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_compare_total_mag       kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_isnormal        kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_issubnormal     kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qand    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qcompare        kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qcompare_signal kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qcopy_sign      kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qexp    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qfma    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qinvert kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qln     kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qlog10  kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qlogb   kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qmax    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qmax_mag        kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qmin    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qmin_mag        kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qnext_minus     kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qnext_plus      kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qnext_toward    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qor     kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qquantize       kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qreduce kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qrem_near       kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qrotate kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qscaleb kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qshift  kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qsqrt   kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_qxor    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_same_quantum    kwlist  -
+Modules/_decimal/_decimal.c    dec_mpd_to_eng  kwlist  -
+Modules/_decimal/_decimal.c    dec_new kwlist  -
+Modules/_decimal/_decimal.c    PyDec_ToIntegralExact   kwlist  -
+Modules/_decimal/_decimal.c    PyDec_ToIntegralValue   kwlist  -
+Modules/_elementtree.c element_setstate_from_Python    kwlist  -
+Modules/faulthandler.c faulthandler_dump_traceback_later       kwlist  -
+Modules/faulthandler.c faulthandler_dump_traceback_py  kwlist  -
+Modules/faulthandler.c faulthandler_py_enable  kwlist  -
+Modules/faulthandler.c faulthandler_register_py        kwlist  -
+Modules/_functoolsmodule.c     functools_cmp_to_key    kwargs  -
+Modules/_functoolsmodule.c     keyobject_call  kwargs  -
+Modules/_functoolsmodule.c     lru_cache_new   keywords        -
+Modules/itertoolsmodule.c      repeat_new      kwargs  -
+Modules/_json.c        encoder_call    kwlist  -
+Modules/_json.c        encoder_new     kwlist  -
+Modules/_json.c        scanner_call    kwlist  -
+Modules/_json.c        scanner_new     kwlist  -
+Modules/_lsprof.c      profiler_enable kwlist  -
+Modules/_lsprof.c      profiler_init   kwlist  -
+Modules/_lzmamodule.c  Compressor_init arg_names       -
+Modules/_lzmamodule.c  parse_filter_spec_bcj   optnames        -
+Modules/_lzmamodule.c  parse_filter_spec_delta optnames        -
+Modules/_lzmamodule.c  parse_filter_spec_lzma  optnames        -
+Modules/mmapmodule.c   new_mmap_object keywords        -
+Modules/nismodule.c    nis_cat kwlist  -
+Modules/nismodule.c    nis_maps        kwlist  -
+Modules/nismodule.c    nis_match       kwlist  -
+Modules/signalmodule.c signal_set_wakeup_fd    kwlist  -
+Modules/socketmodule.c sock_initobj    keywords        -
+Modules/socketmodule.c sock_recvfrom_into      kwlist  -
+Modules/socketmodule.c sock_recv_into  kwlist  -
+Modules/socketmodule.c sock_sendmsg_afalg      keywords        -
+Modules/socketmodule.c socket_getaddrinfo      kwnames -
+Modules/_sqlite/connection.c   pysqlite_connection_backup      keywords        -
+Modules/_sqlite/connection.c   pysqlite_connection_create_aggregate    kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_create_function     kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_cursor      kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_init        kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_set_authorizer      kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_set_progress_handler        kwlist  -
+Modules/_sqlite/connection.c   pysqlite_connection_set_trace_callback  kwlist  -
+Modules/_sqlite/cursor.c       pysqlite_cursor_fetchmany       kwlist  -
+Modules/_sqlite/module.c       module_complete kwlist  -
+Modules/_sqlite/module.c       module_connect  kwlist  -
+Modules/_sqlite/module.c       module_enable_shared_cache      kwlist  -
+Modules/syslogmodule.c syslog_openlog  keywords        -
+Modules/_xxsubinterpretersmodule.c     channel_close   kwlist  -
+Modules/_xxsubinterpretersmodule.c     channel_destroy kwlist  -
+Modules/_xxsubinterpretersmodule.c     channelid_new   kwlist  -
+Modules/_xxsubinterpretersmodule.c     channel_list_interpreters       kwlist  -
+Modules/_xxsubinterpretersmodule.c     channel_recv    kwlist  -
+Modules/_xxsubinterpretersmodule.c     channel_release kwlist  -
+Modules/_xxsubinterpretersmodule.c     channel_send    kwlist  -
+Modules/_xxsubinterpretersmodule.c     interp_create   kwlist  -
+Modules/_xxsubinterpretersmodule.c     interp_destroy  kwlist  -
+Modules/_xxsubinterpretersmodule.c     interp_is_running       kwlist  -
+Modules/_xxsubinterpretersmodule.c     interp_run_string       kwlist  -
+Modules/_xxsubinterpretersmodule.c     object_is_shareable     kwlist  -
+Modules/_zoneinfo.c    zoneinfo_clear_cache    kwlist  -
+Modules/_zoneinfo.c    zoneinfo_from_file      kwlist  -
+Modules/_zoneinfo.c    zoneinfo_new    kwlist  -
+Modules/_zoneinfo.c    zoneinfo_no_cache       kwlist  -
+Objects/exceptions.c   ImportError_init        kwlist  -
+Objects/interpreteridobject.c  interpid_new    kwlist  -
+Objects/weakrefobject.c        weakref_call    kwlist  -
+
+#-----------------------
+# PyModuleDef_Slot
+# []
+
+Modules/_abc.c -       _abcmodule_slots        -
+Modules/arraymodule.c  -       arrayslots      -
+Modules/atexitmodule.c -       atexit_slots    -
+Modules/audioop.c      -       audioop_slots   -
+Modules/binascii.c     -       binascii_slots  -
+Modules/_blake2/blake2module.c -       _blake2_slots   -
+Modules/cmathmodule.c  -       cmath_slots     -
+Modules/_codecsmodule.c        -       _codecs_slots   -
+Modules/_cryptmodule.c -       _crypt_slots    -
+Modules/_curses_panel.c        -       _curses_slots   -
+Modules/_dbmmodule.c   -       _dbmmodule_slots        -
+Modules/errnomodule.c  -       errno_slots     -
+Modules/faulthandler.c -       faulthandler_slots      -
+Modules/fcntlmodule.c  -       fcntl_slots     -
+Modules/_gdbmmodule.c  -       _gdbm_module_slots      -
+Modules/_hashopenssl.c -       hashlib_slots   -
+Modules/_json.c        -       _json_slots     -
+Modules/_lsprof.c      -       _lsprofslots    -
+Modules/_lzmamodule.c  -       lzma_slots      -
+Modules/mathmodule.c   -       math_slots      -
+Modules/md5module.c    -       _md5_slots      -
+Modules/mmapmodule.c   -       mmap_slots      -
+Modules/_multiprocessing/multiprocessing.c     -       multiprocessing_slots   -
+Modules/nismodule.c    -       nis_slots       -
+Modules/overlapped.c   -       overlapped_slots        -
+Modules/posixmodule.c  -       posixmodile_slots       -
+Modules/_scproxy.c     -       _scproxy_slots  -
+Modules/sha1module.c   -       _sha1_slots     -
+Modules/sha256module.c -       _sha256_slots   -
+Modules/_sha3/sha3module.c     -       _sha3_slots     -
+Modules/sha512module.c -       _sha512_slots   -
+Modules/_stat.c        -       stat_slots      -
+Modules/syslogmodule.c -       syslog_slots    -
+Modules/termios.c      -       termios_slots   -
+Modules/unicodedata.c  -       unicodedata_slots       -
+Modules/_uuidmodule.c  -       uuid_slots      -
+Modules/_winapi.c      -       winapi_slots    -
+Modules/xxlimited.c    -       xx_slots        -
+Modules/zlibmodule.c   -       zlib_slots      -
+Modules/_zoneinfo.c    -       zoneinfomodule_slots    -
+Python/marshal.c       -       marshalmodule_slots     -
+Python/Python-ast.c    -       astmodule_slots -
+Modules/_bz2module.c   -       _bz2_slots      -
+Modules/_collectionsmodule.c   -       collections_slots       -
+Modules/_contextvarsmodule.c   -       _contextvars_slots      -
+Modules/_functoolsmodule.c     -       _functools_slots        -
+Modules/_heapqmodule.c -       heapq_slots     -
+Modules/itertoolsmodule.c      -       itertoolsmodule_slots   -
+Modules/_localemodule.c        -       _locale_slots   -
+Modules/_operator.c    -       operator_slots  -
+Modules/resource.c     -       resource_slots  -
+Modules/_statisticsmodule.c    -       _statisticsmodule_slots -
+Modules/timemodule.c   -       time_slots      -
+Modules/_weakref.c     -       weakref_slots   -
+Modules/xxmodule.c     -       xx_slots        -
+Modules/xxsubtype.c    -       xxsubtype_slots -
+
+#-----------------------
+# PyMethodDef and PyMethodDef[], for static types and modules
+# []
+
+Modules/_abc.c -       _destroy_def    -
+Modules/_abc.c -       _abcmodule_methods      -
+Modules/arraymodule.c  -       array_methods   -
+Modules/arraymodule.c  -       arrayiter_methods       -
+Modules/arraymodule.c  -       a_methods       -
+Modules/_asynciomodule.c       -       FutureType_methods      -
+Modules/_asynciomodule.c       -       FutureIter_methods      -
+Modules/_asynciomodule.c       -       TaskType_methods        -
+Modules/_asynciomodule.c       -       asyncio_methods -
+Modules/_asynciomodule.c       -       TaskWakeupDef   -
+Modules/atexitmodule.c -       atexit_methods  -
+Modules/audioop.c      -       audioop_methods -
+Modules/binascii.c     -       binascii_module_methods -
+Modules/_bisectmodule.c        -       bisect_methods  -
+Modules/_blake2/blake2b_impl.c -       py_blake2b_methods      -
+Modules/_blake2/blake2module.c -       blake2mod_functions     -
+Modules/_blake2/blake2s_impl.c -       py_blake2s_methods      -
+Modules/_bz2module.c   -       BZ2Compressor_methods   -
+Modules/_bz2module.c   -       BZ2Decompressor_methods -
+Modules/cjkcodecs/multibytecodec.c     -       multibytecodec_methods  -
+Modules/cjkcodecs/multibytecodec.c     -       mbiencoder_methods      -
+Modules/cjkcodecs/multibytecodec.c     -       mbidecoder_methods      -
+Modules/cjkcodecs/multibytecodec.c     -       mbstreamreader_methods  -
+Modules/cjkcodecs/multibytecodec.c     -       mbstreamwriter_methods  -
+Modules/cjkcodecs/multibytecodec.c     -       __methods       -
+Modules/cmathmodule.c  -       cmath_methods   -
+Modules/_codecsmodule.c        -       _codecs_functions       -
+Modules/_collectionsmodule.c   -       deque_methods   -
+Modules/_collectionsmodule.c   -       dequeiter_methods       -
+Modules/_collectionsmodule.c   -       defdict_methods -
+Modules/_collectionsmodule.c   -       tuplegetter_methods     -
+Modules/_collectionsmodule.c   -       collections_methods     -
+Modules/_contextvarsmodule.c   -       _contextvars_methods    -
+Modules/_cryptmodule.c -       crypt_methods   -
+Modules/_csv.c -       Reader_methods  -
+Modules/_csv.c -       Writer_methods  -
+Modules/_csv.c -       csv_methods     -
+Modules/_ctypes/callproc.c     -       _ctypes_module_methods  -
+Modules/_ctypes/_ctypes.c      -       CDataType_methods       -
+Modules/_ctypes/_ctypes.c      -       PyCPointerType_methods  -
+Modules/_ctypes/_ctypes.c      -       c_void_p_method -
+Modules/_ctypes/_ctypes.c      -       c_char_p_method -
+Modules/_ctypes/_ctypes.c      -       c_wchar_p_method        -
+Modules/_ctypes/_ctypes.c      -       PyCSimpleType_methods   -
+Modules/_ctypes/_ctypes.c      -       PyCData_methods -
+Modules/_ctypes/_ctypes.c      -       Array_methods   -
+Modules/_ctypes/_ctypes.c      -       Simple_methods  -
+Modules/_ctypes/stgdict.c      -       PyCStgDict_methods      -
+Modules/_cursesmodule.c        -       PyCursesWindow_Methods  -
+Modules/_cursesmodule.c        -       PyCurses_methods        -
+Modules/_curses_panel.c        -       PyCursesPanel_Methods   -
+Modules/_curses_panel.c        -       PyCurses_methods        -
+Modules/_datetimemodule.c      -       delta_methods   -
+Modules/_datetimemodule.c      -       iso_calendar_date_methods       -
+Modules/_datetimemodule.c      -       date_methods    -
+Modules/_datetimemodule.c      -       tzinfo_methods  -
+Modules/_datetimemodule.c      -       timezone_methods        -
+Modules/_datetimemodule.c      -       time_methods    -
+Modules/_datetimemodule.c      -       datetime_methods        -
+Modules/_datetimemodule.c      -       module_methods  -
+Modules/_dbmmodule.c   -       dbm_methods     -
+Modules/_dbmmodule.c   -       dbmmodule_methods       -
+Modules/_decimal/_decimal.c    -       signaldict_methods      -
+Modules/_decimal/_decimal.c    -       ctxmanager_methods      -
+Modules/_decimal/_decimal.c    -       dec_methods     -
+Modules/_decimal/_decimal.c    -       context_methods -
+Modules/_decimal/_decimal.c    -       _decimal_methods        -
+Modules/_elementtree.c -       element_methods -
+Modules/_elementtree.c -       treebuilder_methods     -
+Modules/_elementtree.c -       xmlparser_methods       -
+Modules/_elementtree.c -       _functions      -
+Modules/errnomodule.c  -       errno_methods   -
+Modules/faulthandler.c -       module_methods  -
+Modules/fcntlmodule.c  -       fcntl_methods   -
+Modules/_functoolsmodule.c     -       partial_methods -
+Modules/_functoolsmodule.c     -       lru_cache_methods       -
+Modules/_functoolsmodule.c     -       _functools_methods      -
+Modules/gcmodule.c     -       GcMethods       -
+Modules/_gdbmmodule.c  -       gdbm_methods    -
+Modules/_gdbmmodule.c  -       _gdbm_module_methods    -
+Modules/grpmodule.c    -       grp_methods     -
+Modules/_hashopenssl.c -       EVP_methods     -
+Modules/_hashopenssl.c -       EVPXOF_methods  -
+Modules/_hashopenssl.c -       HMAC_methods    -
+Modules/_hashopenssl.c -       EVP_functions   -
+Modules/_heapqmodule.c -       heapq_methods   -
+Modules/_io/bufferedio.c       -       bufferediobase_methods  -
+Modules/_io/bufferedio.c       -       bufferedreader_methods  -
+Modules/_io/bufferedio.c       -       bufferedwriter_methods  -
+Modules/_io/bufferedio.c       -       bufferedrwpair_methods  -
+Modules/_io/bufferedio.c       -       bufferedrandom_methods  -
+Modules/_io/bytesio.c  -       bytesio_methods -
+Modules/_io/fileio.c   -       fileio_methods  -
+Modules/_io/iobase.c   -       iobase_methods  -
+Modules/_io/iobase.c   -       rawiobase_methods       -
+Modules/_io/_iomodule.c        -       module_methods  -
+Modules/_io/stringio.c -       stringio_methods        -
+Modules/_io/textio.c   -       textiobase_methods      -
+Modules/_io/textio.c   -       incrementalnewlinedecoder_methods       -
+Modules/_io/textio.c   -       textiowrapper_methods   -
+Modules/_io/winconsoleio.c     -       winconsoleio_methods    -
+Modules/itertoolsmodule.c      -       groupby_methods -
+Modules/itertoolsmodule.c      -       _grouper_methods        -
+Modules/itertoolsmodule.c      -       teedataobject_methods   -
+Modules/itertoolsmodule.c      -       tee_methods     -
+Modules/itertoolsmodule.c      -       cycle_methods   -
+Modules/itertoolsmodule.c      -       dropwhile_methods       -
+Modules/itertoolsmodule.c      -       takewhile_reduce_methods        -
+Modules/itertoolsmodule.c      -       islice_methods  -
+Modules/itertoolsmodule.c      -       starmap_methods -
+Modules/itertoolsmodule.c      -       chain_methods   -
+Modules/itertoolsmodule.c      -       product_methods -
+Modules/itertoolsmodule.c      -       combinations_methods    -
+Modules/itertoolsmodule.c      -       cwr_methods     -
+Modules/itertoolsmodule.c      -       permuations_methods     -
+Modules/itertoolsmodule.c      -       accumulate_methods      -
+Modules/itertoolsmodule.c      -       compress_methods        -
+Modules/itertoolsmodule.c      -       filterfalse_methods     -
+Modules/itertoolsmodule.c      -       count_methods   -
+Modules/itertoolsmodule.c      -       repeat_methods  -
+Modules/itertoolsmodule.c      -       zip_longest_methods     -
+Modules/itertoolsmodule.c      -       module_methods  -
+Modules/_json.c        -       speedups_methods        -
+Modules/_localemodule.c        -       PyLocale_Methods        -
+Modules/_lsprof.c      -       profiler_methods        -
+Modules/_lsprof.c      -       moduleMethods   -
+Modules/_lzmamodule.c  -       Compressor_methods      -
+Modules/_lzmamodule.c  -       Decompressor_methods    -
+Modules/_lzmamodule.c  -       lzma_methods    -
+Modules/mathmodule.c   -       math_methods    -
+Modules/md5module.c    -       MD5_methods     -
+Modules/md5module.c    -       MD5_functions   -
+Modules/mmapmodule.c   -       mmap_object_methods     -
+Modules/_multiprocessing/multiprocessing.c     -       module_methods  -
+Modules/_multiprocessing/posixshmem.c  -       module_methods  -
+Modules/_multiprocessing/semaphore.c   -       semlock_methods -
+Modules/nismodule.c    -       nis_methods     -
+Modules/_opcode.c      -       opcode_functions        -
+Modules/_operator.c    -       operator_methods        -
+Modules/_operator.c    -       itemgetter_methods      -
+Modules/_operator.c    -       attrgetter_methods      -
+Modules/_operator.c    -       methodcaller_methods    -
+Modules/ossaudiodev.c  -       oss_methods     -
+Modules/ossaudiodev.c  -       oss_mixer_methods       -
+Modules/ossaudiodev.c  -       ossaudiodev_methods     -
+Modules/overlapped.c   -       Overlapped_methods      -
+Modules/overlapped.c   -       overlapped_functions    -
+Modules/_pickle.c      -       Pickler_methods -
+Modules/_pickle.c      -       picklerproxy_methods    -
+Modules/_pickle.c      -       Unpickler_methods       -
+Modules/_pickle.c      -       unpicklerproxy_methods  -
+Modules/_pickle.c      -       pickle_methods  -
+Modules/posixmodule.c  -       DirEntry_methods        -
+Modules/posixmodule.c  -       ScandirIterator_methods -
+Modules/posixmodule.c  -       posix_methods   -
+Modules/_posixsubprocess.c     -       module_methods  -
+Modules/pwdmodule.c    -       pwd_methods     -
+Modules/pyexpat.c      -       xmlparse_methods        -
+Modules/pyexpat.c      -       pyexpat_methods -
+Modules/_queuemodule.c -       simplequeue_methods     -
+Modules/_randommodule.c        -       random_methods  -
+Modules/readline.c     -       readline_methods        -
+Modules/resource.c     -       resource_methods        -
+Modules/_scproxy.c     -       mod_methods     -
+Modules/selectmodule.c -       poll_methods    -
+Modules/selectmodule.c -       devpoll_methods -
+Modules/selectmodule.c -       pyepoll_methods -
+Modules/selectmodule.c -       kqueue_queue_methods    -
+Modules/selectmodule.c -       select_methods  -
+Modules/sha1module.c   -       SHA1_methods    -
+Modules/sha1module.c   -       SHA1_functions  -
+Modules/sha256module.c -       SHA_methods     -
+Modules/sha256module.c -       SHA_functions   -
+Modules/_sha3/sha3module.c     -       SHA3_methods    -
+Modules/_sha3/sha3module.c     -       SHAKE_methods   -
+Modules/sha512module.c -       SHA_methods     -
+Modules/sha512module.c -       SHA_functions   -
+Modules/signalmodule.c -       signal_methods  -
+Modules/socketmodule.c -       sock_methods    -
+Modules/socketmodule.c -       socket_methods  -
+Modules/spwdmodule.c   -       spwd_methods    -
+Modules/_sqlite/cache.c        -       cache_methods   -
+Modules/_sqlite/connection.c   -       connection_methods      -
+Modules/_sqlite/cursor.c       -       cursor_methods  -
+Modules/_sqlite/module.c       -       module_methods  -
+Modules/_sqlite/row.c  -       row_methods     -
+Modules/_sre.c -       pattern_methods -
+Modules/_sre.c -       match_methods   -
+Modules/_sre.c -       scanner_methods -
+Modules/_sre.c -       _functions      -
+Modules/_ssl.c -       PySSLMethods    -
+Modules/_ssl.c -       context_methods -
+Modules/_ssl.c -       memory_bio_methods      -
+Modules/_ssl.c -       PySSL_methods   -
+Modules/_stat.c        -       stat_methods    -
+Modules/_statisticsmodule.c    -       statistics_methods      -
+Modules/_struct.c      -       unpackiter_methods      -
+Modules/_struct.c      -       s_methods       -
+Modules/_struct.c      -       module_functions        -
+Modules/symtablemodule.c       -       symtable_methods        -
+Modules/syslogmodule.c -       syslog_methods  -
+Modules/termios.c      -       termios_methods -
+Modules/_threadmodule.c        -       lock_methods    -
+Modules/_threadmodule.c        -       rlock_methods   -
+Modules/_threadmodule.c        local_new       wr_callback_def -
+Modules/_threadmodule.c        -       thread_methods  -
+Modules/timemodule.c   -       time_methods    -
+Modules/_tkinter.c     -       Tktt_methods    -
+Modules/_tkinter.c     -       Tkapp_methods   -
+Modules/_tkinter.c     -       moduleMethods   -
+Modules/_tracemalloc.c -       module_methods  -
+Modules/unicodedata.c  -       unicodedata_functions   -
+Modules/_uuidmodule.c  -       uuid_methods    -
+Modules/_weakref.c     -       weakref_functions       -
+Modules/_winapi.c      -       overlapped_methods      -
+Modules/_winapi.c      -       winapi_functions        -
+Modules/xxlimited.c    -       Xxo_methods     -
+Modules/xxlimited.c    -       xx_methods      -
+Modules/xxmodule.c     -       Xxo_methods     -
+Modules/xxmodule.c     -       xx_methods      -
+Modules/_xxsubinterpretersmodule.c     -       module_functions        -
+Modules/xxsubtype.c    -       spamlist_methods        -
+Modules/xxsubtype.c    -       spamdict_methods        -
+Modules/xxsubtype.c    -       xxsubtype_functions     -
+Modules/zlibmodule.c   -       comp_methods    -
+Modules/zlibmodule.c   -       Decomp_methods  -
+Modules/zlibmodule.c   -       zlib_methods    -
+Modules/_zoneinfo.c    -       zoneinfo_methods        -
+Modules/_zoneinfo.c    -       module_methods  -
+Modules/cjkcodecs/cjkcodecs.h  -       __methods       -
+Objects/bytearrayobject.c      -       bytearray_methods       -
+Objects/bytearrayobject.c      -       bytearrayiter_methods   -
+Objects/bytesobject.c  -       bytes_methods   -
+Objects/bytesobject.c  -       striter_methods -
+Objects/classobject.c  -       method_methods  -
+Objects/codeobject.c   -       code_methods    -
+Objects/complexobject.c        -       complex_methods -
+Objects/descrobject.c  -       descr_methods   -
+Objects/descrobject.c  -       mappingproxy_methods    -
+Objects/descrobject.c  -       wrapper_methods -
+Objects/descrobject.c  -       property_methods        -
+Objects/dictobject.c   -       mapp_methods    -
+Objects/dictobject.c   -       dictiter_methods        -
+Objects/dictobject.c   -       dictkeys_methods        -
+Objects/dictobject.c   -       dictitems_methods       -
+Objects/dictobject.c   -       dictvalues_methods      -
+Objects/enumobject.c   -       enum_methods    -
+Objects/enumobject.c   -       reversediter_methods    -
+Objects/exceptions.c   -       BaseException_methods   -
+Objects/exceptions.c   -       ImportError_methods     -
+Objects/exceptions.c   -       OSError_methods -
+Objects/fileobject.c   -       stdprinter_methods      -
+Objects/floatobject.c  -       float_methods   -
+Objects/frameobject.c  -       frame_methods   -
+Objects/genericaliasobject.c   -       ga_methods      -
+Objects/genobject.c    -       gen_methods     -
+Objects/genobject.c    -       coro_methods    -
+Objects/genobject.c    -       coro_wrapper_methods    -
+Objects/genobject.c    -       async_gen_methods       -
+Objects/genobject.c    -       async_gen_asend_methods -
+Objects/genobject.c    -       async_gen_athrow_methods        -
+Objects/iterobject.c   -       seqiter_methods -
+Objects/iterobject.c   -       calliter_methods        -
+Objects/listobject.c   -       list_methods    -
+Objects/listobject.c   -       listiter_methods        -
+Objects/listobject.c   -       listreviter_methods     -
+Objects/longobject.c   -       long_methods    -
+Objects/memoryobject.c -       memory_methods  -
+Objects/methodobject.c -       meth_methods    -
+Objects/moduleobject.c -       module_methods  -
+Objects/namespaceobject.c      -       namespace_methods       -
+Objects/object.c       -       notimplemented_methods  -
+Objects/odictobject.c  -       odict_methods   -
+Objects/odictobject.c  -       odictiter_methods       -
+Objects/odictobject.c  -       odictkeys_methods       -
+Objects/odictobject.c  -       odictitems_methods      -
+Objects/odictobject.c  -       odictvalues_methods     -
+Objects/picklebufobject.c      -       picklebuf_methods       -
+Objects/rangeobject.c  -       range_methods   -
+Objects/rangeobject.c  -       rangeiter_methods       -
+Objects/rangeobject.c  -       longrangeiter_methods   -
+Objects/setobject.c    -       setiter_methods -
+Objects/setobject.c    -       set_methods     -
+Objects/setobject.c    -       frozenset_methods       -
+Objects/sliceobject.c  -       ellipsis_methods        -
+Objects/sliceobject.c  -       slice_methods   -
+Objects/structseq.c    -       structseq_methods       -
+Objects/tupleobject.c  -       tuple_methods   -
+Objects/tupleobject.c  -       tupleiter_methods       -
+Objects/typeobject.c   -       type_methods    -
+Objects/typeobject.c   -       object_methods  -
+Objects/typeobject.c   -       tp_new_methoddef        -
+Objects/unicodeobject.c        -       encoding_map_methods    -
+Objects/unicodeobject.c        -       unicode_methods -
+Objects/unicodeobject.c        -       unicodeiter_methods     -
+Objects/unicodeobject.c        -       _string_methods -
+Objects/unionobject.c  -       union_methods   -
+Objects/weakrefobject.c        -       weakref_methods -
+Objects/weakrefobject.c        -       proxy_methods   -
+Objects/stringlib/unicode_format.h     -       formatteriter_methods   -
+Objects/stringlib/unicode_format.h     -       fieldnameiter_methods   -
+Python/bltinmodule.c   -       filter_methods  -
+Python/bltinmodule.c   -       map_methods     -
+Python/bltinmodule.c   -       zip_methods     -
+Python/bltinmodule.c   -       builtin_methods -
+Python/context.c       -       PyContext_methods       -
+Python/context.c       -       PyContextVar_methods    -
+Python/context.c       -       PyContextTokenType_methods      -
+Python/hamt.c  -       PyHamt_methods  -
+Python/import.c        -       imp_methods     -
+Python/marshal.c       -       marshal_methods -
+Python/Python-ast.c    -       ast_type_methods        -
+Python/sysmodule.c     -       sys_methods     -
+Python/traceback.c     -       tb_methods      -
+Python/_warnings.c     -       warnings_functions      -
+
+#-----------------------
+# PyMemberDef[], for static types and strucseq
+# []
+
+Modules/_bz2module.c   -       BZ2Decompressor_members -
+Modules/cjkcodecs/multibytecodec.c     -       mbstreamreader_members  -
+Modules/cjkcodecs/multibytecodec.c     -       mbstreamwriter_members  -
+Modules/_collectionsmodule.c   -       defdict_members -
+Modules/_collectionsmodule.c   -       tuplegetter_members     -
+Modules/_csv.c -       Dialect_memberlist      -
+Modules/_csv.c -       Reader_memberlist       -
+Modules/_csv.c -       Writer_memberlist       -
+Modules/_ctypes/callproc.c     -       PyCArgType_members      -
+Modules/_ctypes/_ctypes.c      -       PyCData_members -
+Modules/_datetimemodule.c      -       delta_members   -
+Modules/_elementtree.c -       xmlparser_members       -
+Modules/_functoolsmodule.c     -       partial_memberlist      -
+Modules/_functoolsmodule.c     -       keyobject_members       -
+Modules/_io/bufferedio.c       -       bufferedreader_members  -
+Modules/_io/bufferedio.c       -       bufferedwriter_members  -
+Modules/_io/bufferedio.c       -       bufferedrandom_members  -
+Modules/_io/fileio.c   -       fileio_members  -
+Modules/_io/textio.c   -       textiowrapper_members   -
+Modules/_io/winconsoleio.c     -       winconsoleio_members    -
+Modules/_json.c        -       scanner_members -
+Modules/_json.c        -       encoder_members -
+Modules/_lzmamodule.c  -       Decompressor_members    -
+Modules/_multiprocessing/semaphore.c   -       semlock_members -
+Modules/ossaudiodev.c  -       oss_members     -
+Modules/overlapped.c   -       Overlapped_members      -
+Modules/_pickle.c      -       Pickler_members -
+Modules/posixmodule.c  -       DirEntry_members        -
+Modules/pyexpat.c      -       xmlparse_members        -
+Modules/selectmodule.c -       kqueue_event_members    -
+Modules/sha256module.c -       SHA_members     -
+Modules/sha512module.c -       SHA_members     -
+Modules/socketmodule.c -       sock_memberlist -
+Modules/_sqlite/connection.c   -       connection_members      -
+Modules/_sqlite/cursor.c       -       cursor_members  -
+Modules/_sqlite/statement.c    -       stmt_members    -
+Modules/_sre.c -       pattern_members -
+Modules/_sre.c -       match_members   -
+Modules/_sre.c -       scanner_members -
+Modules/_struct.c      -       s_members       -
+Modules/unicodedata.c  -       DB_members      -
+Modules/_winapi.c      -       overlapped_members      -
+Modules/xxsubtype.c    -       spamdict_members        -
+Modules/zlibmodule.c   -       Decomp_members  -
+Modules/_zoneinfo.c    -       zoneinfo_members        -
+Objects/classobject.c  -       method_memberlist       -
+Objects/classobject.c  -       instancemethod_memberlist       -
+Objects/codeobject.c   -       code_memberlist -
+Objects/complexobject.c        -       complex_members -
+Objects/descrobject.c  -       descr_members   -
+Objects/descrobject.c  -       wrapper_members -
+Objects/descrobject.c  -       property_members        -
+Objects/exceptions.c   -       BaseException_members   -
+Objects/exceptions.c   -       StopIteration_members   -
+Objects/exceptions.c   -       SystemExit_members      -
+Objects/exceptions.c   -       ImportError_members     -
+Objects/exceptions.c   -       OSError_members -
+Objects/exceptions.c   -       SyntaxError_members     -
+Objects/exceptions.c   -       UnicodeError_members    -
+Objects/frameobject.c  -       frame_memberlist        -
+Objects/funcobject.c   -       func_memberlist -
+Objects/funcobject.c   -       cm_memberlist   -
+Objects/funcobject.c   -       sm_memberlist   -
+Objects/genericaliasobject.c   -       ga_members      -
+Objects/genobject.c    -       gen_memberlist  -
+Objects/genobject.c    -       coro_memberlist -
+Objects/genobject.c    -       async_gen_memberlist    -
+Objects/methodobject.c -       meth_members    -
+Objects/moduleobject.c -       module_members  -
+Objects/namespaceobject.c      -       namespace_members       -
+Objects/rangeobject.c  -       range_members   -
+Objects/sliceobject.c  -       slice_members   -
+Objects/typeobject.c   -       type_members    -
+Objects/typeobject.c   -       super_members   -
+Objects/unionobject.c  -       union_members   -
+Objects/weakrefobject.c        -       weakref_members -
+Python/context.c       -       PyContextVar_members    -
+Python/Python-ast.c    -       ast_type_members        -
+Python/symtable.c      -       ste_memberlist  -
+Python/traceback.c     -       tb_memberlist   -
+
+#-----------------------
+# for static types
+# []
+
+# PyNumberMethods  []
+Modules/_collectionsmodule.c   -       deque_as_number -
+Modules/_collectionsmodule.c   -       defdict_as_number       -
+Modules/_ctypes/_ctypes.c      -       PyCFuncPtr_as_number    -
+Modules/_ctypes/_ctypes.c      -       Simple_as_number        -
+Modules/_ctypes/_ctypes.c      -       Pointer_as_number       -
+Modules/_datetimemodule.c      -       delta_as_number -
+Modules/_datetimemodule.c      -       date_as_number  -
+Modules/_datetimemodule.c      -       datetime_as_number      -
+Modules/_decimal/_decimal.c    -       dec_number_methods      -
+Modules/_xxsubinterpretersmodule.c     -       channelid_as_number     -
+Objects/boolobject.c   -       bool_as_number  -
+Objects/bytearrayobject.c      -       bytearray_as_number     -
+Objects/bytesobject.c  -       bytes_as_number -
+Objects/complexobject.c        -       complex_as_number       -
+Objects/descrobject.c  -       mappingproxy_as_number  -
+Objects/dictobject.c   -       dict_as_number  -
+Objects/dictobject.c   -       dictviews_as_number     -
+Objects/floatobject.c  -       float_as_number -
+Objects/interpreteridobject.c  -       interpid_as_number      -
+Objects/longobject.c   -       long_as_number  -
+Objects/object.c       -       none_as_number  -
+Objects/object.c       -       notimplemented_as_number        -
+Objects/odictobject.c  -       odict_as_number -
+Objects/rangeobject.c  -       range_as_number -
+Objects/setobject.c    -       set_as_number   -
+Objects/setobject.c    -       frozenset_as_number     -
+Objects/typeobject.c   -       type_as_number  -
+Objects/unicodeobject.c        -       unicode_as_number       -
+Objects/unionobject.c  -       union_as_number -
+Objects/weakrefobject.c        -       proxy_as_number -
+
+# PySequenceMethods  []
+Modules/arraymodule.c  -       array_as_sequence       -
+Modules/_collectionsmodule.c   -       deque_as_sequence       -
+Modules/_ctypes/_ctypes.c      -       CDataType_as_sequence   -
+Modules/_ctypes/_ctypes.c      -       Array_as_sequence       -
+Modules/_ctypes/_ctypes.c      -       Pointer_as_sequence     -
+Modules/_elementtree.c -       element_as_sequence     -
+Modules/mmapmodule.c   -       mmap_as_sequence        -
+Objects/bytearrayobject.c      -       bytearray_as_sequence   -
+Objects/bytesobject.c  -       bytes_as_sequence       -
+Objects/descrobject.c  -       mappingproxy_as_sequence        -
+Objects/dictobject.c   -       dict_as_sequence        -
+Objects/dictobject.c   -       dictkeys_as_sequence    -
+Objects/dictobject.c   -       dictitems_as_sequence   -
+Objects/dictobject.c   -       dictvalues_as_sequence  -
+Objects/listobject.c   -       list_as_sequence        -
+Objects/memoryobject.c -       memory_as_sequence      -
+Objects/rangeobject.c  -       range_as_sequence       -
+Objects/setobject.c    -       set_as_sequence -
+Objects/tupleobject.c  -       tuple_as_sequence       -
+Objects/unicodeobject.c        -       unicode_as_sequence     -
+Objects/weakrefobject.c        -       proxy_as_sequence       -
+Python/context.c       -       PyContext_as_sequence   -
+Python/hamt.c  -       PyHamt_as_sequence      -
+
+# PyMappingMethods  []
+Modules/arraymodule.c  -       array_as_mapping        -
+Modules/_ctypes/_ctypes.c      -       Array_as_mapping        -
+Modules/_ctypes/_ctypes.c      -       Pointer_as_mapping      -
+Modules/_decimal/_decimal.c    -       signaldict_as_mapping   -
+Modules/_elementtree.c -       element_as_mapping      -
+Modules/mmapmodule.c   -       mmap_as_mapping -
+Modules/_sre.c -       match_as_mapping        -
+Objects/bytearrayobject.c      -       bytearray_as_mapping    -
+Objects/bytesobject.c  -       bytes_as_mapping        -
+Objects/descrobject.c  -       mappingproxy_as_mapping -
+Objects/dictobject.c   -       dict_as_mapping -
+Objects/genericaliasobject.c   -       ga_as_mapping   -
+Objects/listobject.c   -       list_as_mapping -
+Objects/memoryobject.c -       memory_as_mapping       -
+Objects/odictobject.c  -       odict_as_mapping        -
+Objects/rangeobject.c  -       range_as_mapping        -
+Objects/tupleobject.c  -       tuple_as_mapping        -
+Objects/unicodeobject.c        -       unicode_as_mapping      -
+Objects/weakrefobject.c        -       proxy_as_mapping        -
+Python/context.c       -       PyContext_as_mapping    -
+Python/hamt.c  -       PyHamtIterator_as_mapping       -
+Python/hamt.c  -       PyHamt_as_mapping       -
+
+# PyAsyncMethods  []
+Modules/_asynciomodule.c       -       FutureType_as_async     -
+Objects/genobject.c    -       coro_as_async   -
+Objects/genobject.c    -       async_gen_as_async      -
+Objects/genobject.c    -       async_gen_asend_as_async        -
+Objects/genobject.c    -       async_gen_athrow_as_async       -
+
+# PyBufferProcs  []
+Modules/arraymodule.c  -       array_as_buffer -
+Modules/_ctypes/_ctypes.c      -       PyCData_as_buffer       -
+Modules/_io/bytesio.c  -       bytesiobuf_as_buffer    -
+Modules/mmapmodule.c   -       mmap_as_buffer  -
+Objects/bytearrayobject.c      -       bytearray_as_buffer     -
+Objects/bytesobject.c  -       bytes_as_buffer -
+Objects/memoryobject.c -       memory_as_buffer        -
+Objects/picklebufobject.c      -       picklebuf_as_buffer     -
+
+# PyGetSetDef  []
+Modules/arraymodule.c  -       array_getsets   -
+Modules/_asynciomodule.c       -       FutureType_getsetlist   -
+Modules/_asynciomodule.c       -       TaskStepMethWrapper_getsetlist  -
+Modules/_asynciomodule.c       -       TaskType_getsetlist     -
+Modules/_blake2/blake2b_impl.c -       py_blake2b_getsetters   -
+Modules/_blake2/blake2s_impl.c -       py_blake2s_getsetters   -
+Modules/cjkcodecs/multibytecodec.c     -       codecctx_getsets        -
+Modules/_collectionsmodule.c   -       deque_getset    -
+Modules/_csv.c -       Dialect_getsetlist      -
+Modules/_ctypes/cfield.c       -       PyCField_getset -
+Modules/_ctypes/_ctypes.c      -       CharArray_getsets       -
+Modules/_ctypes/_ctypes.c      -       WCharArray_getsets      -
+Modules/_ctypes/_ctypes.c      -       PyCFuncPtr_getsets      -
+Modules/_ctypes/_ctypes.c      -       Simple_getsets  -
+Modules/_ctypes/_ctypes.c      -       Pointer_getsets -
+Modules/_cursesmodule.c        -       PyCursesWindow_getsets  -
+Modules/_datetimemodule.c      -       date_getset     -
+Modules/_datetimemodule.c      -       iso_calendar_date_getset        -
+Modules/_datetimemodule.c      -       time_getset     -
+Modules/_datetimemodule.c      -       datetime_getset -
+Modules/_decimal/_decimal.c    -       context_getsets -
+Modules/_decimal/_decimal.c    -       dec_getsets     -
+Modules/_elementtree.c -       xmlparser_getsetlist    -
+Modules/_elementtree.c -       element_getsetlist      -
+Modules/_functoolsmodule.c     -       partial_getsetlist      -
+Modules/_functoolsmodule.c     -       lru_cache_getsetlist    -
+Modules/_hashopenssl.c -       EVP_getseters   -
+Modules/_hashopenssl.c -       EVPXOF_getseters        -
+Modules/_hashopenssl.c -       HMAC_getset     -
+Modules/_io/bufferedio.c       -       bufferedreader_getset   -
+Modules/_io/bufferedio.c       -       bufferedwriter_getset   -
+Modules/_io/bufferedio.c       -       bufferedrwpair_getset   -
+Modules/_io/bufferedio.c       -       bufferedrandom_getset   -
+Modules/_io/bytesio.c  -       bytesio_getsetlist      -
+Modules/_io/fileio.c   -       fileio_getsetlist       -
+Modules/_io/iobase.c   -       iobase_getset   -
+Modules/_io/stringio.c -       stringio_getset -
+Modules/_io/textio.c   -       textiobase_getset       -
+Modules/_io/textio.c   -       incrementalnewlinedecoder_getset        -
+Modules/_io/textio.c   -       textiowrapper_getset    -
+Modules/_io/winconsoleio.c     -       winconsoleio_getsetlist -
+Modules/md5module.c    -       MD5_getseters   -
+Modules/mmapmodule.c   -       mmap_object_getset      -
+Modules/ossaudiodev.c  -       oss_getsetlist  -
+Modules/overlapped.c   -       Overlapped_getsets      -
+Modules/_pickle.c      -       Pickler_getsets -
+Modules/_pickle.c      -       Unpickler_getsets       -
+Modules/pyexpat.c      -       xmlparse_getsetlist     -
+Modules/selectmodule.c -       devpoll_getsetlist      -
+Modules/selectmodule.c -       pyepoll_getsetlist      -
+Modules/selectmodule.c -       kqueue_queue_getsetlist -
+Modules/sha1module.c   -       SHA1_getseters  -
+Modules/sha256module.c -       SHA_getseters   -
+Modules/_sha3/sha3module.c     -       SHA3_getseters  -
+Modules/sha512module.c -       SHA_getseters   -
+Modules/socketmodule.c -       sock_getsetlist -
+Modules/_sqlite/connection.c   -       connection_getset       -
+Modules/_sre.c -       pattern_getset  -
+Modules/_sre.c -       match_getset    -
+Modules/_ssl.c -       ssl_getsetlist  -
+Modules/_ssl.c -       context_getsetlist      -
+Modules/_ssl.c -       memory_bio_getsetlist   -
+Modules/_ssl.c -       PySSLSession_getsetlist -
+Modules/_struct.c      -       s_getsetlist    -
+Modules/_tkinter.c     -       PyTclObject_getsetlist  -
+Modules/_xxsubinterpretersmodule.c     -       channelid_getsets       -
+Modules/xxsubtype.c    -       spamlist_getsets        -
+Objects/cellobject.c   -       cell_getsetlist -
+Objects/classobject.c  -       method_getset   -
+Objects/classobject.c  -       instancemethod_getset   -
+Objects/descrobject.c  -       method_getset   -
+Objects/descrobject.c  -       member_getset   -
+Objects/descrobject.c  -       getset_getset   -
+Objects/descrobject.c  -       wrapperdescr_getset     -
+Objects/descrobject.c  -       wrapper_getsets -
+Objects/descrobject.c  -       property_getsetlist     -
+Objects/dictobject.c   -       dictview_getset -
+Objects/exceptions.c   -       BaseException_getset    -
+Objects/exceptions.c   -       OSError_getset  -
+Objects/fileobject.c   -       stdprinter_getsetlist   -
+Objects/floatobject.c  -       float_getset    -
+Objects/frameobject.c  -       frame_getsetlist        -
+Objects/funcobject.c   -       func_getsetlist -
+Objects/funcobject.c   -       cm_getsetlist   -
+Objects/funcobject.c   -       sm_getsetlist   -
+Objects/genericaliasobject.c   -       ga_properties   -
+Objects/genobject.c    -       gen_getsetlist  -
+Objects/genobject.c    -       coro_getsetlist -
+Objects/genobject.c    -       async_gen_getsetlist    -
+Objects/longobject.c   -       long_getset     -
+Objects/memoryobject.c -       memory_getsetlist       -
+Objects/methodobject.c -       meth_getsets    -
+Objects/odictobject.c  -       odict_getset    -
+Objects/typeobject.c   -       type_getsets    -
+Objects/typeobject.c   -       subtype_getsets_full    -
+Objects/typeobject.c   -       subtype_getsets_dict_only       -
+Objects/typeobject.c   -       subtype_getsets_weakref_only    -
+Objects/typeobject.c   -       object_getsets  -
+Python/context.c       -       PyContextTokenType_getsetlist   -
+Python/Python-ast.c    -       ast_type_getsets        -
+Python/traceback.c     -       tb_getsetters   -
+
+#-----------------------
+# for heap types
+# []
+
+# PyType_Slot  []
+Modules/_abc.c -       _abc_data_type_spec_slots       -
+Modules/_blake2/blake2b_impl.c -       blake2b_type_slots      -
+Modules/_blake2/blake2s_impl.c -       blake2s_type_slots      -
+Modules/_bz2module.c   -       bz2_compressor_type_slots       -
+Modules/_bz2module.c   -       bz2_decompressor_type_slots     -
+Modules/_curses_panel.c        -       PyCursesPanel_Type_slots        -
+Modules/_dbmmodule.c   -       dbmtype_spec_slots      -
+Modules/_gdbmmodule.c  -       gdbmtype_spec_slots     -
+Modules/_hashopenssl.c -       EVPtype_slots   -
+Modules/_hashopenssl.c -       EVPXOFtype_slots        -
+Modules/_hashopenssl.c -       HMACtype_slots  -
+Modules/_json.c        -       PyScannerType_slots     -
+Modules/_json.c        -       PyEncoderType_slots     -
+Modules/_lsprof.c      -       _lsprof_profiler_type_spec_slots        -
+Modules/_lzmamodule.c  -       lzma_compressor_type_slots      -
+Modules/_lzmamodule.c  -       lzma_decompressor_type_slots    -
+Modules/md5module.c    -       md5_type_slots  -
+Modules/_operator.c    -       itemgetter_type_slots   -
+Modules/_operator.c    -       attrgetter_type_slots   -
+Modules/_operator.c    -       methodcaller_type_slots -
+Modules/overlapped.c   -       overlapped_type_slots   -
+Modules/posixmodule.c  -       DirEntryType_slots      -
+Modules/posixmodule.c  -       ScandirIteratorType_slots       -
+Modules/_randommodule.c        -       Random_Type_slots       -
+Modules/selectmodule.c -       devpoll_Type_slots      -
+Modules/selectmodule.c -       kqueue_event_Type_slots -
+Modules/selectmodule.c -       poll_Type_slots -
+Modules/selectmodule.c -       pyEpoll_Type_slots      -
+Modules/selectmodule.c -       kqueue_queue_Type_slots -
+Modules/sha1module.c   -       sha1_type_slots -
+Modules/sha256module.c -       sha256_types_slots      -
+Modules/_sha3/sha3module.c     -       sha3_224_slots  -
+Modules/_sha3/sha3module.c     -       sha3_256_slots  -
+Modules/_sha3/sha3module.c     -       sha3_384_slots  -
+Modules/_sha3/sha3module.c     -       sha3_512_slots  -
+Modules/_sha3/sha3module.c     -       SHAKE128slots   -
+Modules/_sha3/sha3module.c     -       SHAKE256slots   -
+Modules/_sha3/sha3module.c     -       type_slots_obj  -
+Modules/sha512module.c -       sha512_sha384_type_slots        -
+Modules/sha512module.c -       sha512_sha512_type_slots        -
+Modules/_sqlite/cache.c        -       pysqlite_NodeType_slots -
+Modules/_sqlite/cache.c        -       pysqlite_CacheType_slots        -
+Modules/_sqlite/connection.c   -       connection_slots        -
+Modules/_sqlite/cursor.c       -       cursor_slots    -
+Modules/_sqlite/prepare_protocol.c     -       type_slots      -
+Modules/_sqlite/row.c  -       row_slots       -
+Modules/_sqlite/statement.c    -       stmt_slots      -
+Modules/_ssl.c -       sslerror_type_slots     -
+Modules/_struct.c      -       unpackiter_type_slots   -
+Modules/_struct.c      -       PyStructType_slots      -
+Modules/_tkinter.c     -       PyTclObject_Type_slots  -
+Modules/_tkinter.c     -       Tktt_Type_slots -
+Modules/_tkinter.c     -       Tkapp_Type_slots        -
+Modules/unicodedata.c  -       ucd_type_slots  -
+Modules/_winapi.c      -       winapi_overlapped_type_slots    -
+Modules/xxlimited.c    -       Xxo_Type_slots  -
+Modules/xxlimited.c    -       Str_Type_slots  -
+Modules/xxlimited.c    -       Null_Type_slots -
+Modules/zlibmodule.c   -       Comptype_slots  -
+Modules/zlibmodule.c   -       Decomptype_slots        -
+Python/Python-ast.c    -       AST_type_slots  -
+
+# PyType_Spec  []
+Modules/_abc.c -       _abc_data_type_spec     -
+Modules/_blake2/blake2b_impl.c -       blake2b_type_spec       -
+Modules/_blake2/blake2s_impl.c -       blake2s_type_spec       -
+Modules/_bz2module.c   -       bz2_compressor_type_spec        -
+Modules/_bz2module.c   -       bz2_decompressor_type_spec      -
+Modules/_curses_panel.c        -       PyCursesPanel_Type_spec -
+Modules/_dbmmodule.c   -       dbmtype_spec    -
+Modules/_gdbmmodule.c  -       gdbmtype_spec   -
+Modules/_hashopenssl.c -       EVPtype_spec    -
+Modules/_hashopenssl.c -       EVPXOFtype_spec -
+Modules/_hashopenssl.c -       HMACtype_spec   -
+Modules/_json.c        -       PyScannerType_spec      -
+Modules/_json.c        -       PyEncoderType_spec      -
+Modules/_lsprof.c      -       _lsprof_profiler_type_spec      -
+Modules/_lzmamodule.c  -       lzma_compressor_type_spec       -
+Modules/_lzmamodule.c  -       lzma_decompressor_type_spec     -
+Modules/_operator.c    -       itemgetter_type_spec    -
+Modules/_operator.c    -       attrgetter_type_spec    -
+Modules/_operator.c    -       methodcaller_type_spec  -
+Modules/_randommodule.c        -       Random_Type_spec        -
+Modules/_sha3/sha3module.c     -       sha3_224_spec   -
+Modules/_sha3/sha3module.c     -       sha3_256_spec   -
+Modules/_sha3/sha3module.c     -       sha3_384_spec   -
+Modules/_sha3/sha3module.c     -       sha3_512_spec   -
+Modules/_sha3/sha3module.c     -       SHAKE128_spec   -
+Modules/_sha3/sha3module.c     -       SHAKE256_spec   -
+Modules/_sha3/sha3module.c     -       type_spec_obj   -
+Modules/_sqlite/cache.c        -       pysqlite_NodeType_spec  -
+Modules/_sqlite/cache.c        -       pysqlite_CacheType_spec -
+Modules/_sqlite/connection.c   -       connection_spec -
+Modules/_sqlite/cursor.c       -       cursor_spec     -
+Modules/_sqlite/prepare_protocol.c     -       type_spec       -
+Modules/_sqlite/row.c  -       row_spec        -
+Modules/_sqlite/statement.c    -       stmt_spec       -
+Modules/_ssl.c -       sslerror_type_spec      -
+Modules/_struct.c      -       unpackiter_type_spec    -
+Modules/_struct.c      -       PyStructType_spec       -
+Modules/_tkinter.c     -       PyTclObject_Type_spec   -
+Modules/_tkinter.c     -       Tktt_Type_spec  -
+Modules/_tkinter.c     -       Tkapp_Type_spec -
+Modules/_winapi.c      -       winapi_overlapped_type_spec     -
+Modules/_zoneinfo.c    -       DAYS_IN_MONTH   -
+Modules/_zoneinfo.c    -       DAYS_BEFORE_MONTH       -
+Modules/md5module.c    -       md5_type_spec   -
+Modules/overlapped.c   -       overlapped_type_spec    -
+Modules/posixmodule.c  -       DirEntryType_spec       -
+Modules/posixmodule.c  -       ScandirIteratorType_spec        -
+Modules/selectmodule.c -       devpoll_Type_spec       -
+Modules/selectmodule.c -       kqueue_event_Type_spec  -
+Modules/selectmodule.c -       poll_Type_spec  -
+Modules/selectmodule.c -       pyEpoll_Type_spec       -
+Modules/selectmodule.c -       kqueue_queue_Type_spec  -
+Modules/sha1module.c   -       sha1_type_spec  -
+Modules/sha256module.c -       sha224_type_spec        -
+Modules/sha256module.c -       sha256_type_spec        -
+Modules/sha512module.c -       sha512_sha384_type_spec -
+Modules/sha512module.c -       sha512_sha512_type_spec -
+Modules/unicodedata.c  -       ucd_type_spec   -
+Modules/xxlimited.c    -       Xxo_Type_spec   -
+Modules/xxlimited.c    -       Str_Type_spec   -
+Modules/xxlimited.c    -       Null_Type_spec  -
+Modules/zlibmodule.c   -       Comptype_spec   -
+Modules/zlibmodule.c   -       Decomptype_spec -
+Python/Python-ast.c    -       AST_type_spec   -
+
+#-----------------------
+# for structseq
+# []
+
+# PyStructSequence_Field[]  []
+Modules/_cursesmodule.c        -       ncurses_version_fields  -
+Modules/grpmodule.c    -       struct_group_type_fields        -
+Modules/_lsprof.c      -       profiler_entry_fields   -
+Modules/_lsprof.c      -       profiler_subentry_fields        -
+Modules/posixmodule.c  -       stat_result_fields      -
+Modules/posixmodule.c  -       statvfs_result_fields   -
+Modules/posixmodule.c  -       waitid_result_fields    -
+Modules/posixmodule.c  -       uname_result_fields     -
+Modules/posixmodule.c  -       sched_param_fields      -
+Modules/posixmodule.c  -       times_result_fields     -
+Modules/posixmodule.c  -       TerminalSize_fields     -
+Modules/pwdmodule.c    -       struct_pwd_type_fields  -
+Modules/resource.c     -       struct_rusage_fields    -
+Modules/signalmodule.c -       struct_siginfo_fields   -
+Modules/spwdmodule.c   -       struct_spwd_type_fields -
+Modules/_threadmodule.c        -       ExceptHookArgs_fields   -
+Modules/timemodule.c   -       struct_time_type_fields -
+Objects/floatobject.c  -       floatinfo_fields        -
+Objects/longobject.c   -       int_info_fields -
+Python/errors.c        -       UnraisableHookArgs_fields       -
+Python/sysmodule.c     -       asyncgen_hooks_fields   -
+Python/sysmodule.c     -       hash_info_fields        -
+Python/sysmodule.c     -       windows_version_fields  -
+Python/sysmodule.c     -       flags_fields    -
+Python/sysmodule.c     -       version_info_fields     -
+Python/thread.c        -       threadinfo_fields       -
+
+# PyStructSequence_Desc  []
+Modules/_cursesmodule.c        -       ncurses_version_desc    -
+Modules/grpmodule.c    -       struct_group_type_desc  -
+Modules/_lsprof.c      -       profiler_entry_desc     -
+Modules/_lsprof.c      -       profiler_subentry_desc  -
+Modules/posixmodule.c  -       stat_result_desc        -
+Modules/posixmodule.c  -       statvfs_result_desc     -
+Modules/posixmodule.c  -       waitid_result_desc      -
+Modules/posixmodule.c  -       uname_result_desc       -
+Modules/posixmodule.c  -       sched_param_desc        -
+Modules/posixmodule.c  -       times_result_desc       -
+Modules/posixmodule.c  -       TerminalSize_desc       -
+Modules/pwdmodule.c    -       struct_pwd_type_desc    -
+Modules/resource.c     -       struct_rusage_desc      -
+Modules/signalmodule.c -       struct_siginfo_desc     -
+Modules/spwdmodule.c   -       struct_spwd_type_desc   -
+Modules/_threadmodule.c        -       ExceptHookArgs_desc     -
+Modules/timemodule.c   -       struct_time_type_desc   -
+Objects/floatobject.c  -       floatinfo_desc  -
+Objects/longobject.c   -       int_info_desc   -
+Python/errors.c        -       UnraisableHookArgs_desc -
+Python/sysmodule.c     -       asyncgen_hooks_desc     -
+Python/sysmodule.c     -       hash_info_desc  -
+Python/sysmodule.c     -       windows_version_desc    -
+Python/sysmodule.c     -       flags_desc      -
+Python/sysmodule.c     -       version_info_desc       -
+Python/thread.c        -       threadinfo_desc -
+
+#-----------------------
+# _PyArg_Parser
+# []
+
+Modules/clinic/md5module.c.h   MD5Type_copy    _parser -
+Modules/clinic/md5module.c.h   _md5_md5        _parser -
+Modules/clinic/_dbmmodule.c.h  _dbm_dbm_keys   _parser -
+Modules/clinic/_dbmmodule.c.h  _dbm_dbm_get    _parser -
+Modules/clinic/_dbmmodule.c.h  _dbm_dbm_setdefault     _parser -
+Modules/clinic/posixmodule.c.h os_stat _parser -
+Modules/clinic/posixmodule.c.h os_lstat        _parser -
+Modules/clinic/posixmodule.c.h os_access       _parser -
+Modules/clinic/posixmodule.c.h os_chdir        _parser -
+Modules/clinic/posixmodule.c.h os_chmod        _parser -
+Modules/clinic/posixmodule.c.h os_listdir      _parser -
+Modules/clinic/posixmodule.c.h os_mkdir        _parser -
+Modules/clinic/posixmodule.c.h os_rename       _parser -
+Modules/clinic/posixmodule.c.h os_replace      _parser -
+Modules/clinic/posixmodule.c.h os_rmdir        _parser -
+Modules/clinic/posixmodule.c.h os_unlink       _parser -
+Modules/clinic/posixmodule.c.h os_remove       _parser -
+Modules/clinic/posixmodule.c.h os_utime        _parser -
+Modules/clinic/posixmodule.c.h os__exit        _parser -
+Modules/clinic/posixmodule.c.h os_open _parser -
+Modules/clinic/posixmodule.c.h os_close        _parser -
+Modules/clinic/posixmodule.c.h os_dup2 _parser -
+Modules/clinic/posixmodule.c.h os_fstat        _parser -
+Modules/clinic/posixmodule.c.h os_device_encoding      _parser -
+Modules/clinic/posixmodule.c.h os_DirEntry_is_symlink  _parser -
+Modules/clinic/posixmodule.c.h os_DirEntry_stat        _parser -
+Modules/clinic/posixmodule.c.h os_DirEntry_is_dir      _parser -
+Modules/clinic/posixmodule.c.h os_DirEntry_is_file     _parser -
+Modules/clinic/posixmodule.c.h os_scandir      _parser -
+Modules/clinic/posixmodule.c.h os_fspath       _parser -
+Modules/clinic/cmathmodule.c.h cmath_isclose   _parser -
+Modules/clinic/sha256module.c.h        SHA256Type_copy _parser -
+Modules/clinic/sha256module.c.h        _sha256_sha256  _parser -
+Modules/clinic/sha256module.c.h        _sha256_sha224  _parser -
+Modules/clinic/_hashopenssl.c.h        EVP_new _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_md5    _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_sha1   _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_sha224 _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_sha256 _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_sha384 _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_openssl_sha512 _parser -
+Modules/clinic/_hashopenssl.c.h        pbkdf2_hmac     _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_hmac_singleshot        _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_hmac_new       _parser -
+Modules/clinic/_hashopenssl.c.h        _hashlib_HMAC_update    _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLSocket_get_channel_binding     _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLContext_load_cert_chain        _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLContext_load_verify_locations  _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLContext__wrap_socket   _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLContext__wrap_bio      _parser -
+Modules/clinic/_ssl.c.h        _ssl__SSLContext_get_ca_certs   _parser -
+Modules/clinic/_ssl.c.h        _ssl_txt2obj    _parser -
+Modules/clinic/_queuemodule.c.h        _queue_SimpleQueue_put  _parser -
+Modules/clinic/_queuemodule.c.h        _queue_SimpleQueue_put_nowait   _parser -
+Modules/clinic/_queuemodule.c.h        _queue_SimpleQueue_get  _parser -
+Modules/clinic/_lsprof.c.h     _lsprof_Profiler_getstats       _parser -
+Modules/clinic/_datetimemodule.c.h     iso_calendar_date_new   _parser -
+Modules/clinic/_datetimemodule.c.h     datetime_datetime_now   _parser -
+Modules/clinic/_opcode.c.h     _opcode_stack_effect    _parser -
+Modules/clinic/_lzmamodule.c.h _lzma_LZMADecompressor_decompress       _parser -
+Modules/clinic/_lzmamodule.c.h _lzma_LZMADecompressor___init__ _parser -
+Modules/clinic/pyexpat.c.h     pyexpat_ParserCreate    _parser -
+Modules/clinic/mathmodule.c.h  math_isclose    _parser -
+Modules/clinic/mathmodule.c.h  math_prod       _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_bottom      _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_hide        _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_show        _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_top _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_move        _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_replace     _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_set_userptr _parser -
+Modules/clinic/_curses_panel.c.h       _curses_panel_panel_userptr     _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_find       _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_findtext   _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_findall    _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_iterfind   _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_get        _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_Element_iter       _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_TreeBuilder___init__       _parser -
+Modules/clinic/_elementtree.c.h        _elementtree_XMLParser___init__ _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Future___init__        _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Future_add_done_callback       _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Future_cancel  _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Task___init__  _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Task_cancel    _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Task_get_stack _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio_Task_print_stack       _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio__register_task _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio__unregister_task       _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio__enter_task    _parser -
+Modules/clinic/_asynciomodule.c.h      _asyncio__leave_task    _parser -
+Modules/clinic/gcmodule.c.h    gc_collect      _parser -
+Modules/clinic/gcmodule.c.h    gc_get_objects  _parser -
+Modules/clinic/grpmodule.c.h   grp_getgrgid    _parser -
+Modules/clinic/grpmodule.c.h   grp_getgrnam    _parser -
+Modules/clinic/_pickle.c.h     _pickle_Pickler___init__        _parser -
+Modules/clinic/_pickle.c.h     _pickle_Unpickler___init__      _parser -
+Modules/clinic/_pickle.c.h     _pickle_dump    _parser -
+Modules/clinic/_pickle.c.h     _pickle_dumps   _parser -
+Modules/clinic/_pickle.c.h     _pickle_load    _parser -
+Modules/clinic/_pickle.c.h     _pickle_loads   _parser -
+Modules/clinic/_struct.c.h     Struct___init__ _parser -
+Modules/clinic/_struct.c.h     Struct_unpack_from      _parser -
+Modules/clinic/_struct.c.h     unpack_from     _parser -
+Modules/clinic/_testmultiphase.c.h     _testmultiphase_StateAccessType_get_defining_module     _parser -
+Modules/clinic/_testmultiphase.c.h     _testmultiphase_StateAccessType_increment_count_clinic  _parser -
+Modules/clinic/_testmultiphase.c.h     _testmultiphase_StateAccessType_get_count       _parser -
+Modules/clinic/_gdbmmodule.c.h _gdbm_gdbm_keys _parser -
+Modules/clinic/_gdbmmodule.c.h _gdbm_gdbm_firstkey     _parser -
+Modules/clinic/_gdbmmodule.c.h _gdbm_gdbm_nextkey      _parser -
+Modules/clinic/_gdbmmodule.c.h _gdbm_gdbm_reorganize   _parser -
+Modules/clinic/_gdbmmodule.c.h _gdbm_gdbm_sync _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_match  _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_fullmatch      _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_search _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_findall        _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_finditer       _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_scanner        _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_split  _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_sub    _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Pattern_subn   _parser -
+Modules/clinic/_sre.c.h        _sre_compile    _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Match_expand   _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Match_groups   _parser -
+Modules/clinic/_sre.c.h        _sre_SRE_Match_groupdict        _parser -
+Modules/clinic/overlapped.c.h  _overlapped_Overlapped  _parser -
+Modules/clinic/_bisectmodule.c.h       _bisect_bisect_right    _parser -
+Modules/clinic/_bisectmodule.c.h       _bisect_insort_right    _parser -
+Modules/clinic/_bisectmodule.c.h       _bisect_bisect_left     _parser -
+Modules/clinic/_bisectmodule.c.h       _bisect_insort_left     _parser -
+Modules/clinic/zlibmodule.c.h  zlib_compress   _parser -
+Modules/clinic/zlibmodule.c.h  zlib_decompress _parser -
+Modules/clinic/zlibmodule.c.h  zlib_compressobj        _parser -
+Modules/clinic/zlibmodule.c.h  zlib_decompressobj      _parser -
+Modules/clinic/zlibmodule.c.h  zlib_Compress_compress  _parser -
+Modules/clinic/zlibmodule.c.h  zlib_Decompress_decompress      _parser -
+Modules/clinic/zlibmodule.c.h  zlib_Compress_flush     _parser -
+Modules/clinic/zlibmodule.c.h  zlib_Decompress_flush   _parser -
+Modules/clinic/sha512module.c.h        SHA512Type_copy _parser -
+Modules/clinic/sha512module.c.h        _sha512_sha512  _parser -
+Modules/clinic/sha512module.c.h        _sha512_sha384  _parser -
+Modules/clinic/_bz2module.c.h  _bz2_BZ2Decompressor_decompress _parser -
+Modules/clinic/sha1module.c.h  SHA1Type_copy   _parser -
+Modules/clinic/sha1module.c.h  _sha1_sha1      _parser -
+Modules/clinic/_winapi.c.h     _winapi_ConnectNamedPipe        _parser -
+Modules/clinic/_winapi.c.h     _winapi_ReadFile        _parser -
+Modules/clinic/_winapi.c.h     _winapi_WriteFile       _parser -
+Modules/clinic/_winapi.c.h     _winapi_GetFileType     _parser -
+Modules/clinic/_codecsmodule.c.h       _codecs_encode  _parser -
+Modules/clinic/_codecsmodule.c.h       _codecs_decode  _parser -
+Modules/clinic/_cursesmodule.c.h       _curses_setupterm       _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_groupby       _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_combinations  _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_combinations_with_replacement _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_permutations  _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_accumulate    _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_compress      _parser -
+Modules/clinic/itertoolsmodule.c.h     itertools_count _parser -
+Modules/clinic/binascii.c.h    binascii_b2a_uu _parser -
+Modules/clinic/binascii.c.h    binascii_b2a_base64     _parser -
+Modules/clinic/binascii.c.h    binascii_b2a_hex        _parser -
+Modules/clinic/binascii.c.h    binascii_hexlify        _parser -
+Modules/clinic/binascii.c.h    binascii_a2b_qp _parser -
+Modules/clinic/binascii.c.h    binascii_b2a_qp _parser -
+Objects/clinic/enumobject.c.h  enum_new        _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray___init__      _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_translate     _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_split _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_rsplit        _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_decode        _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_splitlines    _parser -
+Objects/clinic/bytearrayobject.c.h     bytearray_hex   _parser -
+Objects/clinic/descrobject.c.h mappingproxy_new        _parser -
+Objects/clinic/descrobject.c.h property_init   _parser -
+Objects/clinic/longobject.c.h  long_new        _parser -
+Objects/clinic/longobject.c.h  int_to_bytes    _parser -
+Objects/clinic/longobject.c.h  int_from_bytes  _parser -
+Objects/clinic/moduleobject.c.h        module___init__ _parser -
+Objects/clinic/structseq.c.h   structseq_new   _parser -
+Objects/clinic/memoryobject.c.h        memoryview      _parser -
+Objects/clinic/memoryobject.c.h        memoryview_cast _parser -
+Objects/clinic/memoryobject.c.h        memoryview_tobytes      _parser -
+Objects/clinic/memoryobject.c.h        memoryview_hex  _parser -
+Objects/clinic/listobject.c.h  list_sort       _parser -
+Objects/clinic/odictobject.c.h OrderedDict_fromkeys    _parser -
+Objects/clinic/odictobject.c.h OrderedDict_setdefault  _parser -
+Objects/clinic/odictobject.c.h OrderedDict_pop _parser -
+Objects/clinic/odictobject.c.h OrderedDict_popitem     _parser -
+Objects/clinic/odictobject.c.h OrderedDict_move_to_end _parser -
+Objects/clinic/complexobject.c.h       complex_new     _parser -
+Objects/clinic/unicodeobject.c.h       unicode_encode  _parser -
+Objects/clinic/unicodeobject.c.h       unicode_expandtabs      _parser -
+Objects/clinic/unicodeobject.c.h       unicode_split   _parser -
+Objects/clinic/unicodeobject.c.h       unicode_rsplit  _parser -
+Objects/clinic/unicodeobject.c.h       unicode_splitlines      _parser -
+Objects/clinic/unicodeobject.c.h       unicode_new     _parser -
+Objects/clinic/bytesobject.c.h bytes_split     _parser -
+Objects/clinic/bytesobject.c.h bytes_rsplit    _parser -
+Objects/clinic/bytesobject.c.h bytes_translate _parser -
+Objects/clinic/bytesobject.c.h bytes_decode    _parser -
+Objects/clinic/bytesobject.c.h bytes_splitlines        _parser -
+Objects/clinic/bytesobject.c.h bytes_hex       _parser -
+Objects/clinic/bytesobject.c.h bytes_new       _parser -
+Objects/clinic/funcobject.c.h  func_new        _parser -
+Objects/clinic/codeobject.c.h  code_replace    _parser -
+Python/clinic/traceback.c.h    tb_new  _parser -
+Python/clinic/bltinmodule.c.h  builtin_compile _parser -
+Python/clinic/bltinmodule.c.h  builtin_pow     _parser -
+Python/clinic/bltinmodule.c.h  builtin_round   _parser -
+Python/clinic/bltinmodule.c.h  builtin_sum     _parser -
+Python/clinic/import.c.h       _imp_source_hash        _parser -
+Python/clinic/sysmodule.c.h    sys_addaudithook        _parser -
+Python/clinic/sysmodule.c.h    sys_set_coroutine_origin_tracking_depth _parser -
+Python/clinic/_warnings.c.h    warnings_warn   _parser -
+
+#-----------------------
+# other vars that are actually constant
+# []
+
+Modules/_csv.c -       quote_styles    -
+Modules/_ctypes/cfield.c       -       ffi_type_void   -
+Modules/_ctypes/cfield.c       -       ffi_type_uint8  -
+Modules/_ctypes/cfield.c       -       ffi_type_sint8  -
+Modules/_ctypes/cfield.c       -       ffi_type_uint16 -
+Modules/_ctypes/cfield.c       -       ffi_type_sint16 -
+Modules/_ctypes/cfield.c       -       ffi_type_uint32 -
+Modules/_ctypes/cfield.c       -       ffi_type_sint32 -
+Modules/_ctypes/cfield.c       -       ffi_type_uint64 -
+Modules/_ctypes/cfield.c       -       ffi_type_sint64 -
+Modules/_ctypes/cfield.c       -       ffi_type_float  -
+Modules/_ctypes/cfield.c       -       ffi_type_double -
+Modules/_ctypes/cfield.c       -       ffi_type_longdouble     -
+Modules/_ctypes/cfield.c       -       ffi_type_pointer        -
+Modules/_datetimemodule.c      -       epoch   -
+Modules/_datetimemodule.c      -       max_fold_seconds        -
+Modules/_datetimemodule.c      datetime_isoformat      specs   -
+Modules/_datetimemodule.c      time_isoformat  specs   -
+Modules/_decimal/_decimal.c    -       cond_map        -
+Modules/_decimal/_decimal.c    -       dec_signal_string       -
+Modules/_decimal/_decimal.c    -       dflt_ctx        -
+Modules/_decimal/_decimal.c    -       int_constants   -
+Modules/_decimal/_decimal.c    -       invalid_rounding_err    -
+Modules/_decimal/_decimal.c    -       invalid_signals_err     -
+Modules/_decimal/_decimal.c    -       signal_map      -
+Modules/_decimal/_decimal.c    -       ssize_constants -
+Modules/_elementtree.c -       ExpatMemoryHandler      -
+Modules/_io/textio.c   -       encodefuncs     -
+Modules/_localemodule.c        -       langinfo_constants      -
+Modules/_sre.c pattern_repr    flag_names      -
+Modules/_struct.c      -       bigendian_table -
+Modules/_struct.c      -       lilendian_table -
+Modules/_tkinter.c     -       state_key       -
+Modules/_xxsubinterpretersmodule.c     -       _channelid_end_send     -
+Modules/_xxsubinterpretersmodule.c     -       _channelid_end_recv     -
+Modules/arraymodule.c  -       descriptors     -
+Modules/arraymodule.c  -       emptybuf        -
+Modules/cjkcodecs/cjkcodecs.h  -       __methods       -
+Modules/cmathmodule.c  -       acos_special_values     -
+Modules/cmathmodule.c  -       acosh_special_values    -
+Modules/cmathmodule.c  -       asinh_special_values    -
+Modules/cmathmodule.c  -       atanh_special_values    -
+Modules/cmathmodule.c  -       cosh_special_values     -
+Modules/cmathmodule.c  -       exp_special_values      -
+Modules/cmathmodule.c  -       log_special_values      -
+Modules/cmathmodule.c  -       sinh_special_values     -
+Modules/cmathmodule.c  -       sqrt_special_values     -
+Modules/cmathmodule.c  -       tanh_special_values     -
+Modules/cmathmodule.c  -       rect_special_values     -
+Modules/config.c       -       _PyImport_Inittab       -
+Modules/faulthandler.c -       faulthandler_handlers   -
+Modules/getnameinfo.c  -       gni_afdl        -
+Modules/ossaudiodev.c  -       control_labels  -
+Modules/ossaudiodev.c  -       control_names   -
+Modules/nismodule.c    -       aliases -
+Modules/nismodule.c    -       TIMEOUT -
+Modules/posixmodule.c  -       posix_constants_pathconf        -
+Modules/posixmodule.c  -       posix_constants_confstr -
+Modules/posixmodule.c  -       posix_constants_sysconf -
+Modules/pyexpat.c      -       ExpatMemoryHandler      -
+Modules/pyexpat.c      -       handler_info    -
+Modules/termios.c      -       termios_constants       -
+Modules/timemodule.c   init_timezone   YEAR    -
+Objects/bytearrayobject.c      -       _PyByteArray_empty_string       -
+Objects/complexobject.c        -       c_1     -
+Objects/genobject.c    -       NON_INIT_CORO_MSG       -
+Objects/genobject.c    -       ASYNC_GEN_IGNORED_EXIT_MSG      -
+Objects/longobject.c   -       _PyLong_DigitValue      -
+Objects/object.c       -       _Py_abstract_hack       -
+Objects/object.c       -       _Py_SwappedOp   -
+Objects/obmalloc.c     -       _PyMem  -
+Objects/obmalloc.c     -       _PyMem_Debug    -
+Objects/obmalloc.c     -       _PyMem_Raw      -
+Objects/obmalloc.c     -       _PyObject       -
+Objects/obmalloc.c     -       usedpools       -
+Objects/unicodeobject.c        unicode_decode_call_errorhandler_wchar  argparse        -
+Objects/unicodeobject.c        unicode_decode_call_errorhandler_writer argparse        -
+Objects/unicodeobject.c        unicode_encode_call_errorhandler        argparse        -
+Objects/unicodeobject.c        unicode_translate_call_errorhandler     argparse        -
+Objects/unicodeobject.c        -       stripfuncnames  -
+Objects/unicodeobject.c        -       utf7_category   -
+Parser/parser.c        -       reserved_keywords       -
+Parser/tokenizer.c     -       type_comment_prefix     -
+Python/opcode_targets.h        -       opcode_targets  -
+
+
+##################################
+# temporary whitelist - globals to fix
+
+# These are all variables that we will be making non-global.
+
+#-----------------------
+# runtime static types
+# []
+
+Objects/floatobject.c  -       FloatInfoType   -
+Objects/floatobject.c  -       PyFloat_Type    -
+Objects/listobject.c   -       PyList_Type     -
+Objects/listobject.c   -       PyListIter_Type -
+Objects/listobject.c   -       PyListRevIter_Type      -
+Objects/setobject.c    -       _PySetDummy_Type        -
+Objects/setobject.c    -       PySetIter_Type  -
+Objects/setobject.c    -       PySet_Type      -
+Objects/setobject.c    -       PyFrozenSet_Type        -
+Objects/genobject.c    -       PyGen_Type      -
+Objects/genobject.c    -       PyCoro_Type     -
+Objects/genobject.c    -       _PyCoroWrapper_Type     -
+Objects/genobject.c    -       PyAsyncGen_Type -
+Objects/genobject.c    -       _PyAsyncGenASend_Type   -
+Objects/genobject.c    -       _PyAsyncGenWrappedValue_Type    -
+Objects/genobject.c    -       _PyAsyncGenAThrow_Type  -
+Objects/classobject.c  -       PyMethod_Type   -
+Objects/classobject.c  -       PyInstanceMethod_Type   -
+Objects/complexobject.c        -       PyComplex_Type  -
+Objects/sliceobject.c  -       PyEllipsis_Type -
+Objects/sliceobject.c  -       PySlice_Type    -
+Objects/bytesobject.c  -       PyBytes_Type    -
+Objects/bytesobject.c  -       PyBytesIter_Type        -
+Objects/descrobject.c  -       PyMethodDescr_Type      -
+Objects/descrobject.c  -       PyClassMethodDescr_Type -
+Objects/descrobject.c  -       PyMemberDescr_Type      -
+Objects/descrobject.c  -       PyGetSetDescr_Type      -
+Objects/descrobject.c  -       PyWrapperDescr_Type     -
+Objects/descrobject.c  -       _PyMethodWrapper_Type   -
+Objects/descrobject.c  -       PyDictProxy_Type        -
+Objects/descrobject.c  -       PyProperty_Type -
+Objects/unicodeobject.c        -       EncodingMapType -
+Objects/unicodeobject.c        -       PyUnicode_Type  -
+Objects/unicodeobject.c        -       PyUnicodeIter_Type      -
+Objects/unionobject.c  -       _Py_UnionType   -
+Objects/moduleobject.c -       PyModuleDef_Type        -
+Objects/moduleobject.c -       PyModule_Type   -
+Objects/capsule.c      -       PyCapsule_Type  -
+Objects/methodobject.c -       PyCFunction_Type        -
+Objects/methodobject.c -       PyCMethod_Type  -
+Objects/bytearrayobject.c      -       PyByteArray_Type        -
+Objects/bytearrayobject.c      -       PyByteArrayIter_Type    -
+Objects/interpreteridobject.c  -       _PyInterpreterID_Type   -
+Objects/enumobject.c   -       PyEnum_Type     -
+Objects/enumobject.c   -       PyReversed_Type -
+Objects/picklebufobject.c      -       PyPickleBuffer_Type     -
+Objects/object.c       -       _PyNone_Type    -
+Objects/object.c       -       _PyNotImplemented_Type  -
+Objects/fileobject.c   -       PyStdPrinter_Type       -
+Objects/weakrefobject.c        -       _PyWeakref_RefType      -
+Objects/weakrefobject.c        -       _PyWeakref_ProxyType    -
+Objects/weakrefobject.c        -       _PyWeakref_CallableProxyType    -
+Objects/genericaliasobject.c   -       Py_GenericAliasType     -
+Objects/rangeobject.c  -       PyRange_Type    -
+Objects/rangeobject.c  -       PyRangeIter_Type        -
+Objects/rangeobject.c  -       PyLongRangeIter_Type    -
+Objects/namespaceobject.c      -       _PyNamespace_Type       -
+Objects/iterobject.c   -       PySeqIter_Type  -
+Objects/iterobject.c   -       PyCallIter_Type -
+Objects/boolobject.c   -       PyBool_Type     -
+Objects/frameobject.c  -       PyFrame_Type    -
+Objects/longobject.c   -       Int_InfoType    -
+Objects/longobject.c   -       PyLong_Type     -
+Objects/funcobject.c   -       PyFunction_Type -
+Objects/funcobject.c   -       PyClassMethod_Type      -
+Objects/funcobject.c   -       PyStaticMethod_Type     -
+Objects/typeobject.c   -       PyType_Type     -
+Objects/typeobject.c   -       PyBaseObject_Type       -
+Objects/typeobject.c   -       PySuper_Type    -
+Objects/cellobject.c   -       PyCell_Type     -
+Objects/odictobject.c  -       PyODict_Type    -
+Objects/odictobject.c  -       PyODictIter_Type        -
+Objects/odictobject.c  -       PyODictKeys_Type        -
+Objects/odictobject.c  -       PyODictItems_Type       -
+Objects/odictobject.c  -       PyODictValues_Type      -
+Objects/dictobject.c   -       PyDict_Type     -
+Objects/dictobject.c   -       PyDictIterKey_Type      -
+Objects/dictobject.c   -       PyDictIterValue_Type    -
+Objects/dictobject.c   -       PyDictIterItem_Type     -
+Objects/dictobject.c   -       PyDictRevIterKey_Type   -
+Objects/dictobject.c   -       PyDictRevIterItem_Type  -
+Objects/dictobject.c   -       PyDictRevIterValue_Type -
+Objects/dictobject.c   -       PyDictKeys_Type -
+Objects/dictobject.c   -       PyDictItems_Type        -
+Objects/dictobject.c   -       PyDictValues_Type       -
+Objects/memoryobject.c -       PyMemoryIter_Type       -
+Objects/memoryobject.c -       _PyManagedBuffer_Type   -
+Objects/memoryobject.c -       PyMemoryView_Type       -
+Objects/tupleobject.c  -       PyTuple_Type    -
+Objects/tupleobject.c  -       PyTupleIter_Type        -
+Objects/codeobject.c   -       PyCode_Type     -
+
+#-----------------------
+# builtin exception types
+# []
+
+Objects/exceptions.c   -       _PyExc_BaseException    -
+Objects/exceptions.c   -       _PyExc_UnicodeEncodeError       -
+Objects/exceptions.c   -       _PyExc_UnicodeDecodeError       -
+Objects/exceptions.c   -       _PyExc_UnicodeTranslateError    -
+Objects/exceptions.c   -       _PyExc_MemoryError      -
+Objects/exceptions.c   -       _PyExc_Exception        -
+Objects/exceptions.c   -       _PyExc_TypeError        -
+Objects/exceptions.c   -       _PyExc_StopAsyncIteration       -
+Objects/exceptions.c   -       _PyExc_StopIteration    -
+Objects/exceptions.c   -       _PyExc_GeneratorExit    -
+Objects/exceptions.c   -       _PyExc_SystemExit       -
+Objects/exceptions.c   -       _PyExc_KeyboardInterrupt        -
+Objects/exceptions.c   -       _PyExc_ImportError      -
+Objects/exceptions.c   -       _PyExc_ModuleNotFoundError      -
+Objects/exceptions.c   -       _PyExc_OSError  -
+Objects/exceptions.c   -       _PyExc_BlockingIOError  -
+Objects/exceptions.c   -       _PyExc_ConnectionError  -
+Objects/exceptions.c   -       _PyExc_ChildProcessError        -
+Objects/exceptions.c   -       _PyExc_BrokenPipeError  -
+Objects/exceptions.c   -       _PyExc_ConnectionAbortedError   -
+Objects/exceptions.c   -       _PyExc_ConnectionRefusedError   -
+Objects/exceptions.c   -       _PyExc_ConnectionResetError     -
+Objects/exceptions.c   -       _PyExc_FileExistsError  -
+Objects/exceptions.c   -       _PyExc_FileNotFoundError        -
+Objects/exceptions.c   -       _PyExc_IsADirectoryError        -
+Objects/exceptions.c   -       _PyExc_NotADirectoryError       -
+Objects/exceptions.c   -       _PyExc_InterruptedError -
+Objects/exceptions.c   -       _PyExc_PermissionError  -
+Objects/exceptions.c   -       _PyExc_ProcessLookupError       -
+Objects/exceptions.c   -       _PyExc_TimeoutError     -
+Objects/exceptions.c   -       _PyExc_EOFError -
+Objects/exceptions.c   -       _PyExc_RuntimeError     -
+Objects/exceptions.c   -       _PyExc_RecursionError   -
+Objects/exceptions.c   -       _PyExc_NotImplementedError      -
+Objects/exceptions.c   -       _PyExc_NameError        -
+Objects/exceptions.c   -       _PyExc_UnboundLocalError        -
+Objects/exceptions.c   -       _PyExc_AttributeError   -
+Objects/exceptions.c   -       _PyExc_SyntaxError      -
+Objects/exceptions.c   -       _PyExc_IndentationError -
+Objects/exceptions.c   -       _PyExc_TabError -
+Objects/exceptions.c   -       _PyExc_LookupError      -
+Objects/exceptions.c   -       _PyExc_IndexError       -
+Objects/exceptions.c   -       _PyExc_KeyError -
+Objects/exceptions.c   -       _PyExc_ValueError       -
+Objects/exceptions.c   -       _PyExc_UnicodeError     -
+Objects/exceptions.c   -       _PyExc_AssertionError   -
+Objects/exceptions.c   -       _PyExc_ArithmeticError  -
+Objects/exceptions.c   -       _PyExc_FloatingPointError       -
+Objects/exceptions.c   -       _PyExc_OverflowError    -
+Objects/exceptions.c   -       _PyExc_ZeroDivisionError        -
+Objects/exceptions.c   -       _PyExc_SystemError      -
+Objects/exceptions.c   -       _PyExc_ReferenceError   -
+Objects/exceptions.c   -       _PyExc_BufferError      -
+Objects/exceptions.c   -       _PyExc_Warning  -
+Objects/exceptions.c   -       _PyExc_UserWarning      -
+Objects/exceptions.c   -       _PyExc_DeprecationWarning       -
+Objects/exceptions.c   -       _PyExc_PendingDeprecationWarning        -
+Objects/exceptions.c   -       _PyExc_SyntaxWarning    -
+Objects/exceptions.c   -       _PyExc_RuntimeWarning   -
+Objects/exceptions.c   -       _PyExc_FutureWarning    -
+Objects/exceptions.c   -       _PyExc_ImportWarning    -
+Objects/exceptions.c   -       _PyExc_UnicodeWarning   -
+Objects/exceptions.c   -       _PyExc_BytesWarning     -
+Objects/exceptions.c   -       _PyExc_ResourceWarning  -
+Objects/exceptions.c   -       PyExc_EnvironmentError  -
+Objects/exceptions.c   -       PyExc_IOError   -
+Objects/exceptions.c   -       PyExc_BaseException     -
+Objects/exceptions.c   -       PyExc_Exception -
+Objects/exceptions.c   -       PyExc_TypeError -
+Objects/exceptions.c   -       PyExc_StopAsyncIteration        -
+Objects/exceptions.c   -       PyExc_StopIteration     -
+Objects/exceptions.c   -       PyExc_GeneratorExit     -
+Objects/exceptions.c   -       PyExc_SystemExit        -
+Objects/exceptions.c   -       PyExc_KeyboardInterrupt -
+Objects/exceptions.c   -       PyExc_ImportError       -
+Objects/exceptions.c   -       PyExc_ModuleNotFoundError       -
+Objects/exceptions.c   -       PyExc_OSError   -
+Objects/exceptions.c   -       PyExc_BlockingIOError   -
+Objects/exceptions.c   -       PyExc_ConnectionError   -
+Objects/exceptions.c   -       PyExc_ChildProcessError -
+Objects/exceptions.c   -       PyExc_BrokenPipeError   -
+Objects/exceptions.c   -       PyExc_ConnectionAbortedError    -
+Objects/exceptions.c   -       PyExc_ConnectionRefusedError    -
+Objects/exceptions.c   -       PyExc_ConnectionResetError      -
+Objects/exceptions.c   -       PyExc_FileExistsError   -
+Objects/exceptions.c   -       PyExc_FileNotFoundError -
+Objects/exceptions.c   -       PyExc_IsADirectoryError -
+Objects/exceptions.c   -       PyExc_NotADirectoryError        -
+Objects/exceptions.c   -       PyExc_InterruptedError  -
+Objects/exceptions.c   -       PyExc_PermissionError   -
+Objects/exceptions.c   -       PyExc_ProcessLookupError        -
+Objects/exceptions.c   -       PyExc_TimeoutError      -
+Objects/exceptions.c   -       PyExc_EOFError  -
+Objects/exceptions.c   -       PyExc_RuntimeError      -
+Objects/exceptions.c   -       PyExc_RecursionError    -
+Objects/exceptions.c   -       PyExc_NotImplementedError       -
+Objects/exceptions.c   -       PyExc_NameError -
+Objects/exceptions.c   -       PyExc_UnboundLocalError -
+Objects/exceptions.c   -       PyExc_AttributeError    -
+Objects/exceptions.c   -       PyExc_SyntaxError       -
+Objects/exceptions.c   -       PyExc_IndentationError  -
+Objects/exceptions.c   -       PyExc_TabError  -
+Objects/exceptions.c   -       PyExc_LookupError       -
+Objects/exceptions.c   -       PyExc_IndexError        -
+Objects/exceptions.c   -       PyExc_KeyError  -
+Objects/exceptions.c   -       PyExc_ValueError        -
+Objects/exceptions.c   -       PyExc_UnicodeError      -
+Objects/exceptions.c   -       PyExc_UnicodeEncodeError        -
+Objects/exceptions.c   -       PyExc_UnicodeDecodeError        -
+Objects/exceptions.c   -       PyExc_UnicodeTranslateError     -
+Objects/exceptions.c   -       PyExc_AssertionError    -
+Objects/exceptions.c   -       PyExc_ArithmeticError   -
+Objects/exceptions.c   -       PyExc_FloatingPointError        -
+Objects/exceptions.c   -       PyExc_OverflowError     -
+Objects/exceptions.c   -       PyExc_ZeroDivisionError -
+Objects/exceptions.c   -       PyExc_SystemError       -
+Objects/exceptions.c   -       PyExc_ReferenceError    -
+Objects/exceptions.c   -       PyExc_MemoryError       -
+Objects/exceptions.c   -       PyExc_BufferError       -
+Objects/exceptions.c   -       PyExc_Warning   -
+Objects/exceptions.c   -       PyExc_UserWarning       -
+Objects/exceptions.c   -       PyExc_DeprecationWarning        -
+Objects/exceptions.c   -       PyExc_PendingDeprecationWarning -
+Objects/exceptions.c   -       PyExc_SyntaxWarning     -
+Objects/exceptions.c   -       PyExc_RuntimeWarning    -
+Objects/exceptions.c   -       PyExc_FutureWarning     -
+Objects/exceptions.c   -       PyExc_ImportWarning     -
+Objects/exceptions.c   -       PyExc_UnicodeWarning    -
+Objects/exceptions.c   -       PyExc_BytesWarning      -
+Objects/exceptions.c   -       PyExc_ResourceWarning   -
+
+#-----------------------
+# singletons
+# []
+
+Objects/boolobject.c   -       _Py_FalseStruct -
+Objects/boolobject.c   -       _Py_TrueStruct  -
+Objects/dictobject.c   -       empty_keys_struct       -
+Objects/dictobject.c   -       empty_values    -
+Objects/object.c       -       _Py_NoneStruct  -
+Objects/object.c       -       _Py_NotImplementedStruct        -
+Objects/setobject.c    -       _dummy_struct   -
+Objects/setobject.c    -       _PySet_Dummy    -
+Objects/sliceobject.c  -       _Py_EllipsisObject      -
+
+#-----------------------
+# runtime initialized once - cached PyUnicode
+# []
+
+# Py_IDENTIFIER (global)  []
+Objects/classobject.c  -       PyId___name__   -
+Objects/classobject.c  -       PyId___qualname__       -
+Objects/structseq.c    -       PyId_n_sequence_fields  -
+Objects/structseq.c    -       PyId_n_fields   -
+Objects/structseq.c    -       PyId_n_unnamed_fields   -
+Objects/bytesobject.c  -       PyId___bytes__  -
+Objects/descrobject.c  -       PyId_getattr    -
+Objects/moduleobject.c -       PyId___doc__    -
+Objects/moduleobject.c -       PyId___name__   -
+Objects/moduleobject.c -       PyId___spec__   -
+Objects/object.c       -       PyId_Py_Repr    -
+Objects/object.c       -       PyId___bytes__  -
+Objects/object.c       -       PyId___dir__    -
+Objects/object.c       -       PyId___isabstractmethod__       -
+Objects/fileobject.c   -       PyId_open       -
+Objects/rangeobject.c  -       PyId_iter       -
+Objects/iterobject.c   -       PyId_iter       -
+Objects/frameobject.c  -       PyId___builtins__       -
+Objects/longobject.c   -       PyId_little     -
+Objects/longobject.c   -       PyId_big        -
+Objects/typeobject.c   -       PyId___abstractmethods__        -
+Objects/typeobject.c   -       PyId___class__  -
+Objects/typeobject.c   -       PyId___class_getitem__  -
+Objects/typeobject.c   -       PyId___delitem__        -
+Objects/typeobject.c   -       PyId___dict__   -
+Objects/typeobject.c   -       PyId___doc__    -
+Objects/typeobject.c   -       PyId___getattribute__   -
+Objects/typeobject.c   -       PyId___getitem__        -
+Objects/typeobject.c   -       PyId___hash__   -
+Objects/typeobject.c   -       PyId___init_subclass__  -
+Objects/typeobject.c   -       PyId___len__    -
+Objects/typeobject.c   -       PyId___module__ -
+Objects/typeobject.c   -       PyId___name__   -
+Objects/typeobject.c   -       PyId___new__    -
+Objects/typeobject.c   -       PyId___set_name__       -
+Objects/typeobject.c   -       PyId___setitem__        -
+Objects/typeobject.c   -       PyId_builtins   -
+Objects/typeobject.c   -       PyId_mro        -
+Objects/odictobject.c  -       PyId_items      -
+
+# Py_IDENTIFIER (local)  []
+Objects/listobject.c   listiter_reduce_general PyId_iter       -
+Objects/listobject.c   listiter_reduce_general PyId_reversed   -
+Objects/setobject.c    setiter_reduce  PyId_iter       -
+Objects/setobject.c    set_reduce      PyId___dict__   -
+Objects/abstract.c     PyObject_LengthHint     PyId___length_hint__    -
+Objects/abstract.c     PyObject_GetItem        PyId___class_getitem__  -
+Objects/abstract.c     PyObject_Format PyId___format__ -
+Objects/abstract.c     PyNumber_Long   PyId___trunc__  -
+Objects/abstract.c     PyMapping_Keys  PyId_keys       -
+Objects/abstract.c     PyMapping_Items PyId_items      -
+Objects/abstract.c     PyMapping_Values        PyId_values     -
+Objects/abstract.c     abstract_get_bases      PyId___bases__  -
+Objects/abstract.c     object_isinstance       PyId___class__  -
+Objects/abstract.c     object_recursive_isinstance     PyId___instancecheck__  -
+Objects/abstract.c     object_issubclass       PyId___subclasscheck__  -
+Objects/genobject.c    PyIter_Send     PyId_send       -
+Objects/genobject.c    gen_close_iter  PyId_close      -
+Objects/genobject.c    _gen_throw      PyId_throw      -
+Objects/classobject.c  method_reduce   PyId_getattr    -
+Objects/complexobject.c        try_complex_special_method      PyId___complex__        -
+Objects/bytesobject.c  striter_reduce  PyId_iter       -
+Objects/descrobject.c  calculate_qualname      PyId___qualname__       -
+Objects/descrobject.c  mappingproxy_get        PyId_get        -
+Objects/descrobject.c  mappingproxy_keys       PyId_keys       -
+Objects/descrobject.c  mappingproxy_values     PyId_values     -
+Objects/descrobject.c  mappingproxy_items      PyId_items      -
+Objects/descrobject.c  mappingproxy_copy       PyId_copy       -
+Objects/descrobject.c  mappingproxy_reversed   PyId___reversed__       -
+Objects/descrobject.c  property_init_impl      PyId___doc__    -
+Objects/unicodeobject.c        unicodeiter_reduce      PyId_iter       -
+Objects/unionobject.c  union_repr_item PyId___module__ -
+Objects/unionobject.c  union_repr_item PyId___qualname__       -
+Objects/unionobject.c  union_repr_item PyId___origin__ -
+Objects/unionobject.c  union_repr_item PyId___args__   -
+Objects/moduleobject.c module_init_dict        PyId___package__        -
+Objects/moduleobject.c module_init_dict        PyId___loader__ -
+Objects/moduleobject.c PyModule_GetFilenameObject      PyId___file__   -
+Objects/moduleobject.c _PyModuleSpec_IsInitializing    PyId__initializing      -
+Objects/moduleobject.c module_getattro PyId___getattr__        -
+Objects/moduleobject.c module_dir      PyId___dict__   -
+Objects/moduleobject.c module_dir      PyId___dir__    -
+Objects/methodobject.c meth_reduce     PyId_getattr    -
+Objects/methodobject.c meth_get__qualname__    PyId___qualname__       -
+Objects/bytearrayobject.c      _common_reduce  PyId___dict__   -
+Objects/bytearrayobject.c      bytearrayiter_reduce    PyId_iter       -
+Objects/enumobject.c   reversed_new_impl       PyId___reversed__       -
+Objects/object.c       _PyObject_FunctionStr   PyId___module__ -
+Objects/object.c       _PyObject_FunctionStr   PyId___qualname__       -
+Objects/object.c       _PyObject_FunctionStr   PyId_builtins   -
+Objects/fileobject.c   PyFile_GetLine  PyId_readline   -
+Objects/fileobject.c   PyFile_WriteObject      PyId_write      -
+Objects/fileobject.c   PyObject_AsFileDescriptor       PyId_fileno     -
+Objects/weakrefobject.c        weakref_repr    PyId___name__   -
+Objects/weakrefobject.c        proxy_bytes     PyId___bytes__  -
+Objects/weakrefobject.c        proxy_reversed  PyId___reversed__       -
+Objects/genericaliasobject.c   ga_repr_item    PyId___module__ -
+Objects/genericaliasobject.c   ga_repr_item    PyId___qualname__       -
+Objects/genericaliasobject.c   ga_repr_item    PyId___origin__ -
+Objects/genericaliasobject.c   ga_repr_item    PyId___args__   -
+Objects/genericaliasobject.c   make_parameters PyId___parameters__     -
+Objects/genericaliasobject.c   subs_tvars      PyId___parameters__     -
+Objects/exceptions.c   ImportError_getstate    PyId_name       -
+Objects/exceptions.c   ImportError_getstate    PyId_path       -
+Objects/typeobject.c   type_new        PyId___qualname__       -
+Objects/typeobject.c   type_new        PyId___slots__  -
+Objects/typeobject.c   type_new        PyId___classcell__      -
+Objects/typeobject.c   type_new        PyId___mro_entries__    -
+Objects/typeobject.c   merge_class_dict        PyId___bases__  -
+Objects/typeobject.c   import_copyreg  PyId_copyreg    -
+Objects/typeobject.c   _PyType_GetSlotNames    PyId___slotnames__      -
+Objects/typeobject.c   _PyType_GetSlotNames    PyId__slotnames -
+Objects/typeobject.c   _PyObject_GetState      PyId___getstate__       -
+Objects/typeobject.c   _PyObject_GetNewArguments       PyId___getnewargs_ex__  -
+Objects/typeobject.c   _PyObject_GetNewArguments       PyId___getnewargs__     -
+Objects/typeobject.c   _PyObject_GetItemsIter  PyId_items      -
+Objects/typeobject.c   reduce_newobj   PyId___newobj__ -
+Objects/typeobject.c   reduce_newobj   PyId___newobj_ex__      -
+Objects/typeobject.c   object___reduce_ex___impl       PyId___reduce__ -
+Objects/typeobject.c   overrides_hash  PyId___eq__     -
+Objects/typeobject.c   slot_sq_contains        PyId___contains__       -
+Objects/typeobject.c   slot_nb_power   PyId___pow__    -
+Objects/typeobject.c   slot_nb_bool    PyId___bool__   -
+Objects/typeobject.c   slot_nb_index   PyId___index__  -
+Objects/typeobject.c   slot_nb_inplace_power   PyId___ipow__   -
+Objects/typeobject.c   slot_tp_repr    PyId___repr__   -
+Objects/typeobject.c   slot_tp_call    PyId___call__   -
+Objects/typeobject.c   slot_tp_getattr_hook    PyId___getattr__        -
+Objects/typeobject.c   slot_tp_setattro        PyId___delattr__        -
+Objects/typeobject.c   slot_tp_setattro        PyId___setattr__        -
+Objects/typeobject.c   slot_tp_iter    PyId___iter__   -
+Objects/typeobject.c   slot_tp_iternext        PyId___next__   -
+Objects/typeobject.c   slot_tp_descr_get       PyId___get__    -
+Objects/typeobject.c   slot_tp_descr_set       PyId___delete__ -
+Objects/typeobject.c   slot_tp_descr_set       PyId___set__    -
+Objects/typeobject.c   slot_tp_init    PyId___init__   -
+Objects/typeobject.c   slot_tp_finalize        PyId___del__    -
+Objects/typeobject.c   slot_am_await   PyId___await__  -
+Objects/typeobject.c   slot_am_aiter   PyId___aiter__  -
+Objects/typeobject.c   slot_am_anext   PyId___anext__  -
+Objects/odictobject.c  odict_reduce    PyId___dict__   -
+Objects/odictobject.c  odictiter_reduce        PyId_iter       -
+Objects/odictobject.c  mutablemapping_update_arg       PyId_keys       -
+Objects/dictobject.c   dict_subscript  PyId___missing__        -
+Objects/dictobject.c   dict_update_arg PyId_keys       -
+Objects/dictobject.c   dictiter_reduce PyId_iter       -
+Objects/dictobject.c   dictviews_sub   PyId_difference_update  -
+Objects/dictobject.c   _PyDictView_Intersect   PyId_intersection       -
+Objects/dictobject.c   dictitems_xor   PyId_items      -
+Objects/dictobject.c   dictviews_xor   PyId_symmetric_difference_update        -
+Objects/tupleobject.c  tupleiter_reduce        PyId_iter       -
+Parser/tokenizer.c     fp_setreadl     PyId_open       -
+Parser/tokenizer.c     fp_setreadl     PyId_readline   -
+
+# _Py_static_string  []
+Objects/typeobject.c   -       name_op -
+Objects/typeobject.c   object_new      comma_id        -
+Objects/typeobject.c   slot_mp_subscript       id      -
+Objects/typeobject.c   slot_nb_add     op_id   -
+Objects/typeobject.c   slot_nb_add     rop_id  -
+Objects/typeobject.c   slot_nb_subtract        op_id   -
+Objects/typeobject.c   slot_nb_subtract        rop_id  -
+Objects/typeobject.c   slot_nb_multiply        op_id   -
+Objects/typeobject.c   slot_nb_multiply        rop_id  -
+Objects/typeobject.c   slot_nb_matrix_multiply op_id   -
+Objects/typeobject.c   slot_nb_matrix_multiply rop_id  -
+Objects/typeobject.c   slot_nb_remainder       op_id   -
+Objects/typeobject.c   slot_nb_remainder       rop_id  -
+Objects/typeobject.c   slot_nb_divmod  op_id   -
+Objects/typeobject.c   slot_nb_divmod  rop_id  -
+Objects/typeobject.c   slot_nb_power_binary    op_id   -
+Objects/typeobject.c   slot_nb_power_binary    rop_id  -
+Objects/typeobject.c   slot_nb_negative        id      -
+Objects/typeobject.c   slot_nb_positive        id      -
+Objects/typeobject.c   slot_nb_absolute        id      -
+Objects/typeobject.c   slot_nb_invert  id      -
+Objects/typeobject.c   slot_nb_lshift  op_id   -
+Objects/typeobject.c   slot_nb_lshift  rop_id  -
+Objects/typeobject.c   slot_nb_rshift  op_id   -
+Objects/typeobject.c   slot_nb_rshift  rop_id  -
+Objects/typeobject.c   slot_nb_and     op_id   -
+Objects/typeobject.c   slot_nb_and     rop_id  -
+Objects/typeobject.c   slot_nb_xor     op_id   -
+Objects/typeobject.c   slot_nb_xor     rop_id  -
+Objects/typeobject.c   slot_nb_or      op_id   -
+Objects/typeobject.c   slot_nb_or      rop_id  -
+Objects/typeobject.c   slot_nb_int     id      -
+Objects/typeobject.c   slot_nb_float   id      -
+Objects/typeobject.c   slot_nb_inplace_add     id      -
+Objects/typeobject.c   slot_nb_inplace_subtract        id      -
+Objects/typeobject.c   slot_nb_inplace_multiply        id      -
+Objects/typeobject.c   slot_nb_inplace_matrix_multiply id      -
+Objects/typeobject.c   slot_nb_inplace_remainder       id      -
+Objects/typeobject.c   slot_nb_inplace_lshift  id      -
+Objects/typeobject.c   slot_nb_inplace_rshift  id      -
+Objects/typeobject.c   slot_nb_inplace_and     id      -
+Objects/typeobject.c   slot_nb_inplace_xor     id      -
+Objects/typeobject.c   slot_nb_inplace_or      id      -
+Objects/typeobject.c   slot_nb_floor_divide    op_id   -
+Objects/typeobject.c   slot_nb_floor_divide    rop_id  -
+Objects/typeobject.c   slot_nb_true_divide     op_id   -
+Objects/typeobject.c   slot_nb_true_divide     rop_id  -
+Objects/typeobject.c   slot_nb_inplace_floor_divide    id      -
+Objects/typeobject.c   slot_nb_inplace_true_divide     id      -
+Objects/typeobject.c   slot_tp_str     id      -
+Python/compile.c       compiler_set_qualname   dot     -
+Python/compile.c       compiler_set_qualname   dot_locals      -
+
+# manually cached PyUnicodeOjbect  []
+Objects/boolobject.c   -       false_str       -
+Objects/boolobject.c   -       true_str        -
+Objects/classobject.c  method_get_doc  docstr  -
+Objects/classobject.c  instancemethod_get_doc  docstr  -
+Objects/codeobject.c   PyCode_NewEmpty emptystring     -
+Objects/exceptions.c   _check_for_legacy_statements    print_prefix    -
+Objects/exceptions.c   _check_for_legacy_statements    exec_prefix     -
+Objects/funcobject.c   PyFunction_NewWithQualName      __name__        -
+Objects/listobject.c   -       indexerr        -
+Objects/typeobject.c   object___reduce_ex___impl       objreduce       -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_close_br   -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_dbl_close_br       -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_dbl_open_br        -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_inf        -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_open_br    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ast_unparse.c   -       _str_replace_inf        -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       -       __annotations__ -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       -       __doc__ -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_dictcomp       name    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_from_import    empty_string    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_genexp name    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_lambda name    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_listcomp       name    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_setcomp        name    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/compile.c       compiler_visit_annotations      return_str      -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        PyImport_Import builtins_str    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        PyImport_Import import_str      -
+# XXX This should have been found by the analyzer but wasn't:
+Python/sysmodule.c     -       whatstrings     -
+# XXX This should have been found by the analyzer but wasn't:
+Python/sysmodule.c     sys_displayhook newline -
+# XXX This should have been found by the analyzer but wasn't:
+Python/_warnings.c     is_internal_frame       bootstrap_string        -
+# XXX This should have been found by the analyzer but wasn't:
+Python/_warnings.c     is_internal_frame       importlib_string        -
+
+#-----------------------
+# runtime initialized once - other PyObject
+# []
+
+# cache  []
+Objects/unicodeobject.c        -       interned        -
+Objects/unicodeobject.c        -       static_strings  -
+Objects/typeobject.c   -       method_cache    -
+
+# other  []
+# XXX This should have been found by the analyzer but wasn't:
+Python/context.c       -       _token_missing  -
+# XXX This should have been found by the analyzer but wasn't:
+Python/hamt.c  -       _empty_bitmap_node      -
+# XXX This should have been found by the analyzer but wasn't:
+Python/hamt.c  -       _empty_hamt     -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        PyImport_Import silly_list      -
+
+#-----------------------
+# runtime initialized once - non-PyObject
+# []
+
+# during init  []
+Parser/parser.c        -       Py_DebugFlag    -
+
+# other  []
+Objects/codeobject.c   PyCode_NewEmpty nulltuple       -
+Objects/longobject.c   PyLong_FromString       log_base_BASE   -
+Objects/longobject.c   PyLong_FromString       convwidth_base  -
+Objects/longobject.c   PyLong_FromString       convmultmax_base        -
+Objects/typeobject.c   -       slotdefs        -
+Objects/typeobject.c   -       slotdefs_initialized    -
+Objects/unicodeobject.c        -       bloom_linebreak -
+Objects/unicodeobject.c        -       ucnhash_capi    -
+Parser/pegen.c _PyPegen_dummy_name     cache   -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        -       import_lock     -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        import_find_and_load    header  -
+
+#-----------------------
+# runtime state
+
+# (look at the bottome of the file)
+
+#-----------------------
+# modules
+# [119]
+
+Modules/pwdmodule.c    -       pwdmodule       -
+Modules/grpmodule.c    -       grpmodule       -
+Modules/_ssl.c -       PySocketModule  -
+Modules/_ssl.c -       _sslmodule      -
+Modules/_struct.c      -       _structmodule   -
+Modules/_sre.c -       sremodule       -
+Modules/timemodule.c   -       timemodule      -
+Modules/xxmodule.c     -       xxmodule        -
+Modules/itertoolsmodule.c      -       itertoolsmodule -
+Modules/_tkinter.c     -       _tkintermodule  -
+Modules/gcmodule.c     -       gcmodule        -
+Modules/mmapmodule.c   -       mmapmodule      -
+Modules/errnomodule.c  -       errnomodule     -
+Modules/_gdbmmodule.c  -       _gdbmmodule     -
+Modules/xxlimited.c    -       xxmodule        -
+Modules/arraymodule.c  -       arraymodule     -
+Modules/_uuidmodule.c  -       uuidmodule      -
+Modules/_collectionsmodule.c   -       _collectionsmodule      -
+Modules/_csv.c -       _csvmodule      -
+Modules/_json.c        -       jsonmodule      -
+Modules/zlibmodule.c   -       zlibmodule      -
+Modules/readline.c     -       readlinemodule  -
+Modules/faulthandler.c -       module_def      -
+Modules/_codecsmodule.c        -       codecsmodule    -
+Modules/_asynciomodule.c       -       _asynciomodule  -
+Modules/signalmodule.c -       signalmodule    -
+Modules/binascii.c     -       binasciimodule  -
+Modules/mathmodule.c   -       mathmodule      -
+Modules/_stat.c        -       statmodule      -
+Modules/_opcode.c      -       opcodemodule    -
+Modules/_operator.c    -       operatormodule  -
+Modules/_cryptmodule.c -       cryptmodule     -
+Modules/cmathmodule.c  -       cmathmodule     -
+Modules/_lzmamodule.c  -       _lzmamodule     -
+Modules/_zoneinfo.c    -       zoneinfomodule  -
+Modules/posixmodule.c  -       posixmodule     -
+Modules/_bz2module.c   -       _bz2module      -
+Modules/_functoolsmodule.c     -       _functools_module       -
+Modules/_abc.c -       _abcmodule      -
+Modules/_heapqmodule.c -       _heapqmodule    -
+Modules/_bisectmodule.c        -       _bisectmodule   -
+Modules/_tracemalloc.c -       module_def      -
+Modules/pyexpat.c      -       pyexpatmodule   -
+Modules/_randommodule.c        -       _randommodule   -
+Modules/atexitmodule.c -       atexitmodule    -
+Modules/syslogmodule.c -       syslogmodule    -
+Modules/_queuemodule.c -       queuemodule     -
+Modules/_threadmodule.c        -       threadmodule    -
+Modules/_weakref.c     -       weakrefmodule   -
+Modules/spwdmodule.c   -       spwdmodule      -
+Modules/_contextvarsmodule.c   -       _contextvarsmodule      -
+Modules/_posixsubprocess.c     -       _posixsubprocessmodule  -
+Modules/_xxsubinterpretersmodule.c     -       interpretersmodule      -
+Modules/_curses_panel.c        -       _curses_panelmodule     -
+Modules/audioop.c      -       audioopmodule   -
+Modules/nismodule.c    -       nismodule       -
+Modules/_elementtree.c -       elementtreemodule       -
+Modules/sha256module.c -       _sha256module   -
+Modules/resource.c     -       resourcemodule  -
+Modules/symtablemodule.c       -       symtablemodule  -
+Modules/sha1module.c   -       _sha1module     -
+Modules/selectmodule.c -       selectmodule    -
+Modules/_pickle.c      -       _picklemodule   -
+Modules/_localemodule.c        -       _localemodule   -
+Modules/unicodedata.c  -       unicodedata_module      -
+Modules/_statisticsmodule.c    -       statisticsmodule        -
+Modules/termios.c      -       termiosmodule   -
+Modules/xxsubtype.c    -       xxsubtypemodule -
+Modules/sha512module.c -       _sha512module   -
+Modules/_cursesmodule.c        -       _cursesmodule   -
+Modules/md5module.c    -       _md5module      -
+Modules/socketmodule.c -       socketmodule    -
+Modules/_datetimemodule.c      -       datetimemodule  -
+Modules/_hashopenssl.c -       _hashlibmodule  -
+Modules/fcntlmodule.c  -       fcntlmodule     -
+Modules/ossaudiodev.c  -       ossaudiodevmodule       -
+Modules/_lsprof.c      -       _lsprofmodule   -
+Modules/_blake2/blake2module.c -       blake2_module   -
+Modules/_multiprocessing/multiprocessing.c     -       multiprocessing_module  -
+Modules/_multiprocessing/posixshmem.c  -       this_module     -
+Modules/_sqlite/module.c       -       _sqlite3module  -
+Modules/_sha3/sha3module.c     -       _sha3module     -
+Modules/cjkcodecs/multibytecodec.c     -       _multibytecodecmodule   -
+Modules/_decimal/_decimal.c    -       _decimal_module -
+Modules/_ctypes/_ctypes.c      -       _ctypesmodule   -
+Objects/unicodeobject.c        -       _string_module  -
+Modules/_io/_iomodule.h        -       _PyIO_Module    -
+Modules/_io/_iomodule.c        -       _PyIO_Module    -
+
+#-----------------------
+# module static types
+# []
+
+Modules/arraymodule.c  -       Arraytype       -
+Modules/arraymodule.c  -       PyArrayIter_Type        -
+Modules/_asynciomodule.c       -       FutureType      -
+Modules/_asynciomodule.c       -       FutureIterType  -
+Modules/_asynciomodule.c       -       TaskStepMethWrapper_Type        -
+Modules/_asynciomodule.c       -       TaskType        -
+Modules/_asynciomodule.c       -       PyRunningLoopHolder_Type        -
+Modules/cjkcodecs/multibytecodec.c     -       MultibyteCodec_Type     -
+Modules/cjkcodecs/multibytecodec.c     -       MultibyteIncrementalEncoder_Type        -
+Modules/cjkcodecs/multibytecodec.c     -       MultibyteIncrementalDecoder_Type        -
+Modules/cjkcodecs/multibytecodec.c     -       MultibyteStreamReader_Type      -
+Modules/cjkcodecs/multibytecodec.c     -       MultibyteStreamWriter_Type      -
+Modules/_collectionsmodule.c   -       deque_type      -
+Modules/_collectionsmodule.c   -       dequeiter_type  -
+Modules/_collectionsmodule.c   -       dequereviter_type       -
+Modules/_collectionsmodule.c   -       defdict_type    -
+Modules/_collectionsmodule.c   -       tuplegetter_type        -
+Modules/_csv.c -       Dialect_Type    -
+Modules/_csv.c -       Reader_Type     -
+Modules/_csv.c -       Writer_Type     -
+Modules/_ctypes/callbacks.c    -       PyCThunk_Type   -
+Modules/_ctypes/callproc.c     -       PyCArg_Type     -
+Modules/_ctypes/cfield.c       -       PyCField_Type   -
+Modules/_ctypes/_ctypes.c      -       DictRemover_Type        -
+Modules/_ctypes/_ctypes.c      -       StructParam_Type        -
+Modules/_ctypes/_ctypes.c      -       PyCStructType_Type      -
+Modules/_ctypes/_ctypes.c      -       UnionType_Type  -
+Modules/_ctypes/_ctypes.c      -       PyCPointerType_Type     -
+Modules/_ctypes/_ctypes.c      -       PyCArrayType_Type       -
+Modules/_ctypes/_ctypes.c      -       PyCSimpleType_Type      -
+Modules/_ctypes/_ctypes.c      -       PyCFuncPtrType_Type     -
+Modules/_ctypes/_ctypes.c      -       PyCData_Type    -
+Modules/_ctypes/_ctypes.c      -       PyCFuncPtr_Type -
+Modules/_ctypes/_ctypes.c      -       Struct_Type     -
+Modules/_ctypes/_ctypes.c      -       Union_Type      -
+Modules/_ctypes/_ctypes.c      -       PyCArray_Type   -
+Modules/_ctypes/_ctypes.c      -       Simple_Type     -
+Modules/_ctypes/_ctypes.c      -       PyCPointer_Type -
+Modules/_ctypes/_ctypes.c      -       PyComError_Type -
+Modules/_ctypes/stgdict.c      -       PyCStgDict_Type -
+Modules/_cursesmodule.c        -       PyCursesWindow_Type     -
+Modules/_datetimemodule.c      -       PyDateTime_DeltaType    -
+Modules/_datetimemodule.c      -       PyDateTime_IsoCalendarDateType  -
+Modules/_datetimemodule.c      -       PyDateTime_DateType     -
+Modules/_datetimemodule.c      -       PyDateTime_TZInfoType   -
+Modules/_datetimemodule.c      -       PyDateTime_TimeZoneType -
+Modules/_datetimemodule.c      -       PyDateTime_TimeType     -
+Modules/_datetimemodule.c      -       PyDateTime_DateTimeType -
+Modules/_decimal/_decimal.c    -       PyDecSignalDictMixin_Type       -
+Modules/_decimal/_decimal.c    -       PyDecContextManager_Type        -
+Modules/_decimal/_decimal.c    -       PyDec_Type      -
+Modules/_decimal/_decimal.c    -       PyDecContext_Type       -
+Modules/_elementtree.c -       ElementIter_Type        -
+Modules/_elementtree.c -       Element_Type    -
+Modules/_elementtree.c -       TreeBuilder_Type        -
+Modules/_elementtree.c -       XMLParser_Type  -
+Modules/_functoolsmodule.c     -       partial_type    -
+Modules/_functoolsmodule.c     -       keyobject_type  -
+Modules/_functoolsmodule.c     -       lru_list_elem_type      -
+Modules/_functoolsmodule.c     -       lru_cache_type  -
+Modules/_io/bufferedio.c       -       PyBufferedIOBase_Type   -
+Modules/_io/bufferedio.c       -       PyBufferedReader_Type   -
+Modules/_io/bufferedio.c       -       PyBufferedWriter_Type   -
+Modules/_io/bufferedio.c       -       PyBufferedRWPair_Type   -
+Modules/_io/bufferedio.c       -       PyBufferedRandom_Type   -
+Modules/_io/bytesio.c  -       PyBytesIO_Type  -
+Modules/_io/bytesio.c  -       _PyBytesIOBuffer_Type   -
+Modules/_io/fileio.c   -       PyFileIO_Type   -
+Modules/_io/iobase.c   -       PyIOBase_Type   -
+Modules/_io/iobase.c   -       PyRawIOBase_Type        -
+Modules/_io/stringio.c -       PyStringIO_Type -
+Modules/_io/textio.c   -       PyTextIOBase_Type       -
+Modules/_io/textio.c   -       PyIncrementalNewlineDecoder_Type        -
+Modules/_io/textio.c   -       PyTextIOWrapper_Type    -
+Modules/_io/winconsoleio.c     -       PyWindowsConsoleIO_Type -
+Modules/itertoolsmodule.c      -       groupby_type    -
+Modules/itertoolsmodule.c      -       _grouper_type   -
+Modules/itertoolsmodule.c      -       teedataobject_type      -
+Modules/itertoolsmodule.c      -       tee_type        -
+Modules/itertoolsmodule.c      -       cycle_type      -
+Modules/itertoolsmodule.c      -       dropwhile_type  -
+Modules/itertoolsmodule.c      -       takewhile_type  -
+Modules/itertoolsmodule.c      -       islice_type     -
+Modules/itertoolsmodule.c      -       starmap_type    -
+Modules/itertoolsmodule.c      -       chain_type      -
+Modules/itertoolsmodule.c      -       product_type    -
+Modules/itertoolsmodule.c      -       combinations_type       -
+Modules/itertoolsmodule.c      -       cwr_type        -
+Modules/itertoolsmodule.c      -       permutations_type       -
+Modules/itertoolsmodule.c      -       accumulate_type -
+Modules/itertoolsmodule.c      -       compress_type   -
+Modules/itertoolsmodule.c      -       filterfalse_type        -
+Modules/itertoolsmodule.c      -       count_type      -
+Modules/itertoolsmodule.c      -       repeat_type     -
+Modules/itertoolsmodule.c      -       ziplongest_type -
+Modules/mmapmodule.c   -       mmap_object_type        -
+Modules/_multiprocessing/semaphore.c   -       _PyMp_SemLockType       -
+Modules/ossaudiodev.c  -       OSSAudioType    -
+Modules/ossaudiodev.c  -       OSSMixerType    -
+Modules/_pickle.c      -       Pdata_Type      -
+Modules/_pickle.c      -       PicklerMemoProxyType    -
+Modules/_pickle.c      -       Pickler_Type    -
+Modules/_pickle.c      -       UnpicklerMemoProxyType  -
+Modules/_pickle.c      -       Unpickler_Type  -
+Modules/pyexpat.c      -       Xmlparsetype    -
+Modules/_queuemodule.c -       PySimpleQueueType       -
+Modules/socketmodule.c -       sock_type       -
+Modules/_sre.c -       Pattern_Type    -
+Modules/_sre.c -       Match_Type      -
+Modules/_sre.c -       Scanner_Type    -
+Modules/_ssl.c -       PySSLSocket_Type        -
+Modules/_ssl.c -       PySSLContext_Type       -
+Modules/_ssl.c -       PySSLMemoryBIO_Type     -
+Modules/_ssl.c -       PySSLSession_Type       -
+Modules/_threadmodule.c        -       Locktype        -
+Modules/_threadmodule.c        -       RLocktype       -
+Modules/_threadmodule.c        -       localdummytype  -
+Modules/_threadmodule.c        -       localtype       -
+Modules/xxmodule.c     -       Xxo_Type        -
+Modules/xxmodule.c     -       Str_Type        -
+Modules/xxmodule.c     -       Null_Type       -
+Modules/_xxsubinterpretersmodule.c     -       ChannelIDtype   -
+Modules/xxsubtype.c    -       spamlist_type   -
+Modules/xxsubtype.c    -       spamdict_type   -
+Modules/_zoneinfo.c    -       PyZoneInfo_ZoneInfoType -
+
+#-----------------------
+# module initialized once - non-static types
+# []
+
+# structseq types  [6]
+Modules/timemodule.c   -       StructTimeType  -
+Modules/signalmodule.c -       SiginfoType     -
+Modules/_threadmodule.c        -       ExceptHookArgsType      -
+Modules/spwdmodule.c   -       StructSpwdType  -
+Modules/resource.c     -       StructRUsageType        -
+Modules/_cursesmodule.c        -       NcursesVersionType      -
+
+# heap types  [12]
+Modules/_tkinter.c     -       Tkapp_Type      -
+Modules/_tkinter.c     -       PyTclObject_Type        -
+Modules/_tkinter.c     -       Tktt_Type       -
+Modules/xxlimited.c    -       Xxo_Type        -
+Modules/_decimal/_decimal.c    -       DecimalTuple    -
+Modules/_decimal/_decimal.c    -       PyDecSignalDict_Type    -
+Modules/_sqlite/connection.c   -       pysqlite_ConnectionType -
+Modules/_sqlite/statement.c    -       pysqlite_StatementType  -
+Modules/_sqlite/cache.c        -       pysqlite_NodeType       -
+Modules/_sqlite/cache.c        -       pysqlite_CacheType      -
+Modules/_sqlite/row.c  -       pysqlite_RowType        -
+Modules/_sqlite/prepare_protocol.c     -       pysqlite_PrepareProtocolType    -
+Modules/_sqlite/cursor.c       -       pysqlite_CursorType     -
+
+# exception types  []
+Modules/_ctypes/_ctypes.c      -       PyExc_ArgError  -
+Modules/_cursesmodule.c        -       PyCursesError   -
+Modules/_decimal/_decimal.c    -       DecimalException        -
+Modules/_queuemodule.c -       EmptyError      -
+Modules/_sqlite/module.h       -       pysqlite_Error  -
+Modules/_sqlite/module.h       -       pysqlite_Warning        -
+Modules/_sqlite/module.h       -       pysqlite_InterfaceError -
+Modules/_sqlite/module.h       -       pysqlite_DatabaseError  -
+Modules/_sqlite/module.h       -       pysqlite_InternalError  -
+Modules/_sqlite/module.h       -       pysqlite_OperationalError       -
+Modules/_sqlite/module.h       -       pysqlite_ProgrammingError       -
+Modules/_sqlite/module.h       -       pysqlite_IntegrityError -
+Modules/_sqlite/module.h       -       pysqlite_DataError      -
+Modules/_sqlite/module.h       -       pysqlite_NotSupportedError      -
+Modules/_ssl.c -       PySSLErrorObject        -
+Modules/_ssl.c -       PySSLCertVerificationErrorObject        -
+Modules/_ssl.c -       PySSLZeroReturnErrorObject      -
+Modules/_ssl.c -       PySSLWantReadErrorObject        -
+Modules/_ssl.c -       PySSLWantWriteErrorObject       -
+Modules/_ssl.c -       PySSLSyscallErrorObject -
+Modules/_ssl.c -       PySSLEOFErrorObject     -
+Modules/_threadmodule.c        -       ThreadError     -
+Modules/_tkinter.c     -       Tkinter_TclError        -
+Modules/_xxsubinterpretersmodule.c     -       ChannelError    -
+Modules/_xxsubinterpretersmodule.c     -       ChannelNotFoundError    -
+Modules/_xxsubinterpretersmodule.c     -       ChannelClosedError      -
+Modules/_xxsubinterpretersmodule.c     -       ChannelEmptyError       -
+Modules/_xxsubinterpretersmodule.c     -       ChannelNotEmptyError    -
+Modules/_xxsubinterpretersmodule.c     -       RunFailedError  -
+Modules/ossaudiodev.c  -       OSSAudioError   -
+Modules/pyexpat.c      -       ErrorObject     -
+Modules/signalmodule.c -       ItimerError     -
+Modules/socketmodule.c -       socket_herror   -
+Modules/socketmodule.c -       socket_gaierror -
+Modules/socketmodule.c -       socket_timeout  -
+Modules/xxlimited.c    -       ErrorObject     -
+Modules/xxmodule.c     -       ErrorObject     -
+
+#-----------------------
+# module initialized once - cached PyUnicode
+# []
+
+# Py_IDENTIFIER (global)  []
+Modules/faulthandler.c -       PyId_enable     -
+Modules/faulthandler.c -       PyId_fileno     -
+Modules/faulthandler.c -       PyId_flush      -
+Modules/faulthandler.c -       PyId_stderr     -
+Modules/_asynciomodule.c       -       PyId___asyncio_running_event_loop__     -
+Modules/_asynciomodule.c       -       PyId__asyncio_future_blocking   -
+Modules/_asynciomodule.c       -       PyId_add_done_callback  -
+Modules/_asynciomodule.c       -       PyId_call_soon  -
+Modules/_asynciomodule.c       -       PyId_cancel     -
+Modules/_asynciomodule.c       -       PyId_get_event_loop     -
+Modules/_asynciomodule.c       -       PyId_throw      -
+Modules/posixmodule.c  -       PyId___fspath__ -
+Modules/_abc.c -       PyId___abstractmethods__        -
+Modules/_abc.c -       PyId___class__  -
+Modules/_abc.c -       PyId___dict__   -
+Modules/_abc.c -       PyId___bases__  -
+Modules/_abc.c -       PyId__abc_impl  -
+Modules/_abc.c -       PyId___subclasscheck__  -
+Modules/_abc.c -       PyId___subclasshook__   -
+Modules/_bisectmodule.c        -       PyId_insert     -
+Modules/_threadmodule.c        -       PyId_stderr     -
+Modules/_threadmodule.c        -       PyId_flush      -
+Modules/unicodedata.c  -       PyId_NFC        -
+Modules/unicodedata.c  -       PyId_NFD        -
+Modules/unicodedata.c  -       PyId_NFKC       -
+Modules/unicodedata.c  -       PyId_NFKD       -
+Modules/_datetimemodule.c      -       PyId_as_integer_ratio   -
+Modules/_datetimemodule.c      -       PyId_fromutc    -
+Modules/_datetimemodule.c      -       PyId_isoformat  -
+Modules/_datetimemodule.c      -       PyId_strftime   -
+Modules/_sqlite/connection.c   -       PyId_cursor     -
+Modules/cjkcodecs/multibytecodec.c     -       PyId_write      -
+Modules/_io/textio.c   -       PyId_close      -
+Modules/_io/textio.c   -       PyId__dealloc_warn      -
+Modules/_io/textio.c   -       PyId_decode     -
+Modules/_io/textio.c   -       PyId_fileno     -
+Modules/_io/textio.c   -       PyId_flush      -
+Modules/_io/textio.c   -       PyId_getpreferredencoding       -
+Modules/_io/textio.c   -       PyId_isatty     -
+Modules/_io/textio.c   -       PyId_mode       -
+Modules/_io/textio.c   -       PyId_name       -
+Modules/_io/textio.c   -       PyId_raw        -
+Modules/_io/textio.c   -       PyId_read       -
+Modules/_io/textio.c   -       PyId_readable   -
+Modules/_io/textio.c   -       PyId_replace    -
+Modules/_io/textio.c   -       PyId_reset      -
+Modules/_io/textio.c   -       PyId_seek       -
+Modules/_io/textio.c   -       PyId_seekable   -
+Modules/_io/textio.c   -       PyId_setstate   -
+Modules/_io/textio.c   -       PyId_strict     -
+Modules/_io/textio.c   -       PyId_tell       -
+Modules/_io/textio.c   -       PyId_writable   -
+Modules/_io/fileio.c   -       PyId_name       -
+Modules/_io/bufferedio.c       -       PyId_close      -
+Modules/_io/bufferedio.c       -       PyId__dealloc_warn      -
+Modules/_io/bufferedio.c       -       PyId_flush      -
+Modules/_io/bufferedio.c       -       PyId_isatty     -
+Modules/_io/bufferedio.c       -       PyId_mode       -
+Modules/_io/bufferedio.c       -       PyId_name       -
+Modules/_io/bufferedio.c       -       PyId_peek       -
+Modules/_io/bufferedio.c       -       PyId_read       -
+Modules/_io/bufferedio.c       -       PyId_read1      -
+Modules/_io/bufferedio.c       -       PyId_readable   -
+Modules/_io/bufferedio.c       -       PyId_readinto   -
+Modules/_io/bufferedio.c       -       PyId_readinto1  -
+Modules/_io/bufferedio.c       -       PyId_writable   -
+Modules/_io/bufferedio.c       -       PyId_write      -
+Modules/_io/iobase.c   -       PyId___IOBase_closed    -
+Modules/_io/iobase.c   -       PyId_read       -
+
+# Py_IDENTIFIER (local)  []
+Modules/_ssl.c fill_and_set_sslerror   PyId_reason     -
+Modules/_ssl.c fill_and_set_sslerror   PyId_library    -
+Modules/_ssl.c fill_and_set_sslerror   PyId_verify_message     -
+Modules/_ssl.c fill_and_set_sslerror   PyId_verify_code        -
+Modules/timemodule.c   time_strptime   PyId__strptime_time     -
+Modules/itertoolsmodule.c      _grouper_reduce PyId_iter       -
+Modules/itertoolsmodule.c      itertools_tee_impl      PyId___copy__   -
+Modules/itertoolsmodule.c      cycle_reduce    PyId___setstate__       -
+Modules/itertoolsmodule.c      zip_longest_new PyId_fillvalue  -
+Modules/mmapmodule.c   mmap__exit__method      PyId_close      -
+Modules/_gdbmmodule.c  gdbm__exit__    PyId_close      -
+Modules/arraymodule.c  array_array_fromfile_impl       PyId_read       -
+Modules/arraymodule.c  array_array_tofile      PyId_write      -
+Modules/arraymodule.c  array_array___reduce_ex__       PyId__array_reconstructor       -
+Modules/arraymodule.c  array_array___reduce_ex__       PyId___dict__   -
+Modules/arraymodule.c  array_arrayiterator___reduce___impl     PyId_iter       -
+Modules/_collectionsmodule.c   deque_reduce    PyId___dict__   -
+Modules/_collectionsmodule.c   defdict_reduce  PyId_items      -
+Modules/_collectionsmodule.c   _collections__count_elements_impl       PyId_get        -
+Modules/_collectionsmodule.c   _collections__count_elements_impl       PyId___setitem__        -
+Modules/_csv.c csv_writer      PyId_write      -
+Modules/_asynciomodule.c       get_future_loop PyId_get_loop   -
+Modules/_asynciomodule.c       get_future_loop PyId__loop      -
+Modules/_asynciomodule.c       future_init     PyId_get_debug  -
+Modules/_asynciomodule.c       FutureObj_get_state     PyId_PENDING    -
+Modules/_asynciomodule.c       FutureObj_get_state     PyId_CANCELLED  -
+Modules/_asynciomodule.c       FutureObj_get_state     PyId_FINISHED   -
+Modules/_asynciomodule.c       FutureObj_repr  PyId__repr_info -
+Modules/_asynciomodule.c       FutureObj_finalize      PyId_call_exception_handler     -
+Modules/_asynciomodule.c       FutureObj_finalize      PyId_message    -
+Modules/_asynciomodule.c       FutureObj_finalize      PyId_exception  -
+Modules/_asynciomodule.c       FutureObj_finalize      PyId_future     -
+Modules/_asynciomodule.c       FutureObj_finalize      PyId_source_traceback   -
+Modules/_asynciomodule.c       register_task   PyId_add        -
+Modules/_asynciomodule.c       unregister_task PyId_discard    -
+Modules/_asynciomodule.c       TaskObj_finalize        PyId_call_exception_handler     -
+Modules/_asynciomodule.c       TaskObj_finalize        PyId_task       -
+Modules/_asynciomodule.c       TaskObj_finalize        PyId_message    -
+Modules/_asynciomodule.c       TaskObj_finalize        PyId_source_traceback   -
+Modules/mathmodule.c   math_ceil       PyId___ceil__   -
+Modules/mathmodule.c   math_floor      PyId___floor__  -
+Modules/mathmodule.c   math_trunc      PyId___trunc__  -
+Modules/_operator.c    methodcaller_reduce     PyId_partial    -
+Modules/_lzmamodule.c  build_filter_spec       PyId_id -
+Modules/_lzmamodule.c  build_filter_spec       PyId_lc -
+Modules/_lzmamodule.c  build_filter_spec       PyId_lp -
+Modules/_lzmamodule.c  build_filter_spec       PyId_pb -
+Modules/_lzmamodule.c  build_filter_spec       PyId_dict_size  -
+Modules/_lzmamodule.c  build_filter_spec       PyId_dist       -
+Modules/_lzmamodule.c  build_filter_spec       PyId_start_offset       -
+Modules/pyexpat.c      pyexpat_xmlparser_ParseFile     PyId_read       -
+Modules/_threadmodule.c        thread_excepthook_file  PyId_name       -
+Modules/_elementtree.c _elementtree_Element_find_impl  PyId_find       -
+Modules/_elementtree.c _elementtree_Element_findtext_impl      PyId_findtext   -
+Modules/_elementtree.c _elementtree_Element_findall_impl       PyId_findall    -
+Modules/_elementtree.c _elementtree_Element_iterfind_impl      PyId_iterfind   -
+Modules/_elementtree.c treebuilder_flush_data  PyId_text       -
+Modules/_elementtree.c treebuilder_flush_data  PyId_tail       -
+Modules/_elementtree.c treebuilder_add_subelement      PyId_append     -
+Modules/_elementtree.c expat_start_doctype_handler     PyId_doctype    -
+Modules/_pickle.c      _Pickle_InitState       PyId_getattr    -
+Modules/_pickle.c      _Pickler_SetOutputStream        PyId_write      -
+Modules/_pickle.c      _Unpickler_SetInputStream       PyId_peek       -
+Modules/_pickle.c      _Unpickler_SetInputStream       PyId_read       -
+Modules/_pickle.c      _Unpickler_SetInputStream       PyId_readinto   -
+Modules/_pickle.c      _Unpickler_SetInputStream       PyId_readline   -
+Modules/_pickle.c      whichmodule     PyId___module__ -
+Modules/_pickle.c      whichmodule     PyId_modules    -
+Modules/_pickle.c      whichmodule     PyId___main__   -
+Modules/_pickle.c      save_bytes      PyId_latin1     -
+Modules/_pickle.c      save_dict       PyId_items      -
+Modules/_pickle.c      save_global     PyId___name__   -
+Modules/_pickle.c      save_global     PyId___qualname__       -
+Modules/_pickle.c      get_class       PyId___class__  -
+Modules/_pickle.c      save_reduce     PyId___name__   -
+Modules/_pickle.c      save_reduce     PyId___newobj_ex__      -
+Modules/_pickle.c      save_reduce     PyId___newobj__ -
+Modules/_pickle.c      save_reduce     PyId___new__    -
+Modules/_pickle.c      save    PyId___reduce__ -
+Modules/_pickle.c      save    PyId___reduce_ex__      -
+Modules/_pickle.c      dump    PyId_reducer_override   -
+Modules/_pickle.c      _pickle_Pickler___init___impl   PyId_persistent_id      -
+Modules/_pickle.c      _pickle_Pickler___init___impl   PyId_dispatch_table     -
+Modules/_pickle.c      find_class      PyId_find_class -
+Modules/_pickle.c      instantiate     PyId___getinitargs__    -
+Modules/_pickle.c      instantiate     PyId___new__    -
+Modules/_pickle.c      do_append       PyId_extend     -
+Modules/_pickle.c      do_append       PyId_append     -
+Modules/_pickle.c      load_additems   PyId_add        -
+Modules/_pickle.c      load_build      PyId___setstate__       -
+Modules/_pickle.c      load_build      PyId___dict__   -
+Modules/_pickle.c      _pickle_Unpickler___init___impl PyId_persistent_load    -
+Modules/_cursesmodule.c        _curses_window_putwin   PyId_write      -
+Modules/_cursesmodule.c        _curses_getwin  PyId_read       -
+Modules/_cursesmodule.c        update_lines_cols       PyId_LINES      -
+Modules/_cursesmodule.c        update_lines_cols       PyId_COLS       -
+Modules/_datetimemodule.c      call_tzname     PyId_tzname     -
+Modules/_datetimemodule.c      make_Zreplacement       PyId_replace    -
+Modules/_datetimemodule.c      time_time       PyId_time       -
+Modules/_datetimemodule.c      build_struct_time       PyId_struct_time        -
+Modules/_datetimemodule.c      date_today      PyId_fromtimestamp      -
+Modules/_datetimemodule.c      date_strftime   PyId_timetuple  -
+Modules/_datetimemodule.c      tzinfo_reduce   PyId___getinitargs__    -
+Modules/_datetimemodule.c      tzinfo_reduce   PyId___getstate__       -
+Modules/_datetimemodule.c      datetime_strptime       PyId__strptime_datetime -
+Modules/ossaudiodev.c  oss_exit        PyId_close      -
+Modules/main.c pymain_sys_path_add_path0       PyId_path       -
+Modules/_sqlite/microprotocols.c       pysqlite_microprotocols_adapt   PyId___adapt__  -
+Modules/_sqlite/microprotocols.c       pysqlite_microprotocols_adapt   PyId___conform__        -
+Modules/_sqlite/connection.c   _pysqlite_final_callback        PyId_finalize   -
+Modules/_sqlite/connection.c   pysqlite_connection_set_isolation_level PyId_upper      -
+Modules/_sqlite/connection.c   pysqlite_connection_iterdump    PyId__iterdump  -
+Modules/_sqlite/connection.c   pysqlite_connection_create_collation    PyId_upper      -
+Modules/_sqlite/module.c       module_register_converter       PyId_upper      -
+Modules/_sqlite/cursor.c       _pysqlite_get_converter PyId_upper      -
+Modules/_io/_iomodule.c        _io_open_impl   PyId__blksize   -
+Modules/_io/_iomodule.c        _io_open_impl   PyId_isatty     -
+Modules/_io/_iomodule.c        _io_open_impl   PyId_mode       -
+Modules/_io/_iomodule.c        _io_open_impl   PyId_close      -
+Modules/_io/fileio.c   _io_FileIO_close_impl   PyId_close      -
+Modules/_io/iobase.c   _io__IOBase_tell_impl   PyId_seek       -
+Modules/_io/iobase.c   iobase_finalize PyId__finalizing        -
+Modules/_io/iobase.c   _io__IOBase_readlines_impl      PyId_extend     -
+Modules/_io/iobase.c   _io__RawIOBase_read_impl        PyId_readall    -
+Modules/_ctypes/stgdict.c      MakeAnonFields  PyId__anonymous_        -
+Modules/_ctypes/stgdict.c      PyCStructUnionType_update_stgdict       PyId__swappedbytes_     -
+Modules/_ctypes/stgdict.c      PyCStructUnionType_update_stgdict       PyId__use_broken_old_ctypes_structure_semantics_        -
+Modules/_ctypes/stgdict.c      PyCStructUnionType_update_stgdict       PyId__pack_     -
+Modules/_ctypes/callproc.c     ConvParam       PyId__as_parameter_     -
+Modules/_ctypes/callproc.c     unpickle        PyId___new__    -
+Modules/_ctypes/callproc.c     unpickle        PyId___setstate__       -
+Modules/_ctypes/_ctypes.c      StructUnionType_new     PyId__abstract_ -
+Modules/_ctypes/_ctypes.c      StructUnionType_new     PyId__fields_   -
+Modules/_ctypes/_ctypes.c      CDataType_from_param    PyId__as_parameter_     -
+Modules/_ctypes/_ctypes.c      PyCPointerType_new      PyId__type_     -
+Modules/_ctypes/_ctypes.c      PyCPointerType_set_type PyId__type_     -
+Modules/_ctypes/_ctypes.c      PyCArrayType_new        PyId__length_   -
+Modules/_ctypes/_ctypes.c      PyCArrayType_new        PyId__type_     -
+Modules/_ctypes/_ctypes.c      c_wchar_p_from_param    PyId__as_parameter_     -
+Modules/_ctypes/_ctypes.c      c_char_p_from_param     PyId__as_parameter_     -
+Modules/_ctypes/_ctypes.c      c_void_p_from_param     PyId__as_parameter_     -
+Modules/_ctypes/_ctypes.c      PyCSimpleType_new       PyId__type_     -
+Modules/_ctypes/_ctypes.c      PyCSimpleType_from_param        PyId__as_parameter_     -
+Modules/_ctypes/_ctypes.c      converters_from_argtypes        PyId_from_param -
+Modules/_ctypes/_ctypes.c      make_funcptrtype_dict   PyId__flags_    -
+Modules/_ctypes/_ctypes.c      make_funcptrtype_dict   PyId__argtypes_ -
+Modules/_ctypes/_ctypes.c      make_funcptrtype_dict   PyId__restype_  -
+Modules/_ctypes/_ctypes.c      make_funcptrtype_dict   PyId__check_retval_     -
+Modules/_ctypes/_ctypes.c      PyCFuncPtr_set_restype  PyId__check_retval_     -
+Modules/_ctypes/_ctypes.c      _build_result   PyId___ctypes_from_outparam__   -
+Modules/_ctypes/_ctypes.c      _init_pos_args  PyId__fields_   -
+
+# _Py_static_string  []
+Modules/_pickle.c      get_dotted_path PyId_dot        -
+
+# manually cached PyUnicodeOjbect  []
+Modules/_asynciomodule.c       -       context_kwname  -
+Modules/_ctypes/callproc.c     _ctypes_get_errobj      error_object_name       -
+Modules/_ctypes/_ctypes.c      CreateSwappedType       suffix  -
+Modules/_io/_iomodule.c        -       _PyIO_str_close -
+Modules/_io/_iomodule.c        -       _PyIO_str_closed        -
+Modules/_io/_iomodule.c        -       _PyIO_str_decode        -
+Modules/_io/_iomodule.c        -       _PyIO_str_encode        -
+Modules/_io/_iomodule.c        -       _PyIO_str_fileno        -
+Modules/_io/_iomodule.c        -       _PyIO_str_flush -
+Modules/_io/_iomodule.c        -       _PyIO_str_getstate      -
+Modules/_io/_iomodule.c        -       _PyIO_str_isatty        -
+Modules/_io/_iomodule.c        -       _PyIO_str_newlines      -
+Modules/_io/_iomodule.c        -       _PyIO_str_nl    -
+Modules/_io/_iomodule.c        -       _PyIO_str_peek  -
+Modules/_io/_iomodule.c        -       _PyIO_str_read  -
+Modules/_io/_iomodule.c        -       _PyIO_str_read1 -
+Modules/_io/_iomodule.c        -       _PyIO_str_readable      -
+Modules/_io/_iomodule.c        -       _PyIO_str_readall       -
+Modules/_io/_iomodule.c        -       _PyIO_str_readinto      -
+Modules/_io/_iomodule.c        -       _PyIO_str_readline      -
+Modules/_io/_iomodule.c        -       _PyIO_str_reset -
+Modules/_io/_iomodule.c        -       _PyIO_str_seek  -
+Modules/_io/_iomodule.c        -       _PyIO_str_seekable      -
+Modules/_io/_iomodule.c        -       _PyIO_str_setstate      -
+Modules/_io/_iomodule.c        -       _PyIO_str_tell  -
+Modules/_io/_iomodule.c        -       _PyIO_str_truncate      -
+Modules/_io/_iomodule.c        -       _PyIO_str_writable      -
+Modules/_io/_iomodule.c        -       _PyIO_str_write -
+Modules/_io/_iomodule.c        -       _PyIO_empty_str -
+Modules/_json.c        _encoded_const  s_null  -
+Modules/_json.c        _encoded_const  s_true  -
+Modules/_json.c        _encoded_const  s_false -
+Modules/_json.c        encoder_listencode_dict open_dict       -
+Modules/_json.c        encoder_listencode_dict close_dict      -
+Modules/_json.c        encoder_listencode_dict empty_dict      -
+Modules/_json.c        encoder_listencode_list open_array      -
+Modules/_json.c        encoder_listencode_list close_array     -
+Modules/_json.c        encoder_listencode_list empty_array     -
+Modules/_threadmodule.c        -       str_dict        -
+Modules/_tracemalloc.c -       unknown_filename        -
+
+#-----------------------
+# module initialized once - other PyObject
+# []
+
+# cached during module init  []
+Modules/_asynciomodule.c       -       asyncio_mod     -
+Modules/_asynciomodule.c       -       traceback_extract_stack -
+Modules/_asynciomodule.c       -       asyncio_get_event_loop_policy   -
+Modules/_asynciomodule.c       -       asyncio_future_repr_info_func   -
+Modules/_asynciomodule.c       -       asyncio_iscoroutine_func        -
+Modules/_asynciomodule.c       -       asyncio_task_get_stack_func     -
+Modules/_asynciomodule.c       -       asyncio_task_print_stack_func   -
+Modules/_asynciomodule.c       -       asyncio_task_repr_info_func     -
+Modules/_asynciomodule.c       -       asyncio_InvalidStateError       -
+Modules/_asynciomodule.c       -       asyncio_CancelledError  -
+Modules/_zoneinfo.c    -       io_open -
+Modules/_zoneinfo.c    -       _tzpath_find_tzfile     -
+Modules/_zoneinfo.c    -       _common_mod     -
+
+# other  []
+Modules/_ctypes/_ctypes.c      -       _unpickle       -
+Modules/_ctypes/_ctypes.c      PyCArrayType_from_ctype cache   -
+Modules/_cursesmodule.c        -       ModDict -
+Modules/_datetimemodule.c      datetime_strptime       module  -
+Modules/_datetimemodule.c      -       PyDateTime_TimeZone_UTC -
+Modules/_datetimemodule.c      -       PyDateTime_Epoch        -
+Modules/_datetimemodule.c      -       us_per_ms       -
+Modules/_datetimemodule.c      -       us_per_second   -
+Modules/_datetimemodule.c      -       us_per_minute   -
+Modules/_datetimemodule.c      -       us_per_hour     -
+Modules/_datetimemodule.c      -       us_per_day      -
+Modules/_datetimemodule.c      -       us_per_week     -
+Modules/_datetimemodule.c      -       seconds_per_day -
+Modules/_decimal/_decimal.c    PyInit__decimal capsule -
+Modules/_decimal/_decimal.c    -       basic_context_template  -
+Modules/_decimal/_decimal.c    -       current_context_var     -
+Modules/_decimal/_decimal.c    -       default_context_template        -
+Modules/_decimal/_decimal.c    -       extended_context_template       -
+Modules/_decimal/_decimal.c    -       round_map       -
+Modules/_decimal/_decimal.c    -       Rational        -
+Modules/_decimal/_decimal.c    -       SignalTuple     -
+Modules/_functoolsmodule.c     -       kwd_mark        -
+Modules/_io/_iomodule.c        -       _PyIO_empty_bytes       -
+Modules/_json.c        raise_errmsg    JSONDecodeError -
+Modules/_sqlite/microprotocols.c       -       psyco_adapters  -
+Modules/_sqlite/module.h       -       _pysqlite_converters    -
+Modules/_ssl.c -       err_codes_to_names      -
+Modules/_ssl.c -       err_names_to_codes      -
+Modules/_ssl.c -       lib_codes_to_names      -
+# XXX This should have been found by the analyzer but wasn't:
+Modules/_ssl.c -       _ssl_locks      -
+Modules/_struct.c      -       cache   -
+Modules/_tracemalloc.c -       tracemalloc_empty_traceback     -
+Modules/arraymodule.c  array_array___reduce_ex__       array_reconstructor     -
+Modules/cjkcodecs/cjkcodecs.h  getmultibytecodec       cofunc  -
+Modules/signalmodule.c -       DefaultHandler  -
+Modules/signalmodule.c -       IgnoreHandler   -
+Modules/signalmodule.c -       IntHandler      -
+
+#-----------------------
+# module initialized once - non-PyObject
+# []
+
+# pre-allocated buffer  []
+Modules/getbuildinfo.c Py_GetBuildInfo buildinfo       -
+Modules/nismodule.c    nisproc_maplist_2       res     -
+Modules/pyexpat.c      PyUnknownEncodingHandler        template_buffer -
+
+# other  []
+Include/datetime.h     -       PyDateTimeAPI   -
+Modules/_asynciomodule.c       -       module_initialized      -
+Modules/_ctypes/cfield.c       _ctypes_get_fielddesc   initialized     -
+Modules/_ctypes/malloc_closure.c       -       _pagesize       -
+Modules/_cursesmodule.c        -       initialised     -
+Modules/_cursesmodule.c        -       initialised_setupterm   -
+Modules/_cursesmodule.c        -       initialisedcolors       -
+Modules/_cursesmodule.c        -       screen_encoding -
+Modules/_cursesmodule.c        PyInit__curses  PyCurses_API    -
+Modules/_datetimemodule.c      -       CAPI    -
+Modules/_decimal/_decimal.c    PyInit__decimal initialized     -
+Modules/_decimal/_decimal.c    -       _py_long_multiply       -
+Modules/_decimal/_decimal.c    -       _py_long_floor_divide   -
+Modules/_decimal/_decimal.c    -       _py_long_power  -
+Modules/_decimal/_decimal.c    -       _py_float_abs   -
+Modules/_decimal/_decimal.c    -       _py_long_bit_length     -
+Modules/_decimal/_decimal.c    -       _py_float_as_integer_ratio      -
+Modules/_decimal/_decimal.c    -       _decimal_api    -
+Modules/_elementtree.c -       expat_capi      -
+Modules/_io/bufferedio.c       _PyIO_trap_eintr        eintr_int       -
+Modules/_sqlite/module.h       -       _pysqlite_enable_callback_tracebacks    -
+Modules/_sqlite/module.h       -       pysqlite_BaseTypeAdapted        -
+Modules/_ssl.c -       _ssl_locks_count        -
+Modules/cjkcodecs/cjkcodecs.h  -       codec_list      -
+Modules/cjkcodecs/cjkcodecs.h  -       mapping_list    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/fileutils.c     -       _Py_open_cloexec_works  -
+Modules/getaddrinfo.c  -       gai_afdl        -
+Modules/posixmodule.c  os_dup2_impl    dup3_works      -
+Modules/posixmodule.c  -       structseq_new   -
+Modules/posixmodule.c  -       ticks_per_second        -
+Modules/pyexpat.c      PyInit_pyexpat  capi    -
+Modules/readline.c     -       using_libedit_emulation -
+Modules/readline.c     -       libedit_history_start   -
+Modules/resource.c     -       initialized     -
+Modules/signalmodule.c -       initialized     -
+Modules/socketmodule.c -       accept4_works   -
+Modules/socketmodule.c -       sock_cloexec_works      -
+Modules/socketmodule.c -       PySocketModuleAPI       -
+Modules/spwdmodule.c   -       initialized     -
+Modules/timemodule.c   -       initialized     -
+Modules/timemodule.c   _PyTime_GetClockWithInfo        initialized     -
+Modules/timemodule.c   _PyTime_GetProcessTimeWithInfo  ticks_per_second        -
+
+#-----------------------
+# module state
+# []
+
+Modules/posixmodule.c  -       environ -
+
+# PyObject  []
+Modules/_asynciomodule.c       -       cached_running_holder   -
+Modules/_asynciomodule.c       -       fi_freelist     -
+Modules/_asynciomodule.c       -       fi_freelist_len -
+Modules/_asynciomodule.c       -       all_tasks       -
+Modules/_asynciomodule.c       -       current_tasks   -
+Modules/_asynciomodule.c       -       iscoroutine_typecache   -
+Modules/_ctypes/_ctypes.c      -       _ctypes_ptrtype_cache   -
+Modules/_tkinter.c     -       tcl_lock        -
+Modules/_tkinter.c     -       excInCmd        -
+Modules/_tkinter.c     -       valInCmd        -
+Modules/_tkinter.c     -       trbInCmd        -
+Modules/_zoneinfo.c    -       TIMEDELTA_CACHE -
+Modules/_zoneinfo.c    -       ZONEINFO_WEAK_CACHE     -
+Modules/faulthandler.c -       fatal_error     -
+Modules/faulthandler.c -       thread  -
+Modules/faulthandler.c -       user_signals    -
+Modules/faulthandler.c -       stack   -
+Modules/faulthandler.c -       old_stack       -
+Modules/signalmodule.c -       Handlers        -
+Modules/syslogmodule.c -       S_ident_o       -
+
+# other  []
+Modules/_asynciomodule.c       -       cached_running_holder_tsid      -
+Modules/_asynciomodule.c       -       task_name_counter       -
+Modules/_ctypes/cfield.c       -       formattable     -
+Modules/_ctypes/malloc_closure.c       -       free_list       -
+Modules/_curses_panel.c        -       lop     -
+Modules/_tkinter.c     -       quitMainLoop    -
+Modules/_tkinter.c     -       errorInCmd      -
+Modules/_tkinter.c     -       Tkinter_busywaitinterval        -
+Modules/_tkinter.c     -       call_mutex      -
+Modules/_tkinter.c     -       var_mutex       -
+Modules/_tkinter.c     -       command_mutex   -
+Modules/_tkinter.c     -       HeadFHCD        -
+Modules/_tkinter.c     -       stdin_ready     -
+Modules/_tkinter.c     -       event_tstate    -
+Modules/_tracemalloc.c -       allocators      -
+Modules/_tracemalloc.c -       tables_lock     -
+Modules/_tracemalloc.c -       tracemalloc_traced_memory       -
+Modules/_tracemalloc.c -       tracemalloc_peak_traced_memory  -
+Modules/_tracemalloc.c -       tracemalloc_filenames   -
+Modules/_tracemalloc.c -       tracemalloc_traceback   -
+Modules/_tracemalloc.c -       tracemalloc_tracebacks  -
+Modules/_tracemalloc.c -       tracemalloc_traces      -
+Modules/_tracemalloc.c -       tracemalloc_domains     -
+Modules/_tracemalloc.c -       tracemalloc_reentrant_key       -
+Modules/_xxsubinterpretersmodule.c     -       _globals        -
+Modules/_zoneinfo.c    -       ZONEINFO_STRONG_CACHE   -
+Modules/_zoneinfo.c    -       ZONEINFO_STRONG_CACHE_MAX_SIZE  -
+Modules/_zoneinfo.c    -       NO_TTINFO       -
+Modules/faulthandler.c faulthandler_dump_traceback     reentrant       -
+Modules/readline.c     -       completer_word_break_characters -
+Modules/readline.c     -       _history_length -
+Modules/readline.c     -       should_auto_add_history -
+Modules/readline.c     -       sigwinch_received       -
+Modules/readline.c     -       sigwinch_ohandler       -
+Modules/readline.c     -       completed_input_string  -
+Modules/rotatingtree.c -       random_stream   -
+Modules/rotatingtree.c -       random_value    -
+Modules/signalmodule.c -       is_tripped      -
+Modules/signalmodule.c -       wakeup  -
+Modules/socketmodule.c -       defaulttimeout  -
+Modules/syslogmodule.c -       S_log_open      -
+
+#-----------------------
+# runtime state
+# []
+
+# PyObject  []
+Objects/typeobject.c   resolve_slotdups        pname   -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        -       extensions      -
+
+# allocator  []
+Objects/obmalloc.c     -       _Py_tracemalloc_config  -
+Objects/obmalloc.c     -       _PyObject_Arena -
+Objects/obmalloc.c     -       arenas  -
+Objects/obmalloc.c     -       maxarenas       -
+Objects/obmalloc.c     -       unused_arena_objects    -
+Objects/obmalloc.c     -       usable_arenas   -
+Objects/obmalloc.c     -       nfp2lasta       -
+Objects/obmalloc.c     -       narenas_currently_allocated     -
+Objects/obmalloc.c     -       ntimes_arena_allocated  -
+Objects/obmalloc.c     -       narenas_highwater       -
+Objects/obmalloc.c     -       raw_allocated_blocks    -
+Objects/obmalloc.c     new_arena       debug_stats     -
+
+# REPL []
+Parser/myreadline.c    -       _PyOS_ReadlineLock      -
+Parser/myreadline.c    -       _PyOS_ReadlineTState    -
+Parser/myreadline.c    -       PyOS_InputHook  -
+Parser/myreadline.c    -       PyOS_ReadlineFunctionPointer    -
+
+# other  []
+Objects/dictobject.c   -       pydict_global_version   -
+Objects/floatobject.c  -       double_format   -
+Objects/floatobject.c  -       float_format    -
+Objects/floatobject.c  -       detected_double_format  -
+Objects/floatobject.c  -       detected_float_format   -
+Objects/moduleobject.c -       max_module_number       -
+Objects/object.c       -       _Py_RefTotal    -
+Objects/typeobject.c   -       next_version_tag        -
+Objects/typeobject.c   resolve_slotdups        ptrs    -
+Parser/pegen.c -       memo_statistics -
+# XXX This should have been found by the analyzer but wasn't:
+Python/bootstrap_hash.c        -       urandom_cache   -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ceval.c -       lltrace -
+# XXX This should have been found by the analyzer but wasn't:
+Python/ceval.c make_pending_calls      busy    -
+Python/dynload_shlib.c -       handles -
+Python/dynload_shlib.c -       nhandles        -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        -       import_lock_level       -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        -       import_lock_thread      -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        import_find_and_load    accumulated     -
+# XXX This should have been found by the analyzer but wasn't:
+Python/import.c        import_find_and_load    import_level    -
+# XXX This should have been found by the analyzer but wasn't:
+Python/pylifecycle.c   -       _Py_UnhandledKeyboardInterrupt  -
+# XXX This should have been found by the analyzer but wasn't:
+Python/pylifecycle.c   fatal_error     reentrant       -