code: def get_ext_filename(self, fullname):
      so_ext = os.getenv("SETUPTOOLS_EXT_SUFFIX")
      if so_ext:
          filename = os.path.join(*fullname.split(".")) + so_ext
      else:
          filename = _build_ext.get_ext_filename(self, fullname)
          so_ext = get_config_var("EXT_SUFFIX")
  
      if fullname in self.ext_map:
          ext = self.ext_map[fullname]
          use_abi3 = (
              getattr(ext, "py_limited_api") and get_abi3_suffix()
          )
          if use_abi3:
              filename = filename[: -len(so_ext)]
              so_ext = get_abi3_suffix()
              filename = filename + so_ext
          if isinstance(ext, Library):
              fn, ext = os.path.splitext(filename)
              return self.shlib_compiler.library_filename(fn, libtype)
          elif use_stubs and ext._links_to_dynamic:
              d, fn = os.path.split(filename)
              return os.path.join(d, "dl-" + fn)
      return filename
  
imports: import os
  import sys
  import itertools
  from importlib.machinery import EXTENSION_SUFFIXES
  from importlib.util import cache_from_source
  from typing import Dict, Iterator, List, Tuple
  from pathlib import Path
  from distutils.command.build_ext import build_ext
  from distutils.ccompiler import new_compiler
  from distutils.sysconfig import customize_compiler, get_config_var
  from distutils import log
  from setuptools.errors import BaseError
  from setuptools.extension import Extension, Library
  from distutils.sysconfig import _config_vars
label_desc: Use image node_id 6 for calling the build_ext obj's underlying member method code with example usage: obj.get_ext_filename(fullname) and returns: filename, self, os