From ea9f7fdd89c4d36a8071f49d0724b25090339138 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Tue, 4 Feb 2025 12:12:10 +0000 Subject: [PATCH] Mkdocstrings - Event handler --- aws_lambda_powertools/event_handler/api_gateway.py | 12 ++++++++++-- .../event_handler/middlewares/base.py | 2 +- .../event_handler/middlewares/openapi_validation.py | 2 +- .../event_handler/middlewares/schema_validation.py | 2 +- .../event_handler/openapi/params.py | 9 ++++----- .../event_handler/openapi/swagger_ui/html.py | 2 +- aws_lambda_powertools/logging/exceptions.py | 1 + aws_lambda_powertools/logging/logger.py | 1 + .../metrics/provider/datadog/datadog.py | 4 ---- aws_lambda_powertools/tracing/base.py | 1 + docs/api_doc/event_handler/api_gateway.md | 2 ++ docs/api_doc/event_handler/appsync.md | 2 ++ docs/api_doc/event_handler/middleware.md | 2 ++ docs/api_doc/event_handler/openapi.md | 2 ++ mkdocs.yml | 5 +++++ 15 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 docs/api_doc/event_handler/api_gateway.md create mode 100644 docs/api_doc/event_handler/appsync.md create mode 100644 docs/api_doc/event_handler/middleware.md create mode 100644 docs/api_doc/event_handler/openapi.md diff --git a/aws_lambda_powertools/event_handler/api_gateway.py b/aws_lambda_powertools/event_handler/api_gateway.py index 1485c563a06..4e2be256ecb 100644 --- a/aws_lambda_powertools/event_handler/api_gateway.py +++ b/aws_lambda_powertools/event_handler/api_gateway.py @@ -313,10 +313,10 @@ def __init__( middlewares: list[Callable[..., Response]] | None = None, ): """ + Internally used Route Configuration Parameters ---------- - method: str The HTTP method, example "GET" path: str @@ -908,6 +908,8 @@ def build(self, event: ResponseEventT, cors: CORSConfig | None = None) -> dict[s class BaseRouter(ABC): + """Base class for Routing""" + current_event: BaseProxyEvent lambda_context: LambdaContext context: dict @@ -1459,7 +1461,7 @@ def _registered_api_adapter(app: ApiGatewayResolver, next_middleware: Callable[. class ApiGatewayResolver(BaseRouter): - """API Gateway and ALB proxy resolver + """API Gateway, VPC Laticce, Bedrock and ALB proxy resolver Examples -------- @@ -2570,6 +2572,8 @@ def register_exception_handler(func: Callable): class APIGatewayRestResolver(ApiGatewayResolver): + """Amazon API Gateway REST and HTTP API v1 payload resolver""" + current_event: APIGatewayProxyEvent def __init__( @@ -2650,6 +2654,8 @@ def _compile_regex(rule: str, base_regex: str = _ROUTE_REGEX): class APIGatewayHttpResolver(ApiGatewayResolver): + """Amazon API Gateway HTTP API v2 payload resolver""" + current_event: APIGatewayProxyEventV2 def __init__( @@ -2685,6 +2691,8 @@ def _get_base_path(self) -> str: class ALBResolver(ApiGatewayResolver): + """Amazon Application Load Balancer (ALB) resolver""" + current_event: ALBEvent def __init__( diff --git a/aws_lambda_powertools/event_handler/middlewares/base.py b/aws_lambda_powertools/event_handler/middlewares/base.py index 3998c7c80bd..5b4f82b405f 100644 --- a/aws_lambda_powertools/event_handler/middlewares/base.py +++ b/aws_lambda_powertools/event_handler/middlewares/base.py @@ -26,7 +26,7 @@ class BaseMiddlewareHandler(Generic[EventHandlerInstance], ABC): This is the middleware handler function where middleware logic is implemented. The next middleware handler is represented by `next_middleware`, returning a Response object. - Examples + Example -------- **Correlation ID Middleware** diff --git a/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py b/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py index a73fd454458..555ec519bf6 100644 --- a/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py +++ b/aws_lambda_powertools/event_handler/middlewares/openapi_validation.py @@ -37,7 +37,7 @@ class OpenAPIValidationMiddleware(BaseMiddlewareHandler): Lambda handler. It also validates the response against the OpenAPI schema defined by the Lambda handler. It should not be used directly, but rather through the `enable_validation` parameter of the `ApiGatewayResolver`. - Examples + Example -------- ```python diff --git a/aws_lambda_powertools/event_handler/middlewares/schema_validation.py b/aws_lambda_powertools/event_handler/middlewares/schema_validation.py index c31d15bec03..c24fff0cbe0 100644 --- a/aws_lambda_powertools/event_handler/middlewares/schema_validation.py +++ b/aws_lambda_powertools/event_handler/middlewares/schema_validation.py @@ -18,7 +18,7 @@ class SchemaValidationMiddleware(BaseMiddlewareHandler): """Middleware to validate API request and response against JSON Schema using the [Validation utility](https://docs.powertools.aws.dev/lambda/python/latest/utilities/validation/). - Examples + Example -------- **Validating incoming event** diff --git a/aws_lambda_powertools/event_handler/openapi/params.py b/aws_lambda_powertools/event_handler/openapi/params.py index d346375dd44..5211d678a2b 100644 --- a/aws_lambda_powertools/event_handler/openapi/params.py +++ b/aws_lambda_powertools/event_handler/openapi/params.py @@ -879,8 +879,6 @@ def get_flat_dependant( ---------- dependant: Dependant The dependant model to flatten - skip_repeats: bool - If True, child Dependents already visited will be skipped to avoid duplicates visited: list[CacheKey], optional Keeps track of visited Dependents to avoid infinite recursion. Defaults to empty list. @@ -932,8 +930,9 @@ def analyze_param( ModelField | None The type annotation and the Pydantic field representing the parameter """ - field_info, type_annotation = \ - get_field_info_and_type_annotation(annotation, value, is_path_param, is_response_param) + field_info, type_annotation = get_field_info_and_type_annotation( + annotation, value, is_path_param, is_response_param, + ) # If the value is a FieldInfo, we use it as the FieldInfo for the parameter if isinstance(value, FieldInfo): @@ -964,7 +963,7 @@ def analyze_param( def get_field_info_and_type_annotation( - annotation, value, is_path_param: bool, is_response_param: bool + annotation, value, is_path_param: bool, is_response_param: bool, ) -> tuple[FieldInfo | None, Any]: """ Get the FieldInfo and type annotation from an annotation and value. diff --git a/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py b/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py index 70d98743bcf..6bcbcff50a4 100644 --- a/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py +++ b/aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py @@ -22,7 +22,7 @@ def generate_swagger_html( spec: str The OpenAPI spec swagger_js: str - Swagger UI JavaScript source code or URL + Swagger UI JavaScript source code or URL swagger_css: str Swagger UI CSS source code or URL swagger_base_url: str diff --git a/aws_lambda_powertools/logging/exceptions.py b/aws_lambda_powertools/logging/exceptions.py index 6202c8105f4..488234608f0 100644 --- a/aws_lambda_powertools/logging/exceptions.py +++ b/aws_lambda_powertools/logging/exceptions.py @@ -2,4 +2,5 @@ class InvalidLoggerSamplingRateError(Exception): """ Logger configured with Invalid Sampling value """ + pass diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index d643e87ca3a..840d068d438 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -3,6 +3,7 @@ !!! abstract "Usage Documentation" [`Logger`](../../core/logger.md) """ + from __future__ import annotations import functools diff --git a/aws_lambda_powertools/metrics/provider/datadog/datadog.py b/aws_lambda_powertools/metrics/provider/datadog/datadog.py index d79782363f4..0442af3f86c 100644 --- a/aws_lambda_powertools/metrics/provider/datadog/datadog.py +++ b/aws_lambda_powertools/metrics/provider/datadog/datadog.py @@ -87,10 +87,6 @@ def add_metric( Timestamp in int for the metrics, default = time.time() tags: list[str] In format like ["tag:value", "tag2:value2"] - args: Any - extra args will be dropped for compatibility - kwargs: Any - extra kwargs will be converted into tags, e.g., add_metrics(sales=sam) -> tags=['sales:sam'] Examples -------- diff --git a/aws_lambda_powertools/tracing/base.py b/aws_lambda_powertools/tracing/base.py index bcce4122f7d..e095287ce62 100644 --- a/aws_lambda_powertools/tracing/base.py +++ b/aws_lambda_powertools/tracing/base.py @@ -3,6 +3,7 @@ !!! abstract "Usage Documentation" [`Tracer`](../../core/tracer.md) """ + from __future__ import annotations import abc diff --git a/docs/api_doc/event_handler/api_gateway.md b/docs/api_doc/event_handler/api_gateway.md new file mode 100644 index 00000000000..2d30a6c38c7 --- /dev/null +++ b/docs/api_doc/event_handler/api_gateway.md @@ -0,0 +1,2 @@ + +::: aws_lambda_powertools.event_handler.api_gateway diff --git a/docs/api_doc/event_handler/appsync.md b/docs/api_doc/event_handler/appsync.md new file mode 100644 index 00000000000..dd1ec4c12bb --- /dev/null +++ b/docs/api_doc/event_handler/appsync.md @@ -0,0 +1,2 @@ + +::: aws_lambda_powertools.event_handler.appsync diff --git a/docs/api_doc/event_handler/middleware.md b/docs/api_doc/event_handler/middleware.md new file mode 100644 index 00000000000..cd1fed521f2 --- /dev/null +++ b/docs/api_doc/event_handler/middleware.md @@ -0,0 +1,2 @@ + +::: aws_lambda_powertools.event_handler.middlewares diff --git a/docs/api_doc/event_handler/openapi.md b/docs/api_doc/event_handler/openapi.md new file mode 100644 index 00000000000..02c64c429f1 --- /dev/null +++ b/docs/api_doc/event_handler/openapi.md @@ -0,0 +1,2 @@ + +::: aws_lambda_powertools.event_handler.openapi diff --git a/mkdocs.yml b/mkdocs.yml index 68b5835efc4..5430dad21b0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -72,6 +72,11 @@ nav: - Base: api_doc/data_masking/base.md - Exception: api_doc/data_masking/exceptions.md - Provider: api_doc/data_masking/provider.md + - Event Handler: + - AppSync: api_doc/event_handler/appsync.md + - Middleware: api_doc/event_handler/middleware.md + - OpenAPI: api_doc/event_handler/openapi.md + - REST: api_doc/event_handler/api_gateway.md - Feature Flags: - AppConfig: api_doc/feature_flags/appconfig.md - Base: api_doc/feature_flags/base.md