code: def getcomponentsdetails(self, product, force_refresh=False):
          
          proddict = self._lookup_product_in_cache(product)
  
          if (force_refresh or not proddict or "components" not in proddict):
              self.refresh_products(names=[product],
                                    include_fields=["name", "id", "components"])
              proddict = self._lookup_product_in_cache(product)
  
          ret = {}
          for compdict in proddict["components"]:
              ret[compdict["name"]] = compdict
          return ret
docs: Wrapper around Product.get(include_fields=["components"]),
          returning only the "components" data for the requested product,
          slightly reworked to a dict mapping of components.name: components,
          for historical reasons.
  
          This uses the product cache, but will update it if the product
          isn't found or "components" isn't cached for the product.
  
          In cases like bugzilla.redhat.com where there are tons of
          components for some products, this API will time out. You
          should use product_get instead.