REST payload for :py:func:`ForestConnection._quilc_compile`

def quilc_compile_payload(quil_program, isa, specs):
    """REST payload for :py:func:`ForestConnection._quilc_compile`"""
    if not quil_program:
        raise ValueError("You have attempted to compile an empty program."
                         " Please provide an actual program.")
    if not isinstance(quil_program, Program):
        raise TypeError("quil_program must be a Program object.")
    if not isinstance(isa, ISA):
        raise TypeError("isa must be an ISA object.")
    if not isinstance(specs, Specs):
        raise TypeError("specs must be a Specs object.")

    payload = {"uncompiled-quil": quil_program.out(),
               "target-device": {
                   "isa": isa.to_dict(),
                   "specs": specs.to_dict()}}

    return payload