def parse_sexp_to_condition( sexp: Program, ) -> Tuple[Optional[Err], Optional[ConditionWithArgs]]: """ Takes a ChiaLisp sexp and returns a ConditionWithArgs. If it fails, returns an Error """ as_atoms = sexp.as_atom_list() if len(as_atoms) < 1: return Err.INVALID_CONDITION, None opcode = as_atoms[0] opcode = ConditionOpcode(opcode) return None, ConditionWithArgs(opcode, as_atoms[1:])
def parse_sexp_to_condition( sexp: Program, ) -> Tuple[Optional[Err], Optional[ConditionWithArgs]]: """ Takes a ChiaLisp sexp and returns a ConditionWithArgs. If it fails, returns an Error """ as_atoms = sexp.as_atom_list() if len(as_atoms) < 1: return Err.INVALID_CONDITION, None opcode = as_atoms[0] try: opcode = ConditionOpcode(opcode) except ValueError: # TODO: this remapping is bad, and should probably not happen # it's simple enough to just store the opcode as a byte opcode = ConditionOpcode.UNKNOWN return None, ConditionWithArgs(opcode, as_atoms[1:])