docs: def shelf(self, shelf=None):
          """ Defines a shelf to use for this recipe """
          if shelf is None:
              self._shelf = Shelf({})
          elif isinstance(shelf, Shelf):
              self._shelf = shelf
          elif isinstance(shelf, dict):
              self._shelf = Shelf(shelf)
          else:
              raise BadRecipe('shelf must be a dict or recipe.shelf.Shelf')
  
          if self._select_from is None and \
              self._shelf.Meta.select_from is not None:
              self._select_from = self._shelf.Meta.select_from
          return self