diff --git a/pyproject.toml b/pyproject.toml index 9f37ff2..43f541f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "common" description = "Reusable code stubs" -version = "0.1.7" +version = "0.1.8" requires-python = ">=3.13" authors = [ { name="BreakerBear", email="breakerbear@autistic.men" }, diff --git a/src/common/jsonrpc2/server.py b/src/common/jsonrpc2/server.py index 9644d65..ac0a27d 100644 --- a/src/common/jsonrpc2/server.py +++ b/src/common/jsonrpc2/server.py @@ -68,7 +68,7 @@ class Error(Enum): INTERNAL_ERROR = -32603 def __init__(self, *args): - super().__init__(args) + super().__init__(*args) self.data = None def message(self) -> str: @@ -140,10 +140,19 @@ async def handler(request: ws.WebSocketRequest): inbound = Request.load(message) mid = inbound.id res = inbound.fulfill() - except json.decoder.JSONDecodeError: err = Error.PARSE_ERROR - except Request.ParamsError: err = Error.INVALID_PARAMS - except TypeError: err = Error.INVALID_REQUEST - except KeyError: err = Error.METHOD_NOT_FOUND + except json.decoder.JSONDecodeError as e: + err = Error.PARSE_ERROR + exc = e + except Request.ParamsError as e: + err = Error.INVALID_PARAMS + exc = e + except TypeError as e: + err = Error.INVALID_REQUEST + exc = e + except KeyError as e: + err = Error.METHOD_NOT_FOUND + err.data = str(e) + exc = e except ws.ConnectionClosed as e: logger.critical('Going away', exc_info=e) return