class_docstr: Customize the process for building the extension by chaning 
  the options for compiling swig files and cu files.
  
  Ref: https://github.com/python/cpython/blob/master/Lib/distutils/command/build_ext.py
code: def finalize_options(self):
      self.swig_cpp = True
      print("build temp", self.build_temp)
      print("build lib", self.build_lib)
      super(custom_build_ext, self).finalize_options()
      self.swig_opts = "-py3 -outdir {}/singa/".format(
          self.build_lib
      ).split()
      print("build temp", self.build_temp)
      print("build lib", self.build_lib)
  
imports: from setuptools import find_packages, setup, Command, Extension
  from setuptools.command.build_ext import build_ext
  from distutils.errors import CompileError, DistutilsSetupError
  import os
  import io
  import sys
  import subprocess
  import shutil
  import shlex
  from pathlib import Path
  import numpy
  from datetime import date
label_desc: Use image node_id 1 for calling the custom_build_ext obj's underlying member method code with example usage: obj.finalize_options() without return types