diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 2f431e0..2b21273 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -5,6 +5,12 @@ hide: # Release Notes +## 0.12.9 + +### Added + +- Missing before and after request in the handler helpers. + ## 0.12.8 ### Added @@ -12,9 +18,6 @@ hide: - `Lilya`, `Include`, `Host`, `Path` and `Router` now support `before_request` and `after_request` life cycles. This can be particularly useful to those who want to perform actions before and after a request is performed. E.g.: Telemetry. - -### Added - - Added `version` to Lilya client. ### Changed diff --git a/lilya/__init__.py b/lilya/__init__.py index 5e44a42..8f52a6e 100644 --- a/lilya/__init__.py +++ b/lilya/__init__.py @@ -1 +1 @@ -__version__ = "0.12.8" +__version__ = "0.12.9" diff --git a/lilya/apps.py b/lilya/apps.py index ee744a9..f2d0215 100644 --- a/lilya/apps.py +++ b/lilya/apps.py @@ -960,6 +960,8 @@ def get( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a GET route. @@ -984,6 +986,8 @@ def get( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def head( @@ -994,6 +998,8 @@ def head( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a HEAD route. @@ -1018,6 +1024,8 @@ def head( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def post( @@ -1028,6 +1036,8 @@ def post( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a POST route. @@ -1052,6 +1062,8 @@ def post( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def put( @@ -1062,6 +1074,8 @@ def put( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a PUT route. @@ -1086,6 +1100,8 @@ def put( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def patch( @@ -1096,6 +1112,8 @@ def patch( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a PATCH route. @@ -1120,6 +1138,8 @@ def patch( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def delete( @@ -1130,6 +1150,8 @@ def delete( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a DELETE route. @@ -1154,6 +1176,8 @@ def delete( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def trace( @@ -1164,6 +1188,8 @@ def trace( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a TRACE route. @@ -1188,6 +1214,8 @@ def trace( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def options( @@ -1198,6 +1226,8 @@ def options( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a OPTIONS route. @@ -1222,6 +1252,8 @@ def options( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def route( @@ -1233,6 +1265,8 @@ def route( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a generic route. @@ -1258,6 +1292,8 @@ def route( permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) def websocket( @@ -1267,6 +1303,8 @@ def websocket( middleware: Sequence[DefineMiddleware] | None = None, permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[[CallableDecorator], CallableDecorator]: """ Decorator for defining a WebSocket route. @@ -1289,6 +1327,8 @@ def websocket( middleware=middleware, permissions=permissions, exception_handlers=exception_handlers, + before_request=before_request, + after_request=after_request, ) diff --git a/lilya/routing.py b/lilya/routing.py index c1c1841..3707a29 100644 --- a/lilya/routing.py +++ b/lilya/routing.py @@ -1378,6 +1378,8 @@ def include( namespace: str | None = None, pattern: str | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> None: """ Adds an Include application into the routes. @@ -1392,6 +1394,8 @@ def include( namespace=namespace, pattern=pattern, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) self.routes.append(route) @@ -1412,6 +1416,8 @@ def add_route( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> None: """ Manually creates a `Path`` from a given handler. @@ -1425,6 +1431,8 @@ def add_route( exception_handlers=exception_handlers, name=name, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) self.routes.append(route) @@ -1436,6 +1444,8 @@ def add_websocket_route( middleware: Sequence[DefineMiddleware] | None = None, permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> None: """ Manually creates a `WebSocketPath` from a given handler. @@ -1447,6 +1457,8 @@ def add_websocket_route( permissions=permissions, name=name, exception_handlers=exception_handlers, + before_request=before_request, + after_request=after_request, ) self.routes.append(route) @@ -1510,6 +1522,8 @@ def get( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a GET route. @@ -1537,6 +1551,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1550,6 +1566,8 @@ def head( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a HEAD route. @@ -1577,6 +1595,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1590,6 +1610,8 @@ def post( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a POST route. @@ -1617,6 +1639,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1630,6 +1654,8 @@ def put( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a PUT route. @@ -1657,6 +1683,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1670,6 +1698,8 @@ def patch( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a PATCH route. @@ -1697,6 +1727,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1710,6 +1742,8 @@ def delete( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a DELETE route. @@ -1737,6 +1771,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1750,6 +1786,8 @@ def trace( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a TRACE route. @@ -1777,6 +1815,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1790,6 +1830,8 @@ def options( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a OPTIONS route. @@ -1817,6 +1859,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1831,6 +1875,8 @@ def route( permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, include_in_schema: bool = True, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a generic route. @@ -1858,6 +1904,8 @@ def wrapper(func: Callable) -> Callable: permissions=permissions, exception_handlers=exception_handlers, include_in_schema=include_in_schema, + before_request=before_request, + after_request=after_request, ) return func @@ -1870,6 +1918,8 @@ def websocket( middleware: Sequence[DefineMiddleware] | None = None, permissions: Sequence[DefinePermission] | None = None, exception_handlers: Mapping[Any, ExceptionHandler] | None = None, + before_request: Sequence[Callable[..., Any]] | None = None, + after_request: Sequence[Callable[..., Any]] | None = None, ) -> Callable[..., Any]: """ Decorator for defining a WebSocket route. @@ -1894,6 +1944,8 @@ def wrapper(func: Callable) -> Callable: middleware=middleware, permissions=permissions, exception_handlers=exception_handlers, + before_request=before_request, + after_request=after_request, ) return func