code: def get_data(self, typename, init_func=None):
      
      if typename not in self.data_products:
        if not init_func:
          return None
        self.data_products[typename] = init_func()
      return self.data_products.get(typename)
docs: Returns a data product.
  
      :API: public
  
      If the product isn't found, returns None, unless init_func is set, in which case the product's
      value is set to the return value of init_func(), and returned.