code: def _add_sun_process(
      tens, num_flare_circles, flare_center, src_radius, x, y, src_color
  ) -> Tensor:
      tens = to_tensor(tens, override_checks=True)
      overlay = tens.clone()
      output = tens.clone()
      imshape = tens.shape
  
      for i in range(num_flare_circles):
          alpha = random.uniform(0.05, 0.2)
          r = random.randint(0, len(x) - 1)
          rad = random.randint(1, imshape[0] // 100 - 2)
          cv.circle(
              overlay,
              (int(x[r]), int(y[r])),
              rad * rad * rad,
              (
                  random.randint(
                      max(src_color[0] - 50, 0), src_color[0]
                  ),
                  random.randint(
                      max(src_color[1] - 50, 0), src_color[1]
                  ),
                  random.randint(
                      max(src_color[2] - 50, 0), src_color[2]
                  ),
              ),
              -1,
          )
          cv.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
  
      return flare_source(
          output,
          (int(flare_center[0]), int(flare_center[1])),
          src_radius,
          src_color,
      )
  
imports: import cv2
  import random
  import math
  import numpy
  from ..coreten import Tensor, to_tensor
  from ..annotations import Tuple, Union
  from ..color import to_hls, to_rgb, to_bgr, to_hsv, to_gray, to_lab
label_desc: Use image node_id 20 for calling a global function with example usage: _add_sun_process(tens, num_flare_circles, flare_center, src_radius, x, y, src_color) and returns: flare_source