<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def dimensions_wizard():
 """A wizard which attempts to determine the dimensions of a SpiNNaker system. .. warning:: Since SC&MP v2.0.0 it is not necessary to know the dimensions of a SpiNNaker machine in order to boot it. As a result, most applications will no longer require this wizard step. Returns ``{"dimensions": (x, y)}`` via the :py:exc:`~rig.wizard.Success` exception. """

    option = yield MultipleChoice(
        "What type of SpiNNaker system to you have?",
        ["A single four-chip 'SpiNN-3' board",
         "A single forty-eight-chip 'SpiNN-5' board",
         "Multiple forty-eight-chip 'SpiNN-5' boards",
         "Other"],
        None)
    assert 0 <= option < 4

    if option == 0:
        raise Success({"dimensions": (2, 2)})
    elif option == 1:
        raise Success({"dimensions": (8, 8)})
    elif option == 2:
        # Infer the system's dimensions from the number of boards supplied
        num_boards = yield Text("How many 'SpiNN-5' boards are in the system?")
        try:
            w, h = standard_system_dimensions(int(num_boards))
        except ValueError:
            # May fail due to integer conversion or the function rejecting the
            # number of boards.
            raise Failure(
                "'{}' is not a valid number of boards.".format(num_boards))
        raise Success({"dimensions": (w, h)})
    else:
        dimensions = yield Text(
            "What are the dimensions of the network in chips (e.g. 24x12)?")
        match = re.match(r"\s*(\d+)\s*[xX]\s*(\d+)\s*", dimensions)
        if not match:
            raise Failure("'{}' is not a valid system size.".format(
                dimensions))
        else:
            w = int(match.group(1))
            h = int(match.group(2))
            raise Success({"dimensions": (w, h)})