code: def make_choice(cls, choices, transform=None, strict=None):
          
          # -- NOTE: Parser uses re.IGNORECASE flag
          #    => transform may enforce case.
          choices = cls._normalize_choices(choices, transform)
          if strict is None:
              strict = cls.default_strict
  
          def convert_choice(text):
              if transform:
                  text = transform(text)
              if strict and not (text in convert_choice.choices):
                  values = ", ".join(convert_choice.choices)
                  raise ValueError("%s not in: %s" % (text, values))
              return text
          convert_choice.pattern = r"|".join(choices)
          convert_choice.choices = choices
          return convert_choice
docs: Creates a type-converter function to select one from a list of strings.
          The type-converter function returns the selected choice_text.
          The :param:`transform()` function is applied in the type converter.
          It can be used to enforce the case (because parser uses re.IGNORECASE).
  
          :param choices: List of strings as choice.
          :param transform: Optional, initial transform function for parsed text.
          :return: Type converter function object for this choices.