code: def get_grid_bbox(self, shape):
          
  
          (bb_top, bb_left), (bb_bottom, bb_right) = self.get_bbox()
  
          if bb_top is None:
              bb_top = 0
          if bb_left is None:
              bb_left = 0
          if bb_bottom is None:
              bb_bottom = shape[0]
          if bb_right is None:
              bb_right = shape[1]
  
          return ((bb_top, bb_left), (bb_bottom, bb_right))
docs: Returns ((top, left), (bottom, right)) of bounding box
  
          A bounding box is the smallest rectangle that contains all selections.
          Non-specified boundaries are filled i from size.
  
          Parameters
          ----------
  
          shape: 3-Tuple of Integer
          \tGrid shape