def parseline(line):
    match = parseline_pattern.match(line)
    if not match:
        raise ValueError(line)
    type, id, op = match.groups()
    data_str = line[match.end(0):]
    return type, id, op, _parseline_data(data_str, {})


# vim:et:fdm=marker:sts=4:sw=4:ts=4
Assumes wrapped in currentFrame etc checks
dataset/ETHPy150Open slimta/python-slimta/slimta/logging/__init__.py/parseline--crossover with--dataset/ETHPy150Open ioflo/ioflo/ioflo/base/building.py/Builder.makeFiat