code: def nonintersecting_boxes(shape):
      """
      The Lips's are supposed to be additive, so disjoint things
      should be additive. But, if they ALMOST intersect, different
      things get added to the triangulation.
  
      >>> b1 = np.zeros(40, np.int_)
      >>> b1[:11] = 1
      >>> b2 = np.zeros(40, np.int_)
      >>> b2[11:] = 1
      >>> (b1*b2).sum()
      0
      >>> c = np.indices((40,)).astype(np.float64)
      >>> intvol.Lips1d(c, b1)
      array([  1.,  10.])
      >>> intvol.Lips1d(c, b2)
      array([  1.,  28.])
      >>> intvol.Lips1d(c, b1+b2)
      array([  1.,  39.])
  
      The function creates two boxes such that the 'dilated' box1 does not
      intersect with box2.  Additivity works in this case.
      """
      while True:
          edge1, box1 = randombox(shape)
          edge2, box2 = randombox(shape)
  
          diledge1 = [
              [max(ed[0] - 1, 0), min(ed[1] + 1, sh)]
              for ed, sh in zip(edge1, box1.shape)
          ]
  
          dilbox1 = box(box1.shape, diledge1)
  
          if set(np.unique(dilbox1 + box2)).issubset([0, 1]):
              break
      return box1, box2, edge1, edge2
  
imports: from itertools import combinations
  import numpy
  import numpy.linalg
  import pytest
  from numpy.testing import assert_almost_equal, assert_array_equal
  from ..None import intvol
label_desc: Use image node_id 6 for calling a global function with example usage: nonintersecting_boxes(shape) and returns: box1,  box2,  edge1,  edge2