• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zappa / Zappa / 35287688197
75%

Build:
DEFAULT BRANCH: master
Ran 17 Sep 2026 11:43PM UTC
Jobs 6
Files 14
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Sep 2026 11:37PM UTC coverage: 74.755% (+0.01%) from 74.744%
35287688197

push

github

web-flow
:bug: Use rawQueryString for API Gateway v2 to preserve repeated query params (#1473)

API Gateway payload format 2.0 has no multiValueQueryStringParameters and
flattens repeated parameters into a comma-joined value in
queryStringParameters (?id=1&id=2 => {"id": "1,2"}).
process_lambda_payload_v2 read that lossy field, so applications saw a
single value "1,2" instead of two, breaking anything relying on repeated
parameters (Wagtail choosers, request.GET.getlist, django-filter, DRF).

Build QUERY_STRING from rawQueryString instead, which API Gateway delivers
verbatim and already percent-encoded, so it is passed through without
urlencode (double-escaping) or unquote (which would destroy a literal &
or = inside a value). This also preserves a literal comma in a single
value, which queryStringParameters cannot express.

The presence check is "rawQueryString" in event_info rather than
truthiness, so an empty query string does not fall through to the legacy
path. Invokers other than API Gateway may send a v2-shaped event with no
rawQueryString; that fallback now uses doseq=True to match the v1
multi-value branch.

zappa/asgi.py calls the same function, so ASGI apps are fixed too, as are
Lambda Function URLs, which use payload format 2.0 regardless of the
apigateway_version setting. v1 (REST API) and ALB are unchanged.

This was invisible to the suite because every v2 fixture used
"rawQueryString": "" and the only v2 QUERY_STRING assertion checked for
"". Adds regression tests at the WSGI, ASGI and handler levels.

Closes #1472

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: monkut <shane.cousins@gmail.com>

3657 of 4892 relevant lines covered (74.75%)

4.49 hits per line

Jobs
ID Job ID Ran Files Coverage
1 py3.11 - 35287688197.1 17 Sep 2026 11:47PM UTC 14
74.75
GitHub Action Run
2 py3.13 - 35287688197.2 17 Sep 2026 11:47PM UTC 14
74.75
GitHub Action Run
3 py3.10 - 35287688197.3 17 Sep 2026 11:48PM UTC 14
74.75
GitHub Action Run
4 py3.12 - 35287688197.4 17 Sep 2026 11:46PM UTC 14
74.75
GitHub Action Run
5 py3.14 - 35287688197.5 17 Sep 2026 11:43PM UTC 14
74.75
GitHub Action Run
6 py3.9 - 35287688197.6 17 Sep 2026 11:49PM UTC 14
74.75
GitHub Action Run
Source Files on build 35287688197
  • Tree
  • List 14
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35287688197
  • f978a373 on github
  • Prev Build on master (#34915531808)
  • Next Build on master (#35869973244)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc