code: def bind_curses(self):
          
          self._color_pair_map = {}
          self._attribute_map = {}
  
          for element, item in self.elements.items():
              fg, bg, attrs = item
  
              color_pair = (fg, bg)
              if self.use_color and color_pair != (-1, -1):
                  # Curses limits the number of available color pairs, so we
                  # need to reuse them if there are multiple elements with the
                  # same foreground and background.
                  if color_pair not in self._color_pair_map:
                      # Index 0 is reserved by curses for the default color
                      index = len(self._color_pair_map) + 1
                      curses.init_pair(index, color_pair[0], color_pair[1])
                      self._color_pair_map[color_pair] = curses.color_pair(index)
                  attrs |= self._color_pair_map[color_pair]
  
              self._attribute_map[element] = attrs
docs: Bind the theme's colors to curses's internal color pair map.
  
          This method must be called once (after curses has been initialized)
          before any element attributes can be accessed. Color codes and other
          special attributes will be mixed bitwise into a single value that
          can be passed into curses draw functions.