code: def parse_value(cls, value, cast):
          
          if cast is None:
              return value
          elif cast is bool:
              try:
                  value = int(value) != 0
              except ValueError:
                  value = value.lower() in cls.BOOLEAN_TRUE_STRINGS
          elif isinstance(cast, list):
              value = list(map(cast[0], [x for x in value.split(',') if x]))
          elif isinstance(cast, tuple):
              val = value.strip('(').strip(')').split(',')
              value = tuple(map(cast[0], [x for x in val if x]))
          elif isinstance(cast, dict):
              key_cast = cast.get('key', str)
              value_cast = cast.get('value', str)
              value_cast_by_key = cast.get('cast', dict())
              value = dict(map(
                  lambda kv: (
                      key_cast(kv[0]),
                      cls.parse_value(kv[1], value_cast_by_key.get(kv[0], value_cast))
                  ),
                  [val.split('=') for val in value.split(';') if val]
              ))
          elif cast is dict:
              value = dict([val.split('=') for val in value.split(',') if val])
          elif cast is list:
              value = [x for x in value.split(',') if x]
          elif cast is tuple:
              val = value.strip('(').strip(')').split(',')
              value = tuple([x for x in val if x])
          elif cast is float:
              # clean string
              float_str = re.sub(r'[^\d,\.]', '', value)
              # split for avoid thousand separator and different locale comma/dot symbol
              parts = re.split(r'[,\.]', float_str)
              if len(parts) == 1:
                  float_str = parts[0]
              else:
                  float_str = "{0}.{1}".format(''.join(parts[0:-1]), parts[-1])
              value = float(float_str)
          else:
              value = cast(value)
          return value
docs: Parse and cast provided value
  
          :param value: Stringed value.
          :param cast: Type to cast return value as.
  
          :returns: Casted value