From ea9f7fdd89c4d36a8071f49d0724b25090339138 Mon Sep 17 00:00:00 2001
From: Leandro Damascena <lcdama@amazon.pt>
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 @@
+<!-- markdownlint-disable MD043 MD041 -->
+::: 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 @@
+<!-- markdownlint-disable MD043 MD041 -->
+::: 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 @@
+<!-- markdownlint-disable MD043 MD041 -->
+::: 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 @@
+<!-- markdownlint-disable MD043 MD041 -->
+::: 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