Parse a single disk from the header line.

    Each disks has at least a device name and a unique number in its array,
    after that could follow a list of special flags:
        (W)  write-mostly
        (S)  spare disk
        (F)  faulty disk
        (R)  replacement disk
    Some are mutually exclusive (e.g. can't be spare and faulty).

def parse_device_disk(token):
    """Parse a single disk from the header line.

    Each disks has at least a device name and a unique number in its array,
    after that could follow a list of special flags:
        (W)  write-mostly
        (S)  spare disk
        (F)  faulty disk
        (R)  replacement disk
    Some are mutually exclusive (e.g. can't be spare and faulty).

    """
    name, token = token.split("[", 1)
    number, flags = token.split("]", 1)

    return name, {
        "number": int(number),
        "write_mostly": "W" in flags,
        "faulty": "F" in flags,
        "spare": "S" in flags,
        "replacement": "R" in flags,
    }