docstr: Desperately parse all C files in the directory or its package parents
  (not re-descending) to find the (included) source file in one of them.
docstr_tok: ["Desperately","parse","all","C","files","in","the","directory","or","its","package","parents","(","not","re-descending",")","to","find","the","(","included",")","source","file","in","one","of","them","."]
code: def _find_c_source_files(self, dir_path, source_file):
      """
      Desperately parse all C files in the directory or its package parents
      (not re-descending) to find the (included) source file in one of them.
      """
      if standalone():
          if os.environ.get("PYTHON_COVERAGE_CYTHON_BUILD_ROOT"):
              broot = os.environ["PYTHON_COVERAGE_CYTHON_BUILD_ROOT"]
              iter_files = lambda: (
                  os.path.join(root, filename)
                  for root, _, files in os.walk(broot)
                  for filename in files
              )
          else:
              import library.python.resource
  
              iter_files = library.python.resource.resfs_files
          for c_file in iter_files():
              if os.path.splitext(c_file)[1] in C_FILE_EXTENSIONS:
                  self._read_source_lines(c_file, source_file)
                  if source_file in self._c_files_map:
                      return
          raise AssertionError(
              (
                  source_file,
                  os.environ.get("PYTHON_COVERAGE_CYTHON_BUILD_ROOT"),
              )
          )
  
      if not os.path.isdir(dir_path):
          return
      splitext = os.path.splitext
      for filename in os.listdir(dir_path):
          ext = splitext(filename)[1].lower()
          if ext in C_FILE_EXTENSIONS:
              self._read_source_lines(
                  os.path.join(dir_path, filename), source_file
              )
              if source_file in self._c_files_map:
                  return
      # not found? then try one package up
      if is_package_dir(dir_path):
          self._find_c_source_files(
              os.path.dirname(dir_path), source_file
          )
  
imports: from __future__ import absolute_import
  import re
  import os.path
  import sys
  from collections import defaultdict
  from coverage.plugin import CoveragePlugin, FileTracer, FileReporter
  from coverage.files import canonical_filename
  from .Utils import find_root_package_dir, is_package_dir, open_source_file
  from .None import __version__
label_desc: Use image node_id 5 for calling the Plugin obj's underlying member method code with example usage: obj._find_c_source_files(dir_path, source_file) without return types