code: def convert(self, value, view):
          
          is_mapping = isinstance(self.template, MappingTemplate)
  
          for candidate in self.allowed:
              try:
                  if is_mapping:
                      if isinstance(candidate, Filename) and \
                              candidate.relative_to:
                          next_template = candidate.template_with_relatives(
                              view,
                              self.template
                          )
  
                          next_template.subtemplates[view.key] = as_template(
                              candidate
                          )
                      else:
                          next_template = MappingTemplate({view.key: candidate})
  
                      return view.parent.get(next_template)[view.key]
                  else:
                      return view.get(candidate)
              except ConfigTemplateError:
                  raise
              except ConfigError:
                  pass
              except ValueError as exc:
                  raise ConfigTemplateError(exc)
  
          self.fail(
              u'must be one of {0}, not {1}'.format(
                  repr(self.allowed), repr(value)
              ),
              view
          )
docs: Ensure that the value follows at least one template.