# A small teaching model of the three displayed cases, not the full loader.
def repeated_stage_flags(occurrences, key=None, complete=None):
    if complete is not None:
        if len(complete) != occurrences:
            raise ValueError("Complete profile must supply every displayed occurrence")
        return list(complete)
    if key == "pipeline_barrier":
        return [True] * occurrences
    prefix = "pipeline_barrier#"
    if not isinstance(key, str) or not key.startswith(prefix):
        raise ValueError("Use pipeline_barrier or pipeline_barrier#N")
    ordinal = int(key[len(prefix):])
    if not 1 <= ordinal <= occurrences:
        raise ValueError("Occurrence is out of range")
    return [i == ordinal for i in range(1, occurrences + 1)]

assert repeated_stage_flags(4, "pipeline_barrier") == [True] * 4
assert repeated_stage_flags(4, "pipeline_barrier#2") == [False, True, False, False]
assert repeated_stage_flags(4, complete=[False, True, True, True]) == [False, True, True, True]
for label, flags in [
    ("bare", repeated_stage_flags(4, "pipeline_barrier")),
    ("#2", repeated_stage_flags(4, "pipeline_barrier#2")),
    ("complete", repeated_stage_flags(4, complete=[False, True, True, True])),
]:
    print(label, flags)
