pyaver.errors

 1from anchorpy import Program
 2from anchorpy.error import ProgramError, _ExtendedRPCError
 3from solana.rpc.core import RPCException
 4import ast
 5
 6def get_idl_errors(program: Program):
 7    """
 8    Fetches a dictionary of all IDL errors from Program
 9
10    Args:
11        program (Program): Aver program AnchorPy
12
13    Returns:
14        dict[int, str]: Errors with error codes as keys and error messages as values 
15    """
16    idl_dict = dict()
17    for e in program.idl.errors:
18        idl_dict[e.code] = e.msg
19    return idl_dict
20
21def parse_error(e: RPCException, program: Program):
22    """
23    Tests whether RPCException is a Program Error or other RPC error.
24
25    Program Errors refer to an error thrown by the smart contract
26
27    Args:
28        e (RPCException): Exception
29        program (Program): Aver program AnchorPy
30
31    Returns:
32        (ProgramError | RPCException): Program Error or RPC Excpeption
33    """
34    error_json = ast.literal_eval(e.__str__())
35    error_extended = _ExtendedRPCError(code=error_json['code'], message=error_json['message'], data=error_json['data'])
36    p = ProgramError.parse(error_extended, get_idl_errors(program))
37    print(isinstance(e, RPCException))
38    print(p)
39    if(p is not None):
40        return p
41    else:
42        return e
def get_idl_errors(program: anchorpy.program.core.Program)
 7def get_idl_errors(program: Program):
 8    """
 9    Fetches a dictionary of all IDL errors from Program
10
11    Args:
12        program (Program): Aver program AnchorPy
13
14    Returns:
15        dict[int, str]: Errors with error codes as keys and error messages as values 
16    """
17    idl_dict = dict()
18    for e in program.idl.errors:
19        idl_dict[e.code] = e.msg
20    return idl_dict

Fetches a dictionary of all IDL errors from Program

Args
  • program (Program): Aver program AnchorPy
Returns

dict[int, str]: Errors with error codes as keys and error messages as values

def parse_error( e: solana.rpc.core.RPCException, program: anchorpy.program.core.Program)
22def parse_error(e: RPCException, program: Program):
23    """
24    Tests whether RPCException is a Program Error or other RPC error.
25
26    Program Errors refer to an error thrown by the smart contract
27
28    Args:
29        e (RPCException): Exception
30        program (Program): Aver program AnchorPy
31
32    Returns:
33        (ProgramError | RPCException): Program Error or RPC Excpeption
34    """
35    error_json = ast.literal_eval(e.__str__())
36    error_extended = _ExtendedRPCError(code=error_json['code'], message=error_json['message'], data=error_json['data'])
37    p = ProgramError.parse(error_extended, get_idl_errors(program))
38    print(isinstance(e, RPCException))
39    print(p)
40    if(p is not None):
41        return p
42    else:
43        return e

Tests whether RPCException is a Program Error or other RPC error.

Program Errors refer to an error thrown by the smart contract

Args
  • e (RPCException): Exception
  • program (Program): Aver program AnchorPy
Returns

(ProgramError | RPCException): Program Error or RPC Excpeption