code: def from_ud(
      feature_name: str, feature_value: Optional[str]
  ) -> Optional[MorphosyntacticFeature]:
      """For a given Universal Dependencies feature name and value,
      return the appropriate feature class/value.
      >>> from_ud('Case', 'Abl')
      ablative
      >>> from_ud('Abbr', 'Yes')
      pos
      >>> from_ud('PronType', 'Ind')
      indefinite
      """
      # Do cleanup on certain inputs that look like ``"Number[psor]``
      # Thus this is rewritten to ``feature_name = Number``
      # and ``feature_value = psor``.
      # Was this for Stanza or LatinCy?
      if "[" in feature_name and "]" in feature_name:
          feature_name_split: List[str] = feature_name.split(
              "[", maxsplit=1
          )
          feature_name = feature_name_split[0]
          feature_value = feature_name_split[1][:-1]
          feature_value = feature_value.title()
  
      feature_name, feature_value = _postprocess_latincy_ud_types(
          feature_name=feature_name, feature_value=feature_value
      )
  
      if feature_name in FORM_UD_MAP:
          feature_map = FORM_UD_MAP[feature_name]
      else:
          msg1: str = f"Unrecognized UD feature '{feature_name}' with value '{feature_value}'."
          msg2: str = f"If you believe this is not an error in the dependency parser, please raise an issue at <https://github.com/cltk/cltk/issues> and include a short text to reproduce the error."
          print(msg1)
          print(msg2)
          print("")
          # raise CLTKException(msg)
          return None
      # print(f"feature_name={feature_name}->feature_value={feature_value}")
      if feature_value:
          values = feature_value.split(",")
          for value in values:
              if value in feature_map:
                  return feature_map[value]
              else:
                  msg1: str = f"Unrecognized value '{value}' for UD feature '{feature_name}'."
                  msg2: str = f"If you believe this is not an error in the dependency parser, please raise an issue at <https://github.com/cltk/cltk/issues> and include a short text to reproduce the error."
                  print(msg1)
                  print(msg2)
                  print("")
      else:
          raise CLTKException(f"{feature_name} is None")
  
file_path: cltk/src/cltk/morphology/morphosyntax.py
imports: from typing import Dict, List, Optional, Tuple, Type, Union
  from cltk.core.exceptions import CLTKException
  from cltk.morphology.universal_dependencies_features import *
label_desc: Use image node_id 3 for calling a global function with example usage: from_ud(feature_name, feature_value) and returns: None, feature_map