docs: def colors(self, p_hint_possible=True):
          """
          Returns 0, 16 or 256 representing the number of colors that should be
          used in the output.
  
          A hint can be passed whether the device that will output the text
          supports colors.
          """
          lookup = {
              'false': 0,
              'no': 0,
              '0': 0,
              '1': 16,
              'true': 16,
              'yes': 16,
              '16': 16,
              '256': 256,
          }
  
          try:
              forced = self.cp.get('topydo', 'force_colors') == '1'
          except ValueError:
              forced = self.defaults['topydo']['force_colors'] == '1'
  
          try:
              colors = lookup[self.cp.get('topydo', 'colors').lower()]  # pylint: disable=no-member
          except ValueError:
              colors = lookup[self.defaults['topydo']['colors'].lower()]  # pylint: disable=no-member
          except KeyError:
              # for invalid values or 'auto'
              colors = 16 if p_hint_possible else 0
  
          # disable colors when no colors are enforced on the commandline and
          # color support is determined automatically
          return 0 if not forced and not p_hint_possible else colors