code: def finalize_options(self):
      self.set_undefined_options(
          "build", ("build_lib", "build_lib"), ("force", "force")
      )
  
      # Get the distribution options that are aliases for build_py
      # options -- list of packages and list of modules.
      self.packages = self.distribution.packages
      self.py_modules = self.distribution.py_modules
      self.package_data = self.distribution.package_data
      self.package_dir = {}
      if self.distribution.package_dir:
          for name, path in self.distribution.package_dir.items():
              self.package_dir[name] = convert_path(path)
      self.data_files = self.get_data_files()
  
      # Ick, copied straight from install_lib.py (fancy_getopt needs a
      # type system!  Hell, *everything* needs a type system!!!)
      if not isinstance(self.optimize, int):
          try:
              self.optimize = int(self.optimize)
              assert 0 <= self.optimize <= 2
          except (ValueError, AssertionError):
              raise DistutilsOptionError("optimize must be 0, 1, or 2")
  
imports: import os
  import importlib.util
  import sys
  import glob
  from distutils.core import Command
  from distutils.errors import *
  from distutils.util import convert_path, Mixin2to3
  from distutils import log
label_desc: Use image node_id 2 for calling the build_py obj's underlying member method code with example usage: obj.finalize_options() without return types