workers-runtime-sdk 1.9.0__tar.gz → 1.9.1__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.9.0 → workers_runtime_sdk-1.9.1}/CHANGELOG.md +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/PKG-INFO +1 -1
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/pyproject.toml +1 -1
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_workers_sdk_entropy_import_context.py +1 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/pyproject.toml +7 -2
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/conftest.py +11 -23
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/test_in_workerd.py +6 -15
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/pyproject.toml +3 -1
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/pyproject.toml +3 -1
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/worker.py +4 -11
- workers_runtime_sdk-1.9.1/tests/web-frameworks-test/flask-tests/pyproject.toml +9 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/asgi/pyproject.toml +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi/worker.py +2 -20
- workers_runtime_sdk-1.9.1/tests/workerd-test/asgi-ws-disconnect/pyproject.toml +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi-ws-disconnect/worker.py +2 -19
- workers_runtime_sdk-1.9.1/tests/workerd-test/durable-object/pyproject.toml +8 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/durable-object-abort/pyproject.toml +8 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/durable-object-inheritance/pyproject.toml +8 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/durable-object-websocket/pyproject.toml +8 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/pyproject.toml +5 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/entropy-patches/tests/test_jsonschema.py +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/worker.py +1 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/http-client/pyproject.toml +8 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/python-rpc/pyproject.toml +8 -0
- workers_runtime_sdk-1.9.1/tests/workerd-test/sdk/pyproject.toml +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/sdk/worker.py +2 -21
- workers_runtime_sdk-1.9.1/tests/workerd-test/wsgi/pyproject.toml +9 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/wsgi/worker.py +2 -20
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/uv.lock +12 -1
- workers_runtime_sdk-1.9.0/tests/web-frameworks-test/flask-tests/pyproject.toml +0 -8
- workers_runtime_sdk-1.9.0/tests/workerd-test/asgi/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/asgi-ws-disconnect/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/durable-object/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/durable-object-inheritance/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/durable-object-websocket/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/http-client/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/python-rpc/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/sdk/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/workflow/pyproject.toml +0 -5
- workers_runtime_sdk-1.9.0/tests/workerd-test/wsgi/pyproject.toml +0 -5
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/.gitignore +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/AGENTS.md +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/README.md +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_cloudflare_compat_flags.pyi +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_pyodide_entrypoint_helper.pyi +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_workers_sdk_package_patches.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_workers_sdk_patch_loader.pth +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_workers_sdk_patch_loader.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/asgi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/__init__.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/asgi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/blob.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/entrypoints.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/fetch.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/formdata.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/py.typed +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/request.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/response.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/rpc.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/types.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/utils.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/workflows.js +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/workflows.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/workers/wsgi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/public/data.json +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/public/hello.txt +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/conftest.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_analytics_engine.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_assets.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_d1.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_do.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_hyperdrive_mysql.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_hyperdrive_postgresql.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_images.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_kv.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_mtls.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_queue.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_r2.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_ratelimit.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_vectorize.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_version_metadata.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/test_workflow.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/worker_durable_object.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/src/worker_workflow.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/bindings-test/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/test_bindings.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/test_fastapi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/test_flask.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/test_web_frameworks.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/_client.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/conftest.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/__init__.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/api_urls.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/auth_backend.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/drf_auth.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/drf_serializers.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/drf_throttling.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/drf_views.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/forms.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/middleware.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/templatetags/__init__.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/templatetags/custom_tags.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/urls.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/django_app/views.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/templates/base.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/templates/context_test.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/templates/csrf_form.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/templates/hello.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_async_utilities.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_auth.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_caching.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_cors.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_csrf.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_auth_permissions.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_content_negotiation.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_serializers.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_throttling.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_versioning.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_drf_views.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_error_handling.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_file_uploads.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_forms.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_middleware.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_pagination.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_request_response.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_sessions.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_signals.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_streaming.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_templates.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_url_routing.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/test_views_basic.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/src/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/django-async/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/public/data.json +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/public/index.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/public/style.css +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/_client.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/conftest.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/static/app.css +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/static/data.json +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/static/hello.txt +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/static/index.html +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_assets.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_error_handling.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_platform_boundaries.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_platform_io.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_platform_lifecycle.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_response_types.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_routing.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_staticfiles.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_sync_handlers.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/src/test_websocket.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/fastapi-tests/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/flask-tests/src/test_response.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/flask-tests/src/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/web-frameworks-test/flask-tests/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi/asgi.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi/tests/test_asgi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi-ws-disconnect/asgi-ws-disconnect.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi-ws-disconnect/tests/test_ws_disconnect.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/asgi-ws-disconnect/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object/durable-object.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-abort/durable-object-abort.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-abort/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-abort/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-inheritance/durable-object-inheritance.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-inheritance/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-inheritance/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-websocket/durable-object-websocket.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-websocket/tester.js +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-websocket/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/durable-object-websocket/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/entropy-patches.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_aiohttp_websocket.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_langsmith.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_litestar.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_mcp.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_numpy.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_opentelemetry.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_pydantic.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_rust_packages.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/tests/test_ssl_avoidance.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/entropy-patches/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/http-client.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/origin.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/tests/test_http_client.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/tests/test_urllib_request.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/http-client/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/python-rpc/python-rpc.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/python-rpc/worker.js +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/python-rpc/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/python-rpc/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/sdk/sdk.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/sdk/server.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/sdk/tests/test_sdk.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/sdk/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0/tests/workerd-test/durable-object-abort → workers_runtime_sdk-1.9.1/tests/workerd-test/workflow}/pyproject.toml +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/workflow/worker.js +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/workflow/worker.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/workflow/workflow.wd-test +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/workflow/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/wsgi/tests/test_wsgi.py +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/wsgi/wrangler.jsonc +0 -0
- {workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/tests/workerd-test/wsgi/wsgi.wd-test +0 -0
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v1.9.1 (2026-09-29)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **runtime-sdk**: Add rpds to rust package entropy context
|
|
10
|
+
([#277](https://github.com/cloudflare/workers-py/pull/277),
|
|
11
|
+
[`a097b7c`](https://github.com/cloudflare/workers-py/commit/a097b7c5d2e5bba17f34d46abb6e39039d4673d4))
|
|
12
|
+
|
|
13
|
+
|
|
5
14
|
## v1.9.0 (2026-09-18)
|
|
6
15
|
|
|
7
16
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: workers-runtime-sdk
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.1
|
|
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
|
{workers_runtime_sdk-1.9.0 → workers_runtime_sdk-1.9.1}/src/_workers_sdk_entropy_import_context.py
RENAMED
|
@@ -49,6 +49,7 @@ class STATE:
|
|
|
49
49
|
@register_create_patch("tiktoken._tiktoken")
|
|
50
50
|
@register_exec_patch("cryptography.exceptions")
|
|
51
51
|
@register_exec_patch("jiter")
|
|
52
|
+
@register_exec_patch("rpds")
|
|
52
53
|
@register_exec_patch("uuid_utils._uuid_utils")
|
|
53
54
|
@contextmanager
|
|
54
55
|
def rust_package_context(module):
|
|
@@ -7,13 +7,18 @@ dependencies = [
|
|
|
7
7
|
"pytest-asyncio<1.2.0",
|
|
8
8
|
# These are for hyperdrive tests
|
|
9
9
|
"pg8000",
|
|
10
|
-
|
|
10
|
+
# There is a regression in upstream pymysql.
|
|
11
|
+
# Remove when the following PR is merged and released.
|
|
12
|
+
# https://github.com/PyMySQL/PyMySQL/pull/1275
|
|
13
|
+
"pymysql<=1.2.0",
|
|
11
14
|
"aiomysql",
|
|
12
15
|
"psycopg[binary]; python_version >= '3.14'",
|
|
13
16
|
"asyncpg; python_version >= '3.14'",
|
|
14
17
|
"cryptography",
|
|
15
18
|
"testlib",
|
|
19
|
+
"workers-runtime-sdk",
|
|
16
20
|
]
|
|
17
21
|
|
|
18
22
|
[tool.uv.sources]
|
|
19
|
-
testlib = { path = "../
|
|
23
|
+
testlib = { path = "../packages/testlib" }
|
|
24
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
4
|
import shutil
|
|
5
|
-
import subprocess
|
|
6
5
|
from collections.abc import Generator
|
|
7
6
|
from pathlib import Path
|
|
8
7
|
from typing import Any
|
|
@@ -12,6 +11,8 @@ from testlib.host import (
|
|
|
12
11
|
COMPAT_CONFIGS,
|
|
13
12
|
CompatConfig,
|
|
14
13
|
configure_compatibility,
|
|
14
|
+
link_packages,
|
|
15
|
+
pywrangler_sync,
|
|
15
16
|
)
|
|
16
17
|
from testlib.host import (
|
|
17
18
|
dev_server as run_dev_server,
|
|
@@ -21,9 +22,6 @@ from testlib.host import (
|
|
|
21
22
|
)
|
|
22
23
|
|
|
23
24
|
TEST_DIR: Path = Path(__file__).parent
|
|
24
|
-
WORKERS_PY: Path = TEST_DIR.parent.parent / "cli"
|
|
25
|
-
WORKERS_RUNTIME_SDK: Path = TEST_DIR.parent / "src"
|
|
26
|
-
TESTLIB: Path = TEST_DIR.parent.parent / "testlib"
|
|
27
25
|
|
|
28
26
|
DEV_STARTUP_TIMEOUT: int = 120
|
|
29
27
|
OPT_IN_MARKERS: tuple[str, ...] = ("hyperdrive",)
|
|
@@ -43,11 +41,6 @@ def pytest_collection_modifyitems(
|
|
|
43
41
|
item.add_marker(skip)
|
|
44
42
|
|
|
45
43
|
|
|
46
|
-
@pytest.fixture(scope="session", autouse=True)
|
|
47
|
-
def build_testlib():
|
|
48
|
-
subprocess.run(["uv", "build"], cwd=TESTLIB, check=True)
|
|
49
|
-
|
|
50
|
-
|
|
51
44
|
@pytest.fixture(
|
|
52
45
|
scope="module",
|
|
53
46
|
params=COMPAT_CONFIGS,
|
|
@@ -74,32 +67,27 @@ def dev_server(
|
|
|
74
67
|
worker_project_dir: Path,
|
|
75
68
|
compat_config: CompatConfig,
|
|
76
69
|
) -> Generator[str]:
|
|
77
|
-
"""Start a pywrangler dev server on a free port and yield its base URL.
|
|
70
|
+
"""Start a pywrangler dev server on a free port and yield its base URL.
|
|
71
|
+
|
|
72
|
+
The project is copied next to a ``packages`` symlink so that its
|
|
73
|
+
``../packages/...`` sources resolve and ``sync`` vendors the working-tree
|
|
74
|
+
testlib and runtime-sdk.
|
|
75
|
+
"""
|
|
78
76
|
tmp_path = tmp_path_factory.mktemp(f"{worker_project_dir.name}_dev")
|
|
79
77
|
target = tmp_path / worker_project_dir.name
|
|
80
78
|
shutil.copytree(worker_project_dir, target, ignore=shutil.ignore_patterns(".venv"))
|
|
81
|
-
|
|
79
|
+
link_packages(tmp_path)
|
|
82
80
|
env = os.environ | {"_PYODIDE_EXTRA_MOUNTS": str(tmp_path)}
|
|
83
81
|
|
|
84
82
|
wrangler_jsonc = target / "wrangler.jsonc"
|
|
85
83
|
configure_compatibility(wrangler_jsonc, compat_config)
|
|
86
84
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
subprocess.run(
|
|
90
|
-
[*pywrangler_cmd, "sync"],
|
|
91
|
-
cwd=target,
|
|
92
|
-
check=True,
|
|
93
|
-
env=env,
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
shutil.copytree(WORKERS_RUNTIME_SDK, target / "python_modules", dirs_exist_ok=True)
|
|
85
|
+
pywrangler_sync(target, env)
|
|
97
86
|
|
|
98
87
|
with run_dev_server(
|
|
99
88
|
target,
|
|
100
89
|
tmp_path,
|
|
101
90
|
env,
|
|
102
|
-
pywrangler_cmd,
|
|
103
91
|
startup_timeout=DEV_STARTUP_TIMEOUT,
|
|
104
92
|
readiness_path="/health",
|
|
105
93
|
require_success=True,
|
|
@@ -113,4 +101,4 @@ def register_in_worker_suites(
|
|
|
113
101
|
src_dir: Path,
|
|
114
102
|
marks: dict[str, pytest.MarkDecorator] | None = None,
|
|
115
103
|
) -> None:
|
|
116
|
-
register_testlib_suites(namespace, src_dir, marks=marks
|
|
104
|
+
register_testlib_suites(namespace, src_dir, marks=marks)
|
|
@@ -8,12 +8,12 @@ from conftest import (
|
|
|
8
8
|
COMPAT_CONFIGS,
|
|
9
9
|
CompatConfig,
|
|
10
10
|
configure_compatibility,
|
|
11
|
+
link_packages,
|
|
12
|
+
pywrangler_sync,
|
|
11
13
|
)
|
|
12
14
|
|
|
13
15
|
TEST_DIR = Path(__file__).parent
|
|
14
16
|
WORKERD_TESTS = TEST_DIR / "workerd-test"
|
|
15
|
-
WORKERS_PY = TEST_DIR.parent.parent / "cli"
|
|
16
|
-
WORKERS_RUNTIME_SDK = TEST_DIR.parent / "src"
|
|
17
17
|
DISK_SERVICE_NAME = "TEST_TMPDIR"
|
|
18
18
|
|
|
19
19
|
|
|
@@ -123,23 +123,14 @@ def test_in_workerd( # noqa: PLR0913, PLR0917 (too-many-arguments)
|
|
|
123
123
|
target = tmp_path / test_dir.name
|
|
124
124
|
disk_service_dir = target / DISK_SERVICE_NAME
|
|
125
125
|
shutil.copytree(test_dir, target, ignore=shutil.ignore_patterns(".venv"))
|
|
126
|
+
# Makes the project's `../packages/{runtime-sdk,testlib}` sources resolve
|
|
127
|
+
# so `sync` vendors the working-tree SDK and testlib.
|
|
128
|
+
link_packages(tmp_path)
|
|
126
129
|
disk_service_dir.mkdir(exist_ok=True)
|
|
127
130
|
|
|
128
131
|
configure_compatibility(target / "wrangler.jsonc", compat_config)
|
|
129
132
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
subprocess.run(
|
|
133
|
-
[*pywrangler_cmd, "sync"],
|
|
134
|
-
cwd=target,
|
|
135
|
-
check=True,
|
|
136
|
-
env=os.environ | {"_PYODIDE_EXTRA_MOUNTS": str(tmp_path)},
|
|
137
|
-
)
|
|
138
|
-
|
|
139
|
-
# Copy runtime-sdk to the python modules as well
|
|
140
|
-
# FIXME: remove this and pass runtime-sdk as a dependency explicitly after
|
|
141
|
-
# https://github.com/cloudflare/workers-py/pull/81 is merged
|
|
142
|
-
shutil.copytree(WORKERS_RUNTIME_SDK, target / "python_modules", dirs_exist_ok=True)
|
|
133
|
+
pywrangler_sync(target, os.environ | {"_PYODIDE_EXTRA_MOUNTS": str(tmp_path)})
|
|
143
134
|
|
|
144
135
|
modules = embed(target / "python_modules", target, level=1) + embed(
|
|
145
136
|
target / "tests", target, level=1
|
|
@@ -11,7 +11,9 @@ dependencies = [
|
|
|
11
11
|
"pytest",
|
|
12
12
|
"pytest-asyncio<1.2.0",
|
|
13
13
|
"testlib",
|
|
14
|
+
"workers-runtime-sdk",
|
|
14
15
|
]
|
|
15
16
|
|
|
16
17
|
[tool.uv.sources]
|
|
17
|
-
testlib = { path = "../
|
|
18
|
+
testlib = { path = "../packages/testlib" }
|
|
19
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -8,7 +8,9 @@ dependencies = [
|
|
|
8
8
|
"pytest",
|
|
9
9
|
"pytest-asyncio<1.2.0",
|
|
10
10
|
"testlib",
|
|
11
|
+
"workers-runtime-sdk",
|
|
11
12
|
]
|
|
12
13
|
|
|
13
14
|
[tool.uv.sources]
|
|
14
|
-
testlib = { path = "../
|
|
15
|
+
testlib = { path = "../packages/testlib" }
|
|
16
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -30,21 +30,12 @@ from fastapi.responses import (
|
|
|
30
30
|
from fastapi.responses import Response as FastAPIResponse
|
|
31
31
|
from fastapi.staticfiles import StaticFiles
|
|
32
32
|
from pydantic import BaseModel
|
|
33
|
-
from pyodide.webloop import WebLoop
|
|
34
33
|
from starlette.background import BackgroundTask
|
|
35
34
|
from starlette.middleware.gzip import GZipMiddleware
|
|
36
|
-
from testlib.entrypoint import TestRunner
|
|
35
|
+
from testlib.entrypoint import RunSuiteRequest, TestRunner
|
|
37
36
|
|
|
38
37
|
import asgi
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
async def _noop(*args):
|
|
42
|
-
pass
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
WebLoop.shutdown_asyncgens = _noop
|
|
46
|
-
WebLoop.shutdown_default_executor = _noop
|
|
47
|
-
|
|
48
39
|
STATIC_DIR = Path(__file__).parent / "static"
|
|
49
40
|
|
|
50
41
|
|
|
@@ -603,7 +594,9 @@ class FastAPIAppPlugin:
|
|
|
603
594
|
@app.get("/run-tests/{suite_name:path}")
|
|
604
595
|
async def run_suite(suite_name: str, request: Request):
|
|
605
596
|
runner = TestRunner(request.scope["env"], extra_plugins=[FastAPIAppPlugin()])
|
|
606
|
-
result = runner.run_suite(
|
|
597
|
+
result = runner.run_suite(
|
|
598
|
+
suite_name, RunSuiteRequest.from_query_params(request.query_params)
|
|
599
|
+
)
|
|
607
600
|
return JSONResponse(result.payload, status_code=result.status)
|
|
608
601
|
|
|
609
602
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "flask-tests"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
dependencies = ["flask", "pytest", "testlib", "workers-runtime-sdk"]
|
|
6
|
+
|
|
7
|
+
[tool.uv.sources]
|
|
8
|
+
testlib = { path = "../packages/testlib" }
|
|
9
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "test"
|
|
3
|
+
version = "0.0.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
dependencies = ["pytest", "pytest-asyncio<1.2.0", "testlib", "workers-runtime-sdk"]
|
|
6
|
+
|
|
7
|
+
[tool.uv.sources]
|
|
8
|
+
testlib = { path = "../packages/testlib" }
|
|
9
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -1,28 +1,10 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
import os
|
|
3
|
-
import sys
|
|
4
2
|
|
|
5
|
-
import
|
|
6
|
-
from pyodide.webloop import WebLoop
|
|
3
|
+
from testlib.entrypoint import run_pytest
|
|
7
4
|
|
|
8
5
|
import asgi
|
|
9
6
|
from workers import WorkerEntrypoint
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
async def noop(*args):
|
|
13
|
-
pass
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# pytest-asyncio relies on these but in Pyodide < 0.29 WebLoop does not implement them
|
|
17
|
-
WebLoop.shutdown_asyncgens = noop
|
|
18
|
-
WebLoop.shutdown_default_executor = noop
|
|
19
|
-
|
|
20
|
-
# Pyodide 0.26.0a2's _cancel_all_tasks calls task.exception() on pending tasks,
|
|
21
|
-
# which raises InvalidStateError under Pyodide's WebLoop.
|
|
22
|
-
if sys.version_info < (3, 13):
|
|
23
|
-
asyncio.runners._cancel_all_tasks = lambda loop: None # type: ignore[attr-defined]
|
|
24
|
-
|
|
25
|
-
|
|
26
8
|
# ---------------------------------------------------------------------------
|
|
27
9
|
# ASGI apps
|
|
28
10
|
# ---------------------------------------------------------------------------
|
|
@@ -291,4 +273,4 @@ class Default(WorkerEntrypoint):
|
|
|
291
273
|
async def test(self):
|
|
292
274
|
os.chdir("/session/metadata/tests")
|
|
293
275
|
args = [".", "-vv"]
|
|
294
|
-
|
|
276
|
+
run_pytest(args)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "test"
|
|
3
|
+
version = "0.0.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
dependencies = ["pytest", "pytest-asyncio<1.2.0", "testlib", "workers-runtime-sdk"]
|
|
6
|
+
|
|
7
|
+
[tool.uv.sources]
|
|
8
|
+
testlib = { path = "../packages/testlib" }
|
|
9
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -1,29 +1,12 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
import os
|
|
3
|
-
import sys
|
|
4
2
|
from urllib.parse import urlsplit
|
|
5
3
|
|
|
6
|
-
import
|
|
7
|
-
from pyodide.webloop import WebLoop
|
|
4
|
+
from testlib.entrypoint import run_pytest
|
|
8
5
|
|
|
9
6
|
import asgi
|
|
10
7
|
from workers import WorkerEntrypoint
|
|
11
8
|
|
|
12
9
|
|
|
13
|
-
async def _noop(*args):
|
|
14
|
-
pass
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# pytest-asyncio relies on these but in Pyodide < 0.29 WebLoop does not implement them
|
|
18
|
-
WebLoop.shutdown_asyncgens = _noop
|
|
19
|
-
WebLoop.shutdown_default_executor = _noop
|
|
20
|
-
|
|
21
|
-
# Pyodide 0.26.0a2's _cancel_all_tasks calls task.exception() on pending tasks,
|
|
22
|
-
# which raises InvalidStateError under Pyodide's WebLoop.
|
|
23
|
-
if sys.version_info < (3, 13):
|
|
24
|
-
asyncio.runners._cancel_all_tasks = lambda loop: None # type: ignore[attr-defined]
|
|
25
|
-
|
|
26
|
-
|
|
27
10
|
async def _drain_lifespan(receive, send):
|
|
28
11
|
message = await receive()
|
|
29
12
|
if message["type"] == "lifespan.startup":
|
|
@@ -180,4 +163,4 @@ class Default(WorkerEntrypoint):
|
|
|
180
163
|
async def test(self):
|
|
181
164
|
os.chdir("/session/metadata/tests")
|
|
182
165
|
args = [".", "-vv"]
|
|
183
|
-
|
|
166
|
+
run_pytest(args)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "test"
|
|
3
|
+
version = "0.0.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
dependencies = ["pytest", "pytest-asyncio<1.2.0", "testlib", "workers-runtime-sdk"]
|
|
6
|
+
|
|
7
|
+
[tool.uv.sources]
|
|
8
|
+
testlib = { path = "../packages/testlib" }
|
|
9
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -5,34 +5,15 @@
|
|
|
5
5
|
# behaviour doesn't need to strictly be held consistent. In fact it uses the JS fetch, so it's not
|
|
6
6
|
# going to follow the SDK at all.
|
|
7
7
|
|
|
8
|
-
import asyncio
|
|
9
8
|
import os
|
|
10
|
-
import sys
|
|
11
9
|
from functools import wraps
|
|
12
10
|
|
|
13
|
-
import
|
|
14
|
-
from pyodide.webloop import WebLoop
|
|
11
|
+
from testlib.entrypoint import run_pytest
|
|
15
12
|
|
|
16
13
|
from workers import (
|
|
17
14
|
WorkerEntrypoint,
|
|
18
15
|
)
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
async def noop(*args):
|
|
22
|
-
pass
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
# pytest-asyncio relies on these but in Pyodide < 0.29 WebLoop does not implement them
|
|
26
|
-
WebLoop.shutdown_asyncgens = noop
|
|
27
|
-
WebLoop.shutdown_default_executor = noop
|
|
28
|
-
|
|
29
|
-
# Pyodide 0.26.0a2's _cancel_all_tasks calls task.exception() on pending tasks,
|
|
30
|
-
# which raises InvalidStateError under Pyodide's WebLoop.
|
|
31
|
-
# Ignore this error to prevent pytest-asyncio from crashing.
|
|
32
|
-
if sys.version_info < (3, 13):
|
|
33
|
-
asyncio.runners._cancel_all_tasks = lambda loop: None # type: ignore[attr-defined]
|
|
34
|
-
|
|
35
|
-
|
|
36
17
|
RESPONSE_HANDLER = None
|
|
37
18
|
|
|
38
19
|
|
|
@@ -68,4 +49,4 @@ class Default(WorkerEntrypoint):
|
|
|
68
49
|
args = [".", "-vv"]
|
|
69
50
|
if self.env.color:
|
|
70
51
|
args.append("--color=yes")
|
|
71
|
-
|
|
52
|
+
run_pytest(args)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "test"
|
|
3
|
+
version = "0.0.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
dependencies = ["pytest", "pytest-asyncio<1.2.0", "testlib", "workers-runtime-sdk"]
|
|
6
|
+
|
|
7
|
+
[tool.uv.sources]
|
|
8
|
+
testlib = { path = "../packages/testlib" }
|
|
9
|
+
workers-runtime-sdk = { path = "../packages/runtime-sdk" }
|
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import os
|
|
3
|
-
import sys
|
|
4
3
|
|
|
5
|
-
import pytest
|
|
6
4
|
from pyodide.ffi import run_sync
|
|
7
|
-
from
|
|
5
|
+
from testlib.entrypoint import run_pytest
|
|
8
6
|
|
|
9
7
|
from workers import WorkerEntrypoint, wsgi
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
async def noop(*args):
|
|
13
|
-
pass
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# pytest-asyncio relies on these but in Pyodide < 0.29 WebLoop does not implement them
|
|
17
|
-
WebLoop.shutdown_asyncgens = noop
|
|
18
|
-
WebLoop.shutdown_default_executor = noop
|
|
19
|
-
|
|
20
|
-
# Pyodide 0.26.0a2's _cancel_all_tasks calls task.exception() on pending tasks,
|
|
21
|
-
# which raises InvalidStateError under Pyodide's WebLoop.
|
|
22
|
-
# Ignore this error to prevent pytest-asyncio from crashing.
|
|
23
|
-
if sys.version_info < (3, 13):
|
|
24
|
-
asyncio.runners._cancel_all_tasks = lambda loop: None # type: ignore[attr-defined]
|
|
25
|
-
|
|
26
|
-
|
|
27
9
|
# ---------------------------------------------------------------------------
|
|
28
10
|
# WSGI apps
|
|
29
11
|
# ---------------------------------------------------------------------------
|
|
@@ -140,4 +122,4 @@ class Default(WorkerEntrypoint):
|
|
|
140
122
|
args = [".", "-vv"]
|
|
141
123
|
if self.env.color:
|
|
142
124
|
args.append("--color=yes")
|
|
143
|
-
|
|
125
|
+
run_pytest(args)
|
|
@@ -269,6 +269,15 @@ wheels = [
|
|
|
269
269
|
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
|
270
270
|
]
|
|
271
271
|
|
|
272
|
+
[[package]]
|
|
273
|
+
name = "pyodide-tblib"
|
|
274
|
+
version = "3.2.3"
|
|
275
|
+
source = { registry = "https://pypi.org/simple" }
|
|
276
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4e/8a/e30340e31040c9349dfbe059123e7a0276595cacb854f0b613183b27aa4d/pyodide_tblib-3.2.3.tar.gz", hash = "sha256:e731c3a8e5fe800ebb990eaa16a48237e6894d46a2291fafdcb854a291e2f6d0", size = 47990, upload-time = "2026-09-18T16:38:15.207Z" }
|
|
277
|
+
wheels = [
|
|
278
|
+
{ url = "https://files.pythonhosted.org/packages/65/12/d91be04a60cd7349cc86358e0915dcfe5edbfcf83875c458e220756872b5/pyodide_tblib-3.2.3-py3-none-any.whl", hash = "sha256:2960f305fe3ef1f5fed9ff098c959104af144627a53033a469183200e50d7ea0", size = 15861, upload-time = "2026-09-18T16:38:13.86Z" },
|
|
279
|
+
]
|
|
280
|
+
|
|
272
281
|
[[package]]
|
|
273
282
|
name = "pytest"
|
|
274
283
|
version = "9.0.2"
|
|
@@ -330,6 +339,7 @@ name = "testlib"
|
|
|
330
339
|
version = "0.0.0"
|
|
331
340
|
source = { editable = "../testlib" }
|
|
332
341
|
dependencies = [
|
|
342
|
+
{ name = "pyodide-tblib" },
|
|
333
343
|
{ name = "pytest" },
|
|
334
344
|
]
|
|
335
345
|
|
|
@@ -340,6 +350,7 @@ host = [
|
|
|
340
350
|
|
|
341
351
|
[package.metadata]
|
|
342
352
|
requires-dist = [
|
|
353
|
+
{ name = "pyodide-tblib", specifier = ">=3.2.3" },
|
|
343
354
|
{ name = "pytest" },
|
|
344
355
|
{ name = "requests", marker = "extra == 'host'" },
|
|
345
356
|
]
|
|
@@ -365,7 +376,7 @@ wheels = [
|
|
|
365
376
|
|
|
366
377
|
[[package]]
|
|
367
378
|
name = "workers-runtime-sdk"
|
|
368
|
-
version = "1.9.
|
|
379
|
+
version = "1.9.1"
|
|
369
380
|
source = { editable = "." }
|
|
370
381
|
|
|
371
382
|
[package.dev-dependencies]
|