code: def _compute_styles(self, element, style_groups):
          
          style = self.lookup_options(element, 'style')[0]
          sopts = []
          for sopt in ['color', 'hatch']:
              if sopt in style:
                  sopts.append(sopt)
                  style.pop(sopt, None)
          color_groups = []
          for sg in style_groups:
              color_groups.append(self.values[sg])
          style_product = list(product(*color_groups))
          wrapped_style = self.lookup_options(element, 'style').max_cycles(len(style_product))
          color_groups = {k:tuple(wrapped_style[n][sopt] for sopt in sopts)
                          for n,k in enumerate(style_product)}
  
          return style, color_groups, sopts
docs: Computes color and hatch combinations by
          any combination of the 'group', 'category'
          and 'stack'.