code: def parse_encoded_styles(text, normalize_key=None):
      
      parsed_styles = {}
      for assignment in split(text, ';'):
          name, _, styles = assignment.partition('=')
          target = parsed_styles.setdefault(name, {})
          for token in split(styles, ','):
              # When this code was originally written, setting background colors
              # wasn't supported yet, so there was no need to disambiguate
              # between the text color and background color. This explains why
              # a color name or number implies setting the text color (for
              # backwards compatibility).
              if token.isdigit():
                  target['color'] = int(token)
              elif token in ANSI_COLOR_CODES:
                  target['color'] = token
              elif '=' in token:
                  name, _, value = token.partition('=')
                  if name in ('color', 'background'):
                      if value.isdigit():
                          target[name] = int(value)
                      elif value in ANSI_COLOR_CODES:
                          target[name] = value
              else:
                  target[token] = True
      return parsed_styles
docs: Parse text styles encoded in a string into a nested data structure.
  
      :param text: The encoded styles (a string).
      :returns: A dictionary in the structure of the :data:`DEFAULT_FIELD_STYLES`
                and :data:`DEFAULT_LEVEL_STYLES` dictionaries.
  
      Here's an example of how this function works:
  
      >>> from coloredlogs import parse_encoded_styles
      >>> from pprint import pprint
      >>> encoded_styles = 'debug=green;warning=yellow;error=red;critical=red,bold'
      >>> pprint(parse_encoded_styles(encoded_styles))
      {'debug': {'color': 'green'},
       'warning': {'color': 'yellow'},
       'error': {'color': 'red'},
       'critical': {'bold': True, 'color': 'red'}}