<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getproducts(self, force_refresh=False, **kwargs):
 """ Query all products and return the raw dict info. Takes all the same arguments as product_get. On first invocation this will contact bugzilla and internally cache the results. Subsequent getproducts calls or accesses to self.products will return this cached data only. :param force_refresh: force refreshing via refresh_products() """

        if force_refresh or not self._cache.products:
            self.refresh_products(**kwargs)
        return self._cache.products