code: def process(
      self,
      pp: scripts_postprocessing.PostprocessedImage,
      upscale_by=2.0,
      upscaler_name=None,
  ):
      if upscaler_name is None or upscaler_name == "None":
          return
  
      upscaler1 = next(
          iter(
              [
                  x
                  for x in shared.sd_upscalers
                  if x.name == upscaler_name
              ]
          ),
          None,
      )
      assert upscaler1, f"could not find upscaler named {upscaler_name}"
  
      pp.image = self.upscale(
          pp.image, pp.info, upscaler1, 0, upscale_by, 0, 0, False
      )
      pp.info["Postprocess upscaler"] = upscaler1.name
  
file_path: stable-diffusion-webui/scripts/postprocessing_upscale.py
imports: from PIL import Image
  import numpy
  from modules import scripts_postprocessing, shared
  import gradio
  from modules.ui_components import FormRow, ToolButton
  from modules.ui import switch_values_symbol
label_desc: Use image node_id 3 for calling the ScriptPostprocessingUpscaleSimple obj's underlying member method code with example usage: obj.process(pp, upscale_by, upscaler_name) without return types