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

zappa / Zappa / 22667258745
74%

Build:
DEFAULT BRANCH: master
Ran 04 Mar 2026 11:32AM UTC
Jobs 6
Files 13
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

04 Mar 2026 11:24AM UTC coverage: 72.753% (-1.0%) from 73.738%
22667258745

push

github

web-flow
Add WebSocket API Gateway support (#1428)

* Add WebSocket API Gateway support via decorators, base class, and auto-provisioned infrastructure

Introduces zappa.websocket module with @on_connect, @on_disconnect, @on_message
decorators and ZappaWebSocketServer base class for handling WebSocket connections.
Auto-detects usage and provisions WebSocket API Gateway resources via CloudFormation.

Closes #1427

* Add WebSocket support section to README

Documents decorator and base class usage, send_message helper,
auto-detection behavior, and explicit websocket_enabled setting.

* Add validation for required WebSocket route handlers

Raises WebSocketConfigurationError on first WebSocket event if handlers
are registered but $connect or $default (message) routes are missing.
$disconnect remains optional.

* Fix README TOC format to match test expectations

Restore double blank line after doctoc header comment that the
test_readmetoc test requires.

* Add ManageConnections IAM permission and remove websocket_enabled setting

Auto-detection of zappa.websocket imports makes the explicit
websocket_enabled setting redundant — removed it from cli.py and README.

Added execute-api:ManageConnections to the Lambda execution role when
WebSocket is detected, fixing send_message() AccessDeniedException
found during E2E testing.

* Update README WebSocket examples with complete app.py samples

Both decorator and base class examples now show full, copy-paste-ready
app.py files with Flask app, logging, and realistic handler bodies.

* Address PR review: bytes payload, scoped IAM, skip venvs, docstring

- send_message() now always encodes Data to bytes (utf-8)
- ManageConnections IAM ARN scoped to region/account via STS
- _detect_websocket_usage() skips venv/env/.venv directories
- ZappaWebSocketServer docstring clarifies required overrides
- Tests updated to assert bytes payloads

* Shorten WebSocket API name suffix to -ws

API Gateway V2 names are limited to 128 characters... (continued)

3343 of 4595 relevant lines covered (72.75%)

4.36 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
28
77.14
-1.53% handler.py
155
77.5
0.59% core.py
238
73.77
0.5% cli.py
Jobs
ID Job ID Ran Files Coverage
1 py3.14 - 22667258745.1 04 Mar 2026 11:32AM UTC 13
72.71
GitHub Action Run
2 py3.12 - 22667258745.2 04 Mar 2026 11:35AM UTC 13
72.67
GitHub Action Run
3 py3.9 - 22667258745.3 04 Mar 2026 11:35AM UTC 13
72.67
GitHub Action Run
4 py3.10 - 22667258745.4 04 Mar 2026 11:35AM UTC 13
72.67
GitHub Action Run
5 py3.13 - 22667258745.5 04 Mar 2026 11:34AM UTC 13
72.69
GitHub Action Run
6 py3.11 - 22667258745.6 04 Mar 2026 11:35AM UTC 13
72.67
GitHub Action Run
Source Files on build 22667258745
  • Tree
  • List 13
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #22667258745
  • 8f338c92 on github
  • Prev Build on master (#21124079114)
  • Next Build on master (#22699260364)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc