Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
13 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions aws_lambda_powertools/event_handler/appsync.py
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ def resolver(self, type_name: str = "*", field_name: str | None = None) -> Calla
----------
type_name : str, optional
GraphQL type e.g., Query, Mutation, by default "*" meaning any
field_name : Optional[str], optional
field_name : str | None, optional
GraphQL field e.g., getTodo, createTodo, by default None

Returns
Expand Down Expand Up @@ -447,7 +447,7 @@ def batch_resolver(
----------
type_name : str, optional
GraphQL type e.g., Query, Mutation, by default "*" meaning any
field_name : Optional[str], optional
field_name : str | None, optional
GraphQL field e.g., getTodo, createTodo, by default None
raise_on_error : bool, optional
Whether to fail entire batch upon error, or handle errors gracefully (None), by default False
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def find_resolver(self, type_name: str, field_name: str) -> dict | None:
Field name
Return
----------
Optional[Dict]
dict | None
A dictionary with the resolver and if raise exception on error
"""
logger.debug(f"Looking for resolver for type={type_name}, field={field_name}.")
Expand Down
12 changes: 3 additions & 9 deletions aws_lambda_powertools/event_handler/graphql_appsync/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,14 @@ def resolver(self, type_name: str = "*", field_name: str | None = None) -> Calla
Examples
--------
```python
from typing import Optional

from aws_lambda_powertools.event_handler import AppSyncResolver
from aws_lambda_powertools.utilities.data_classes import AppSyncResolverEvent
from aws_lambda_powertools.utilities.typing import LambdaContext

app = AppSyncResolver()

@app.resolver(type_name="Query", field_name="getPost")
def related_posts(event: AppSyncResolverEvent) -> Optional[list]:
def related_posts(event: AppSyncResolverEvent) -> list | None:
return {"success": "ok"}

def lambda_handler(event, context: LambdaContext) -> dict:
Expand Down Expand Up @@ -76,16 +74,14 @@ def batch_resolver(
Examples
--------
```python
from typing import Optional

from aws_lambda_powertools.event_handler import AppSyncResolver
from aws_lambda_powertools.utilities.data_classes import AppSyncResolverEvent
from aws_lambda_powertools.utilities.typing import LambdaContext

app = AppSyncResolver()

@app.batch_resolver(type_name="Query", field_name="getPost")
def related_posts(event: AppSyncResolverEvent, id) -> Optional[list]:
def related_posts(event: AppSyncResolverEvent, id) -> list | None:
return {"post_id": id}

def lambda_handler(event, context: LambdaContext) -> dict:
Expand Down Expand Up @@ -127,16 +123,14 @@ def async_batch_resolver(
Examples
--------
```python
from typing import Optional

from aws_lambda_powertools.event_handler import AppSyncResolver
from aws_lambda_powertools.utilities.data_classes import AppSyncResolverEvent
from aws_lambda_powertools.utilities.typing import LambdaContext

app = AppSyncResolver()

@app.async_batch_resolver(type_name="Query", field_name="getPost")
async def related_posts(event: AppSyncResolverEvent, id) -> Optional[list]:
async def related_posts(event: AppSyncResolverEvent, id) -> list | None:
return {"post_id": id}

def lambda_handler(event, context: LambdaContext) -> dict:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -505,11 +505,11 @@ def _is_or_contains_sequence(annotation: Any) -> bool:

This function handles complex type annotations like:
- List[Model] - direct sequence
- Union[Model, List[Model]] - checks if any Union member is a sequence
- Optional[List[Model]] - Union[List[Model], None]
- RootModel[List[Model]] - checks if the RootModel wraps a sequence
- Optional[RootModel[List[Model]]] - Union member that is a RootModel
- RootModel[Union[Model, List[Model]]] - RootModel wrapping a Union with a sequence
- Union[Model, list[Model]] - checks if any Union member is a sequence
- list[Model] | None - Union[list[Model], None]
- RootModel[list[Model]] - checks if the RootModel wraps a sequence
- RootModel[list[Model]] | None - Union member that is a RootModel
- RootModel[Union[Model, list[Model]]] - RootModel wrapping a Union with a sequence
"""
# Direct sequence check
if field_annotation_is_sequence(annotation):
Expand Down
Loading