docs: def cast(cls, value, cast=str, subcast=None):
          """
          Parse and cast provided value.
  
          :param value: Stringed value.
          :param cast: Type or callable to cast return value as.
          :param subcast: Subtype or callable to cast return values as (used for
                          nested structures).
  
          :returns: Value of type `cast`.
          """
          if cast is bool:
              value = value.lower() in cls.BOOLEAN_TRUE_STRINGS
          elif cast is float:
              # Clean string
              float_str = re.sub(r'[^\d,\.]', '', value)
              # Split to handle thousand separator for different locales, i.e.
              # comma or dot being the placeholder.
              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)
          elif type(cast) is type and (issubclass(cast, list) or
                                       issubclass(cast, tuple)):
              value = (subcast(i.strip()) if subcast else i.strip() for i in
                       value.split(',') if i)
          elif cast is dict:
              value = {k.strip(): subcast(v.strip()) if subcast else v.strip()
                       for k, v in (i.split('=') for i in value.split(',') if
                       value)}
          try:
              return cast(value)
          except ValueError as error:
              raise ConfigurationError(*error.args)