code: def union(box1: CoordinateBox, box2: CoordinateBox) -> CoordinateBox:
      """Merges provided boxes to find the smallest union box.
  
      This method merges the two provided boxes.
  
      Parameters
      ----------
      box1: CoordinateBox
          First box to merge in
      box2: CoordinateBox
          Second box to merge into this box
  
      Returns
      -------
      CoordinateBox
          Smallest `CoordinateBox` that contains both `box1` and `box2`
      """
      x_min = min(box1.x_range[0], box2.x_range[0])
      y_min = min(box1.y_range[0], box2.y_range[0])
      z_min = min(box1.z_range[0], box2.z_range[0])
      x_max = max(box1.x_range[1], box2.x_range[1])
      y_max = max(box1.y_range[1], box2.y_range[1])
      z_max = max(box1.z_range[1], box2.z_range[1])
      return CoordinateBox(
          (x_min, x_max), (y_min, y_max), (z_min, z_max)
      )
  
file_path: deepchem/deepchem/utils/coordinate_box_utils.py
imports: from typing import List, Sequence, Tuple
  import numpy
  from scipy.spatial import ConvexHull
label_desc: Use image node_id 3 for calling a global function with example usage: union(box1, box2) and returns: CoordinateBox