Skip to content

Bug: multiValueQueryStringParameters interferes with queryStringParameters #7993

@aalvrz

Description

@aalvrz

Expected Behaviour

When using both queryStringParameters and multiValueQueryStringParameters I expect all annotated query parameters to be set in my router handler.

Current Behaviour

If multiValueQueryStringParameters is used for one parameter and queryStringParameters for another, the latter will not be set in the router handler.

Code snippet

from typing import Annotated, Optional

from aws_lambda_powertools.event_handler.openapi.params import Query


@router.get("/foobar")
def foobar(
    ids: Annotated[Optional[list[str]], Query()] = None,
    status: Annotated[Optional[str], Query()] = None,
):
    assert ids  # This passes
    assert status is not None  # This fails


def test_issue():
    event = {
        "multiValueQueryStringParameters": {"ids": ["1", "2", "3"]},
        "queryStringParameters": {"status": "fizzbuzz"},
    }
    
    # Actually uses rest resolver
    response = handler(event, lambda_context)

Possible Solution

No response

Steps to Reproduce

Run test provided in code snippet.

Powertools for AWS Lambda (Python) version

3.21.0

AWS Lambda function runtime

3.13

Packaging format used

PyPi

Debugging logs

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

Status

Triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions