code: def get_values_and_permissible(values: Iterable[Tuple[Any, str]],
                                 add_none: bool = False,
                                 none_description: str = "[None]") \
          -> Tuple[List[Tuple[Any, str]], List[Any]]:
      
      permissible_values = list(x[0] for x in values)
      # ... does not include the None value; those do not go to the validator
      if add_none:
          none_tuple = (SERIALIZED_NONE, none_description)
          values = [none_tuple] + list(values)
      return values, permissible_values
docs: Used when building Colander nodes.
  
      Args:
          values: an iterable of tuples like ``(value, description)`` used in
              HTML forms
  
          add_none: add a tuple ``(None, none_description)`` at the start of
              ``values`` in the result?
  
          none_description: the description used for ``None`` if ``add_none``
              is set
  
      Returns:
          a tuple ``(values, permissible_values)``, where
  
          - ``values`` is what was passed in (perhaps with the addition of the
            "None" tuple at the start)
          - ``permissible_values`` is a list of all the ``value`` elements of
            the original ``values``