workers-runtime-sdk 1.6.7__tar.gz → 1.6.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/CHANGELOG.md +18 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/PKG-INFO +1 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/pyproject.toml +1 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/asgi.py +11 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/wsgi.py +9 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/pyproject.toml +3 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi-ws-disconnect/tests/test_ws_disconnect.py +43 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi-ws-disconnect/worker.py +35 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/uv.lock +1 -1
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/.gitignore +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/AGENTS.md +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/README.md +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_cloudflare_compat_flags.pyi +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_pyodide_entrypoint_helper.pyi +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_workers_sdk_entropy_import_context.pth +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_workers_sdk_entropy_import_context.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_workers_sdk_entropy_import_context_loader.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/__init__.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/blob.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/entrypoints.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/fetch.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/formdata.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/py.typed +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/request.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/response.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/rpc.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/types.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/utils.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/workers/workflows.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/public/data.json +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/public/hello.txt +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/conftest.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_analytics_engine.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_assets.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_d1.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_do.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_images.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_kv.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_mtls.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_queue.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_r2.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_ratelimit.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_vectorize.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_version_metadata.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_workflow.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/worker_durable_object.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/worker_workflow.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/conftest.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/test_bindings.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/test_fastapi.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/test_in_workerd.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/test_web_frameworks.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/_client.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/conftest.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/__init__.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/api_urls.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/auth_backend.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/drf_auth.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/drf_serializers.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/drf_throttling.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/drf_views.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/forms.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/middleware.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/templatetags/__init__.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/templatetags/custom_tags.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/urls.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/django_app/views.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/templates/base.html +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/templates/context_test.html +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/templates/csrf_form.html +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/templates/hello.html +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_async_utilities.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_auth.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_caching.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_cors.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_csrf.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_auth_permissions.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_content_negotiation.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_serializers.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_throttling.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_versioning.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_drf_views.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_error_handling.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_file_uploads.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_forms.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_middleware.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_pagination.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_request_response.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_sessions.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_signals.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_streaming.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_templates.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_url_routing.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/test_views_basic.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/src/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/django-async/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/public/data.json +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/public/index.html +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/public/style.css +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/src/_client.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/src/conftest.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/src/test_assets.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/src/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/web-frameworks-test/fastapi-tests/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/asgi.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/tests/test_asgi.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi-ws-disconnect/asgi-ws-disconnect.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi-ws-disconnect/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi-ws-disconnect/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object/durable-object.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-abort/durable-object-abort.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-abort/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-abort/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-abort/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-inheritance/durable-object-inheritance.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-inheritance/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-inheritance/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-inheritance/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-websocket/durable-object-websocket.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-websocket/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-websocket/tester.js +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-websocket/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object-websocket/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/entropy-patches.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_aiohttp_websocket.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_langsmith.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_numpy.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_pydantic.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_rust_packages.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/tests/test_ssl_avoidance.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/python-rpc.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/worker.js +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/sdk.wd-test +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/server.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/tests/test_sdk.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/pyproject.toml +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/worker.py +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/wsgi.wd-test +0 -0
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v1.6.9 (2026-08-10)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **runtime-sdk**: Deliver binary WebSocket frames as ASGI `bytes`
|
|
10
|
+
([#164](https://github.com/cloudflare/workers-py/pull/164),
|
|
11
|
+
[`44ca368`](https://github.com/cloudflare/workers-py/commit/44ca36818367af23ffd0c76f5d2dc7588219b340))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## v1.6.8 (2026-08-05)
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **runtime-sdk**: Do not include HTTP body for null body status codes
|
|
19
|
+
([#162](https://github.com/cloudflare/workers-py/pull/162),
|
|
20
|
+
[`693d594`](https://github.com/cloudflare/workers-py/commit/693d5945fd6531beb0d9d2fd3c97bf7ee2c8f1f3))
|
|
21
|
+
|
|
22
|
+
|
|
5
23
|
## v1.6.7 (2026-08-05)
|
|
6
24
|
|
|
7
25
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: workers-runtime-sdk
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.9
|
|
4
4
|
Summary: Python SDK for Cloudflare Workers
|
|
5
5
|
Project-URL: Homepage, https://github.com/cloudflare/workers-py
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/cloudflare/workers-py/issues
|
|
@@ -294,6 +294,9 @@ async def process_websocket(app: Any, req: "Request | js.Request") -> js.Respons
|
|
|
294
294
|
|
|
295
295
|
client, server = WebSocketPair.new().object_values()
|
|
296
296
|
server.accept()
|
|
297
|
+
# Binary frames otherwise arrive as Blob (observed under wrangler dev),
|
|
298
|
+
# which cannot be read synchronously in the message callback.
|
|
299
|
+
server.binaryType = "arraybuffer"
|
|
297
300
|
queue = Queue()
|
|
298
301
|
|
|
299
302
|
def onopen(evt):
|
|
@@ -312,7 +315,14 @@ async def process_websocket(app: Any, req: "Request | js.Request") -> js.Respons
|
|
|
312
315
|
queue.put_nowait(msg)
|
|
313
316
|
|
|
314
317
|
def onmessage(evt):
|
|
315
|
-
|
|
318
|
+
data = evt.data
|
|
319
|
+
if isinstance(data, str):
|
|
320
|
+
msg = {"type": "websocket.receive", "text": data}
|
|
321
|
+
else:
|
|
322
|
+
# Binary frames arrive as an ArrayBuffer; the ASGI spec requires
|
|
323
|
+
# them under "bytes" (frameworks like Starlette dispatch on which
|
|
324
|
+
# key is present, so labeling them "text" breaks receive_bytes()).
|
|
325
|
+
msg = {"type": "websocket.receive", "bytes": data.to_bytes()}
|
|
316
326
|
queue.put_nowait(msg)
|
|
317
327
|
|
|
318
328
|
server.onopen = onopen
|
|
@@ -10,6 +10,7 @@ import js
|
|
|
10
10
|
from workers import Context, Request
|
|
11
11
|
|
|
12
12
|
logger = logging.getLogger("wsgi")
|
|
13
|
+
NULL_BODY_STATUSES = frozenset({101, 103, 204, 205, 304})
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
def _wsgi_native_string(value: str) -> str:
|
|
@@ -230,7 +231,8 @@ def _make_streaming_response(
|
|
|
230
231
|
|
|
231
232
|
# WSGI status is e.g. "200 OK"; split into code + reason phrase.
|
|
232
233
|
code_str, _, reason = status.partition(" ")
|
|
233
|
-
|
|
234
|
+
code = int(code_str)
|
|
235
|
+
options: dict[str, Any] = {"status": code}
|
|
234
236
|
if reason:
|
|
235
237
|
options["statusText"] = reason
|
|
236
238
|
|
|
@@ -240,6 +242,12 @@ def _make_streaming_response(
|
|
|
240
242
|
js_headers.append(key, value)
|
|
241
243
|
options["headers"] = js_headers
|
|
242
244
|
|
|
245
|
+
if code in NULL_BODY_STATUSES:
|
|
246
|
+
# 101/103/204/205/304 must not carry a body per the Fetch spec.
|
|
247
|
+
# https://fetch.spec.whatwg.org/#null-body-status
|
|
248
|
+
on_close()
|
|
249
|
+
return Response.new(None, **options)
|
|
250
|
+
|
|
243
251
|
proxies: list[Any] = []
|
|
244
252
|
done = False
|
|
245
253
|
|
|
@@ -3,7 +3,9 @@ name = "django-async-test"
|
|
|
3
3
|
version = "0.1.0"
|
|
4
4
|
requires-python = ">=3.12"
|
|
5
5
|
dependencies = [
|
|
6
|
-
|
|
6
|
+
# https://github.com/django/django/pull/21438/changes#r3399119797
|
|
7
|
+
# Remove this constraint when drf releases a version that supports Django 6.1
|
|
8
|
+
"django<6.1",
|
|
7
9
|
"djangorestframework",
|
|
8
10
|
"django-cors-headers",
|
|
9
11
|
"pytest",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import contextlib
|
|
2
3
|
|
|
3
4
|
import pytest
|
|
4
5
|
from pyodide.ffi import create_proxy, to_js
|
|
@@ -70,3 +71,45 @@ async def test_client_close_reaches_app_as_disconnect():
|
|
|
70
71
|
return
|
|
71
72
|
await asyncio.sleep(0.2)
|
|
72
73
|
pytest.fail("the app never observed the client's disconnect")
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@contextlib.asynccontextmanager
|
|
77
|
+
async def _ws_session(path):
|
|
78
|
+
"""Accepted client socket, always closed again.
|
|
79
|
+
|
|
80
|
+
A test that raises before closing leaves the app awaiting receive(), and
|
|
81
|
+
the runtime keeps the request alive for that task, so the whole worker
|
|
82
|
+
invocation hangs instead of reporting the failure.
|
|
83
|
+
"""
|
|
84
|
+
response = await _ws_connect(path)
|
|
85
|
+
ws = response.webSocket
|
|
86
|
+
assert ws is not None
|
|
87
|
+
ws.accept()
|
|
88
|
+
# Without this the payload arrives as a Blob, which cannot be read
|
|
89
|
+
# synchronously in the message callback.
|
|
90
|
+
ws.binaryType = "arraybuffer"
|
|
91
|
+
try:
|
|
92
|
+
yield ws
|
|
93
|
+
finally:
|
|
94
|
+
ws.close()
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@pytest.mark.asyncio
|
|
98
|
+
async def test_text_frame_arrives_as_asgi_text():
|
|
99
|
+
async with _ws_session("/ws-echo") as ws:
|
|
100
|
+
message = _listen(ws, "message")
|
|
101
|
+
ws.send("hello")
|
|
102
|
+
evt = await asyncio.wait_for(message, TIMEOUT_S)
|
|
103
|
+
assert evt.data == "text=hello"
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@pytest.mark.asyncio
|
|
107
|
+
async def test_binary_frame_arrives_as_asgi_bytes():
|
|
108
|
+
async with _ws_session("/ws-echo") as ws:
|
|
109
|
+
message = _listen(ws, "message")
|
|
110
|
+
payload = b"\x00\x01binary"
|
|
111
|
+
ws.send(to_js(payload))
|
|
112
|
+
evt = await asyncio.wait_for(message, TIMEOUT_S)
|
|
113
|
+
data = evt.data
|
|
114
|
+
assert not isinstance(data, str), f"delivered to the app as text: {data!r}"
|
|
115
|
+
assert data.to_bytes() == b"bytes=" + payload
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import os
|
|
3
3
|
import sys
|
|
4
|
+
from urllib.parse import urlsplit
|
|
4
5
|
|
|
5
6
|
import pytest
|
|
6
7
|
from pyodide.webloop import WebLoop
|
|
@@ -49,13 +50,46 @@ class WSWatchApp:
|
|
|
49
50
|
return
|
|
50
51
|
|
|
51
52
|
|
|
53
|
+
class WSEchoApp:
|
|
54
|
+
"""Accepts and echoes each frame back tagged with the ASGI key it arrived
|
|
55
|
+
under ("bytes=" / "text=" prefix), so tests can detect frames delivered
|
|
56
|
+
under the wrong key (an untagged echo would bounce a mislabeled frame
|
|
57
|
+
opaquely and pass anyway)."""
|
|
58
|
+
|
|
59
|
+
async def __call__(self, scope, receive, send):
|
|
60
|
+
if scope["type"] == "lifespan":
|
|
61
|
+
await _drain_lifespan(receive, send)
|
|
62
|
+
return
|
|
63
|
+
message = await receive()
|
|
64
|
+
assert message["type"] == "websocket.connect"
|
|
65
|
+
await send({"type": "websocket.accept"})
|
|
66
|
+
while True:
|
|
67
|
+
message = await receive()
|
|
68
|
+
if message["type"] == "websocket.disconnect":
|
|
69
|
+
return
|
|
70
|
+
if message.get("bytes") is not None:
|
|
71
|
+
await send(
|
|
72
|
+
{"type": "websocket.send", "bytes": b"bytes=" + message["bytes"]}
|
|
73
|
+
)
|
|
74
|
+
else:
|
|
75
|
+
text = message.get("text")
|
|
76
|
+
# text is always str once frames are labeled correctly; repr()
|
|
77
|
+
# keeps a regression readable instead of timing out on a
|
|
78
|
+
# TypeError inside the app.
|
|
79
|
+
reply = "text=" + (text if isinstance(text, str) else repr(text))
|
|
80
|
+
await send({"type": "websocket.send", "text": reply})
|
|
81
|
+
|
|
82
|
+
|
|
52
83
|
ws_app = WSWatchApp()
|
|
84
|
+
echo_app = WSEchoApp()
|
|
53
85
|
|
|
54
86
|
|
|
55
87
|
class Default(WorkerEntrypoint):
|
|
56
88
|
async def fetch(self, request):
|
|
57
89
|
if (request.headers.get("upgrade") or "").lower() == "websocket":
|
|
58
|
-
|
|
90
|
+
path = urlsplit(request.url).path
|
|
91
|
+
app = echo_app if path == "/ws-echo" else ws_app
|
|
92
|
+
return await asgi.websocket(app, request)
|
|
59
93
|
import json
|
|
60
94
|
|
|
61
95
|
from workers import Response
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_workers_sdk_entropy_import_context.pth
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/src/_workers_sdk_entropy_import_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/public/data.json
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/public/hello.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_assets.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_images.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_mtls.py
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_ratelimit.py
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_vectorize.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/test_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/bindings-test/src/worker_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/asgi.wd-test
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/pyproject.toml
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/tests/test_asgi.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/asgi/wrangler.jsonc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/durable-object/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/entropy-patches/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/worker.js
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/worker.py
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/python-rpc/wrangler.jsonc
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/tests/test_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/sdk/wrangler.jsonc
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/wrangler.jsonc
RENAMED
|
File without changes
|
{workers_runtime_sdk-1.6.7 → workers_runtime_sdk-1.6.9}/tests/workerd-test/wsgi/wsgi.wd-test
RENAMED
|
File without changes
|