code: def _read_file(path, seen_files):
      if path in seen_files:
          return
  
      names = set()
      seen_files.add(path)
      for line in path.open():
          if match := _RELATIVE_IMPORT_RE.match(line):
              for name in match.group("names").split(","):
                  name = name.strip()
                  names.add(name)
                  yield from _read_file(
                      src_path / f"{name}.py", seen_files
                  )
          else:
              yield _clean_line(line, names)
  
file_path: catboost/contrib/python/portalocker/py3/portalocker/__main__.py
imports: import argparse
  import logging
  import os
  import pathlib
  import re
label_desc: Use image node_id 2 for calling a global function with example usage: _read_file(path, seen_files) without return types