def _task_from_taskline(taskline):
    if taskline.strip().startswith('#'):
        return None
    elif '|' in taskline:
        text, _, meta = taskline.rpartition('|')
        task = { 'text': text.strip() }
        for piece in meta.strip().split(','):
            label, data = piece.split(':')
            task[label.strip()] = data.strip()
    else:
        text = taskline.strip()
        task = { 'id': _hash(text), 'text': text }
    return task
Recursive loading will continue through modules with no tasks
dataset/ETHPy150Open sjl/t/t.py/_task_from_taskline--crossover with--dataset/ETHPy150Open fabric/fabric/tests/test_main.py/TestNamespaces.test_recursion_steps_into_nontask_modules