55from __future__ import annotations
66
77import inspect
8+ import logging
89from collections .abc import Callable
910from dataclasses import asdict , fields as dc_fields
1011from typing import Any , get_type_hints
1314from tck .protocol import build_json_rpc_error_response
1415
1516
17+ logger = logging .getLogger (__name__ )
18+
19+
1620# A global _HANDLERS dict to store method name -> handler function mappings
1721_HANDLERS : dict [str , Callable ] = {}
1822
@@ -43,7 +47,10 @@ def dispatch(method_name: str, params: Any) -> Any:
4347 handler = get_handler (method_name )
4448
4549 if handler is None :
46- raise JsonRpcError .method_not_found_error (message = f"Method not found: { method_name } " )
50+ logger .warning (
51+ f"MethodNotFoundError (method: { repr (method_name )} ) error: The requested RPC method is not registered."
52+ )
53+ raise JsonRpcError .method_not_found_error ()
4754
4855 try :
4956 target_func = getattr (handler , "__wrapped__" , handler )
@@ -58,26 +65,31 @@ def dispatch(method_name: str, params: Any) -> Any:
5865 param_type = hints .get (param_name , parameters [0 ].annotation )
5966 params = param_type .parse_json_params (params )
6067 except (TypeError , ValueError ) as e :
68+ logger .error (f"InvalidParamsError (method: { repr (method_name )} ) error: { str (e )} " )
6169 raise JsonRpcError .invalid_params_error (data = str (e )) from e
6270
6371 result = handler (params )
6472
6573 return parse_result (result )
6674
67- except JsonRpcError :
75+ except JsonRpcError as e :
76+ logger .error (f"JsonRpcError (method: { repr (method_name )} ) error: { str (e )} " )
6877 raise
6978 except Exception as e :
70- raise JsonRpcError .internal_error (data = str (e )) from e
79+ logger .error (f"InternalError (method: { repr (method_name )} ) error: { str (e )} " )
80+ raise JsonRpcError .internal_error () from e
7181
7282
7383def safe_dispatch (method_name : str , params : Any , request_id : str | int | None ) -> Any | dict [str , Any ]:
7484 """Safely dispatch the request and handle exceptions."""
7585 try :
7686 return dispatch (method_name , params )
7787 except JsonRpcError as e :
88+ logger .error (f"JsonRpcError (method: { repr (method_name )} ) error: { str (e )} " )
7889 return build_json_rpc_error_response (e , request_id )
7990 except Exception as e :
80- error = JsonRpcError .internal_error (data = str (e ))
91+ logger .error (f"InternalError (method: { repr (method_name )} ) error: { str (e )} " )
92+ error = JsonRpcError .internal_error ()
8193 return build_json_rpc_error_response (error , request_id )
8294
8395
0 commit comments