code: def create(name, grid, spacing, diameter, depth, volume=0):
      
      columns, rows = grid
      col_spacing, row_spacing = spacing
      custom_container = Container()
      properties = {
          'type': 'custom',
          'diameter': diameter,
          'height': depth,
          'total-liquid-volume': volume
      }
  
      for c in range(columns):
          for r in range(rows):
              well = Well(properties=properties)
              well_name = chr(r + ord('A')) + str(1 + c)
              coordinates = (c * col_spacing, (rows - r - 1) * row_spacing, 0)
              custom_container.add(well, well_name, coordinates)
      database.save_new_container(custom_container, name)
      return database.load_container(name)
docs: Creates a labware definition based on a rectangular gird, depth, diameter,
      and spacing. Note that this function can only create labware with regularly
      spaced wells in a rectangular format, of equal height, depth, and radius.
      Irregular labware defintions will have to be made in other ways or modified
      using a regular definition as a starting point. Also, upon creation a
      definition always has its lower-left well at (0, 0, 0), such that this
      labware _must_ be calibrated before use.
  
      :param name: the name of the labware to be used with `labware.load`
      :param grid: a 2-tuple of integers representing (<n_columns>, <n_rows>)
      :param spacing: a 2-tuple of floats representing
          (<col_spacing, <row_spacing)
      :param diameter: a float representing the internal diameter of each well
      :param depth: a float representing the distance from the top of each well
          to the internal bottom of the same well
      :param volume: [optional] the maximum volume of each well
      :return: the labware object created by this function