def _build_simple_value()

in nubia/internal/typing/builder.py [0:0]


def _build_simple_value(string, tp):
    if not tp or issubclass_(tp, str):
        return string
    elif is_mapping_type(tp):
        entries = (
            re.split(r"\s*[:=]\s*", entry, maxsplit=1) for entry in string.split(";")
        )
        if is_dict_value_iterable(tp):
            entries = ((k, re.split(r"\s*,\s*", v)) for k, v in entries)
        return {k.strip(): v for k, v in entries}
    elif is_tuple_type(tp):
        return tuple(item for item in string.split(","))
    elif is_iterable_type(tp):
        return [item for item in string.split(",")]
    else:
        return string