Module spin_sdk.wit.exports.wasi_http_handler_0_3_0_rc_2026_03_15
+Module spin_sdk.wit.exports.http_handler
This interface defines a handler of HTTP Requests.
diff --git a/docs/v4/wit/exports/index.html b/docs/v4/wit/exports/index.html index fa4b64d..a8f2e5c 100644 --- a/docs/v4/wit/exports/index.html +++ b/docs/v4/wit/exports/index.html @@ -44,13 +44,13 @@Sub-modules
spin_sdk.wit.exports.spin_redis_inbound_redis_3_0_0spin_sdk.wit.exports.http_handlerThis interface defines a handler of HTTP Requests …
spin_sdk.wit.exports.wasi_http_handler_0_3_0_rc_2026_03_15spin_sdk.wit.exports.redis_handlerThis interface defines a handler of HTTP Requests …
spin_sdk.wit.exports.wasi_http_incoming_handler_0_2_0Methods
-class SpinRedisInboundRedis300
+
+class HttpHandler
(*args, **kwargs)
@@ -150,14 +150,15 @@ Methods
Expand source code
-class SpinRedisInboundRedis300(Protocol):
+class HttpHandler(Protocol):
@abstractmethod
- async def handle_message(self, message: bytes) -> None:
+ async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) -> wasi_http_types_0_3_0_rc_2026_03_15.Response:
"""
- The entrypoint for a Redis handler.
+ This function may be called with either an incoming request read from the
+ network or a request synthesized or forwarded by another component.
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.wasi_http_types_0_3_0_rc_2026_03_15.ErrorCode)`
"""
raise NotImplementedError
@@ -192,10 +193,14 @@ Ancestors
typing.Protocol
typing.Generic
+Subclasses
+
+- Handler
+
Methods
-
-async def handle_message(self, message: bytes) ‑> None
+
+async def handle(self,
request: Request) ‑> Response
-
@@ -203,21 +208,23 @@
Methods
Expand source code
@abstractmethod
-async def handle_message(self, message: bytes) -> None:
+async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) -> wasi_http_types_0_3_0_rc_2026_03_15.Response:
"""
- The entrypoint for a Redis handler.
+ This function may be called with either an incoming request read from the
+ network or a request synthesized or forwarded by another component.
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.wasi_http_types_0_3_0_rc_2026_03_15.ErrorCode)`
"""
raise NotImplementedError
-The entrypoint for a Redis handler.
-Raises: componentize_py_types.Err(Error)
+This function may be called with either an incoming request read from the
+network or a request synthesized or forwarded by another component.
+Raises: componentize_py_types.Err(ErrorCode)
-
-class WasiHttpHandler030Rc20260315
+
+class RedisHandler
(*args, **kwargs)
@@ -225,15 +232,14 @@ Methods
Expand source code
-class WasiHttpHandler030Rc20260315(Protocol):
+class RedisHandler(Protocol):
@abstractmethod
- async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) -> wasi_http_types_0_3_0_rc_2026_03_15.Response:
+ async def handle_message(self, message: bytes) -> None:
"""
- This function may be called with either an incoming request read from the
- network or a request synthesized or forwarded by another component.
+ The entrypoint for a Redis handler.
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.wasi_http_types_0_3_0_rc_2026_03_15.ErrorCode)`
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
"""
raise NotImplementedError
@@ -268,14 +274,10 @@ Ancestors
typing.Protocol
typing.Generic
-Subclasses
-
-- Handler
-
Methods
-
-async def handle(self,
request: Request) ‑> Response
+
+async def handle_message(self, message: bytes) ‑> None
-
@@ -283,18 +285,16 @@
Methods
Expand source code
@abstractmethod
-async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) -> wasi_http_types_0_3_0_rc_2026_03_15.Response:
+async def handle_message(self, message: bytes) -> None:
"""
- This function may be called with either an incoming request read from the
- network or a request synthesized or forwarded by another component.
+ The entrypoint for a Redis handler.
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.wasi_http_types_0_3_0_rc_2026_03_15.ErrorCode)`
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
"""
raise NotImplementedError
-This function may be called with either an incoming request read from the
-network or a request synthesized or forwarded by another component.
-Raises: componentize_py_types.Err(ErrorCode)
+The entrypoint for a Redis handler.
+Raises: componentize_py_types.Err(Error)
@@ -410,8 +410,8 @@ Methods
Sub-modules
@@ -424,15 +424,15 @@ SpinRedisInboundRedis300
+HttpHandler
-WasiHttpHandler030Rc20260315
+RedisHandler
diff --git a/docs/v4/wit/exports/spin_redis_inbound_redis_3_0_0.html b/docs/v4/wit/exports/redis_handler.html
similarity index 97%
rename from docs/v4/wit/exports/spin_redis_inbound_redis_3_0_0.html
rename to docs/v4/wit/exports/redis_handler.html
index 6adbfd6..75dadf7 100644
--- a/docs/v4/wit/exports/spin_redis_inbound_redis_3_0_0.html
+++ b/docs/v4/wit/exports/redis_handler.html
@@ -4,7 +4,7 @@
-spin_sdk.wit.exports.spin_redis_inbound_redis_3_0_0 API documentation
+spin_sdk.wit.exports.redis_handler API documentation
@@ -33,7 +33,7 @@
-Module spin_sdk.wit.exports.spin_redis_inbound_redis_3_0_0
+Module spin_sdk.wit.exports.redis_handler
diff --git a/docs/v4/wit/imports/fermyon_spin_config.html b/docs/v4/wit/imports/fermyon_spin_config.html
index 201ced9..df65718 100644
--- a/docs/v4/wit/imports/fermyon_spin_config.html
+++ b/docs/v4/wit/imports/fermyon_spin_config.html
@@ -40,13 +40,6 @@ Module spin_sdk.wit.imports.fermyon_spin_config
-Global variables
-
-var Error
--
-
The set of errors which may be raised by functions in this interface
-
-
Functions
@@ -70,7 +63,7 @@ Functions
Get a configuration value for the current component.
The config key must match one defined in in the component manifest.
-Raises: componentize_py_types.Err(Error)
+Raises: componentize_py_types.Err(spin_sdk.wit.imports.fermyon_spin_config.Error)
@@ -178,11 +171,6 @@ Instance variables
spin_sdk.wit.imports
-Global variables
-
-Error
-
-
Functions
get_config
diff --git a/examples/external-lib-example/app.py b/examples/external-lib-example/app.py
index 3808d64..bc2fee1 100644
--- a/examples/external-lib-example/app.py
+++ b/examples/external-lib-example/app.py
@@ -40,7 +40,7 @@ def handle_queryparams(uri: ParseResult, request: Request) -> Response:
return Response(200, {"content-type": "text/plain"}, bytes(foo, "utf-8"))
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
# I need to parse the URI because the Request object in Spin
# is in the form /path/to/thing?param1=val1&p2=v2#anchor
diff --git a/examples/external-lib-example/requirements.txt b/examples/external-lib-example/requirements.txt
index 34b4c93..bd88371 100644
--- a/examples/external-lib-example/requirements.txt
+++ b/examples/external-lib-example/requirements.txt
@@ -1,3 +1,3 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
+componentize-py == 0.22.1
http-router == 4.1.2
\ No newline at end of file
diff --git a/examples/hello/app.py b/examples/hello/app.py
index 6ea8a36..bac1060 100644
--- a/examples/hello/app.py
+++ b/examples/hello/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
return Response(
200,
diff --git a/examples/hello/requirements.txt b/examples/hello/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/hello/requirements.txt
+++ b/examples/hello/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/matrix-math/app.py b/examples/matrix-math/app.py
index 1339d1b..2f2dcd1 100644
--- a/examples/matrix-math/app.py
+++ b/examples/matrix-math/app.py
@@ -3,7 +3,7 @@
from spin_sdk import http
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
if request.method == "POST" \
and request.uri == "/multiply" \
diff --git a/examples/matrix-math/requirements.txt b/examples/matrix-math/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/matrix-math/requirements.txt
+++ b/examples/matrix-math/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/outgoing-request/app.py b/examples/outgoing-request/app.py
index 6855695..5f44640 100644
--- a/examples/outgoing-request/app.py
+++ b/examples/outgoing-request/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http
from spin_sdk.http import Request, Response, send
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
try:
url = request.headers["url"]
diff --git a/examples/outgoing-request/requirements.txt b/examples/outgoing-request/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/outgoing-request/requirements.txt
+++ b/examples/outgoing-request/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/redis-trigger/app.py b/examples/redis-trigger/app.py
index 162fc4b..01c118c 100644
--- a/examples/redis-trigger/app.py
+++ b/examples/redis-trigger/app.py
@@ -1,5 +1,5 @@
from spin_sdk.wit import exports
-class SpinRedisInboundRedis300(exports.SpinRedisInboundRedis300):
+class RedisHandler(exports.RedisHandler):
async def handle_message(self, message: bytes) -> None:
print(message)
diff --git a/examples/redis-trigger/requirements.txt b/examples/redis-trigger/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/redis-trigger/requirements.txt
+++ b/examples/redis-trigger/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-kv/app.py b/examples/spin-kv/app.py
index 71a93fc..9c735bd 100644
--- a/examples/spin-kv/app.py
+++ b/examples/spin-kv/app.py
@@ -2,7 +2,7 @@
from spin_sdk.http import Request, Response
from spin_sdk.key_value import Store
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with await key_value.open_default() as a:
await a.set("test", bytes("hello world!", "utf-8"))
diff --git a/examples/spin-kv/requirements.txt b/examples/spin-kv/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-kv/requirements.txt
+++ b/examples/spin-kv/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-llm/app.py b/examples/spin-llm/app.py
index 98bb2bb..b1bf63a 100644
--- a/examples/spin-llm/app.py
+++ b/examples/spin-llm/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http, llm
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
res = llm.infer("all-minilm-l6-v2", "tell me a joke")
print(res.text)
diff --git a/examples/spin-llm/requirements.txt b/examples/spin-llm/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-llm/requirements.txt
+++ b/examples/spin-llm/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-mysql/app.py b/examples/spin-mysql/app.py
index bf2440b..368ca46 100644
--- a/examples/spin-mysql/app.py
+++ b/examples/spin-mysql/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http, mysql
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with mysql.open("mysql://root:@127.0.0.1/spin_dev") as db:
print(db.query("select * from test", []))
diff --git a/examples/spin-mysql/requirements.txt b/examples/spin-mysql/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-mysql/requirements.txt
+++ b/examples/spin-mysql/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-outbound-mqtt/app.py b/examples/spin-outbound-mqtt/app.py
index 9803399..7c0f528 100644
--- a/examples/spin-outbound-mqtt/app.py
+++ b/examples/spin-outbound-mqtt/app.py
@@ -2,7 +2,7 @@
from spin_sdk.mqtt import Qos
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with await mqtt.open("mqtt://localhost:1883?client_id=client001", "user", "password", 30) as conn:
await conn.publish("telemetry", bytes("Eureka!", "utf-8"), Qos.AT_LEAST_ONCE)
diff --git a/examples/spin-outbound-mqtt/requirements.txt b/examples/spin-outbound-mqtt/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-outbound-mqtt/requirements.txt
+++ b/examples/spin-outbound-mqtt/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-postgres/app.py b/examples/spin-postgres/app.py
index bd70537..fe0380c 100644
--- a/examples/spin-postgres/app.py
+++ b/examples/spin-postgres/app.py
@@ -20,7 +20,7 @@ def format_rowset(rowset: RowSet) -> str:
return "\n".join(lines)
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with await postgres.open("user=postgres dbname=spin_dev host=localhost sslmode=disable password=password") as db:
rowset = db.query("SELECT * FROM test", [])
diff --git a/examples/spin-postgres/requirements.txt b/examples/spin-postgres/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-postgres/requirements.txt
+++ b/examples/spin-postgres/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-redis/app.py b/examples/spin-redis/app.py
index 782cb86..afda296 100644
--- a/examples/spin-redis/app.py
+++ b/examples/spin-redis/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http, redis
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with await redis.open("redis://localhost:6379") as db:
print(await db.get("test"))
diff --git a/examples/spin-redis/requirements.txt b/examples/spin-redis/requirements.txt
index 9b01a87..00ea46b 100644
--- a/examples/spin-redis/requirements.txt
+++ b/examples/spin-redis/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
+componentize-py == 0.22.1
diff --git a/examples/spin-sqlite/app.py b/examples/spin-sqlite/app.py
index cddafc3..d694efb 100644
--- a/examples/spin-sqlite/app.py
+++ b/examples/spin-sqlite/app.py
@@ -2,7 +2,7 @@
from spin_sdk.http import Request, Response
from spin_sdk.sqlite import Value_Integer
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
with await sqlite.open_default() as db:
result = db.execute("SELECT * FROM todos WHERE id > (?);", [Value_Integer(1)])
diff --git a/examples/spin-sqlite/requirements.txt b/examples/spin-sqlite/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-sqlite/requirements.txt
+++ b/examples/spin-sqlite/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/spin-variables/app.py b/examples/spin-variables/app.py
index f19b087..56cc73a 100644
--- a/examples/spin-variables/app.py
+++ b/examples/spin-variables/app.py
@@ -1,7 +1,7 @@
from spin_sdk import http, variables
from spin_sdk.http import Request, Response
-class WasiHttpHandler030Rc20260315(http.Handler):
+class HttpHandler(http.Handler):
async def handle_request(self, request: Request) -> Response:
print(await variables.get("message"))
return Response(
diff --git a/examples/spin-variables/requirements.txt b/examples/spin-variables/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/spin-variables/requirements.txt
+++ b/examples/spin-variables/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/examples/streaming/app.py b/examples/streaming/app.py
index 0998d78..312d6c4 100644
--- a/examples/streaming/app.py
+++ b/examples/streaming/app.py
@@ -31,7 +31,7 @@
from urllib import parse
-class WasiHttpHandler030Rc20260315(exports.WasiHttpHandler030Rc20260315):
+class HttpHandler(exports.HttpHandler):
"""Implements the `export`ed portion of the `wasi-http` `proxy` world."""
async def handle(self, request: Request) -> Response:
diff --git a/examples/streaming/requirements.txt b/examples/streaming/requirements.txt
index 8c0ab7e..c1fade0 100644
--- a/examples/streaming/requirements.txt
+++ b/examples/streaming/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
\ No newline at end of file
+componentize-py == 0.22.1
\ No newline at end of file
diff --git a/regenerate_bindings.sh b/regenerate_bindings.sh
index 5e6083d..7a5d7be 100644
--- a/regenerate_bindings.sh
+++ b/regenerate_bindings.sh
@@ -7,6 +7,8 @@ componentize-py \
-w "wasi:http/service@0.3.0-rc-2026-03-15" \
-w "fermyon:spin/http-trigger@3.0.0" \
-w "fermyon:spin/redis-trigger" \
+ --export-interface-name "wasi:http/handler@0.3.0-rc-2026-03-15=http-handler" \
+ --export-interface-name "spin:redis/inbound-redis@3.0.0=redis-handler" \
--world-module spin_sdk.wit \
--full-names \
bindings \
diff --git a/src/spin_sdk/componentize-py.toml b/src/spin_sdk/componentize-py.toml
index 9c8f5b3..e0034fa 100644
--- a/src/spin_sdk/componentize-py.toml
+++ b/src/spin_sdk/componentize-py.toml
@@ -1,3 +1,7 @@
wit_directory = "wit"
bindings = "wit"
full_names = true
+
+[export_interface_names]
+"wasi:http/handler@0.3.0-rc-2026-03-15" = "http-handler"
+"spin:redis/inbound-redis@3.0.0" = "redis-handler"
diff --git a/src/spin_sdk/http/__init__.py b/src/spin_sdk/http/__init__.py
index 943cbdf..ad1084a 100644
--- a/src/spin_sdk/http/__init__.py
+++ b/src/spin_sdk/http/__init__.py
@@ -34,7 +34,7 @@ class Response:
try:
from spin_sdk.wit import exports
- from spin_sdk.wit.exports import WasiHttpHandler030Rc20260315 as Base
+ from spin_sdk.wit.exports import HttpHandler as Base
class Handler(Base):
"""Simplified handler for incoming HTTP requests using blocking, buffered I/O."""
diff --git a/src/spin_sdk/wit/__init__.py b/src/spin_sdk/wit/__init__.py
index 94f4020..c0b046e 100644
--- a/src/spin_sdk/wit/__init__.py
+++ b/src/spin_sdk/wit/__init__.py
@@ -10,13 +10,13 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from .imports import wasi_sockets_types_0_3_0_rc_2026_03_15
from .imports import spin_key_value_key_value_3_0_0
from .imports import spin_postgres_postgres_4_2_0
from .imports import spin_sqlite_sqlite_3_1_0
-from .imports import wasi_http_types_0_3_0_rc_2026_03_15
from .imports import wasi_filesystem_types_0_3_0_rc_2026_03_15
+from .imports import wasi_sockets_types_0_3_0_rc_2026_03_15
from .imports import wasi_cli_types_0_3_0_rc_2026_03_15
+from .imports import wasi_http_types_0_3_0_rc_2026_03_15
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/exports/__init__.py b/src/spin_sdk/wit/exports/__init__.py
index d9086ed..77b2af1 100644
--- a/src/spin_sdk/wit/exports/__init__.py
+++ b/src/spin_sdk/wit/exports/__init__.py
@@ -14,6 +14,18 @@
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
+class FermyonSpinInboundRedis(Protocol):
+
+ @abstractmethod
+ def handle_message(self, message: bytes) -> None:
+ """
+ The entrypoint for a Redis handler.
+
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.fermyon_spin_redis_types.Error)`
+ """
+ raise NotImplementedError
+
+
class WasiHttpIncomingHandler020(Protocol):
@abstractmethod
@@ -33,19 +45,19 @@ def handle(self, request: wasi_http_types_0_2_0.IncomingRequest, response_out: w
raise NotImplementedError
-class FermyonSpinInboundRedis(Protocol):
+class RedisHandler(Protocol):
@abstractmethod
- def handle_message(self, message: bytes) -> None:
+ async def handle_message(self, message: bytes) -> None:
"""
The entrypoint for a Redis handler.
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.fermyon_spin_redis_types.Error)`
+ Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
"""
raise NotImplementedError
-class WasiHttpHandler030Rc20260315(Protocol):
+class HttpHandler(Protocol):
@abstractmethod
async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) -> wasi_http_types_0_3_0_rc_2026_03_15.Response:
@@ -58,15 +70,3 @@ async def handle(self, request: wasi_http_types_0_3_0_rc_2026_03_15.Request) ->
raise NotImplementedError
-class SpinRedisInboundRedis300(Protocol):
-
- @abstractmethod
- async def handle_message(self, message: bytes) -> None:
- """
- The entrypoint for a Redis handler.
-
- Raises: `componentize_py_types.Err(spin_sdk.wit.imports.spin_redis_redis_3_0_0.Error)`
- """
- raise NotImplementedError
-
-
diff --git a/src/spin_sdk/wit/exports/wasi_http_handler_0_3_0_rc_2026_03_15.py b/src/spin_sdk/wit/exports/http_handler.py
similarity index 100%
rename from src/spin_sdk/wit/exports/wasi_http_handler_0_3_0_rc_2026_03_15.py
rename to src/spin_sdk/wit/exports/http_handler.py
diff --git a/src/spin_sdk/wit/exports/spin_redis_inbound_redis_3_0_0.py b/src/spin_sdk/wit/exports/redis_handler.py
similarity index 100%
rename from src/spin_sdk/wit/exports/spin_redis_inbound_redis_3_0_0.py
rename to src/spin_sdk/wit/exports/redis_handler.py
diff --git a/src/spin_sdk/wit/imports/fermyon_spin_config.py b/src/spin_sdk/wit/imports/fermyon_spin_config.py
index 2eafedb..a69b8fa 100644
--- a/src/spin_sdk/wit/imports/fermyon_spin_config.py
+++ b/src/spin_sdk/wit/imports/fermyon_spin_config.py
@@ -34,9 +34,7 @@ class Error_Other:
Error = Union[Error_Provider, Error_InvalidKey, Error_InvalidSchema, Error_Other]
-"""
-The set of errors which may be raised by functions in this interface
-"""
+
def get_config(key: str) -> str:
diff --git a/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_0.py b/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_0.py
index 74d6902..25f9aa2 100644
--- a/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_0.py
@@ -34,9 +34,9 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_clocks_wall_clock_0_2_0
-from ..imports import wasi_io_streams_0_2_0
from ..imports import wasi_io_error_0_2_0
+from ..imports import wasi_io_streams_0_2_0
+from ..imports import wasi_clocks_wall_clock_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_6.py b/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_6.py
index 2089c85..4e64e79 100644
--- a/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_filesystem_types_0_2_6.py
@@ -34,9 +34,9 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
+from ..imports import wasi_io_error_0_2_6
from ..imports import wasi_io_streams_0_2_6
from ..imports import wasi_clocks_wall_clock_0_2_6
-from ..imports import wasi_io_error_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_http_types_0_2_0.py b/src/spin_sdk/wit/imports/wasi_http_types_0_2_0.py
index d94d9b4..143f0bb 100644
--- a/src/spin_sdk/wit/imports/wasi_http_types_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_http_types_0_2_0.py
@@ -13,9 +13,9 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_io_streams_0_2_0
-from ..imports import wasi_io_poll_0_2_0
from ..imports import wasi_io_error_0_2_0
+from ..imports import wasi_io_poll_0_2_0
+from ..imports import wasi_io_streams_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_http_types_0_2_6.py b/src/spin_sdk/wit/imports/wasi_http_types_0_2_6.py
index 2ffbb63..ccc7ecb 100644
--- a/src/spin_sdk/wit/imports/wasi_http_types_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_http_types_0_2_6.py
@@ -13,9 +13,9 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
+from ..imports import wasi_io_error_0_2_6
from ..imports import wasi_io_poll_0_2_6
from ..imports import wasi_io_streams_0_2_6
-from ..imports import wasi_io_error_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_io_streams_0_2_0.py b/src/spin_sdk/wit/imports/wasi_io_streams_0_2_0.py
index 1834830..fd1003d 100644
--- a/src/spin_sdk/wit/imports/wasi_io_streams_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_io_streams_0_2_0.py
@@ -15,8 +15,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_io_poll_0_2_0
from ..imports import wasi_io_error_0_2_0
+from ..imports import wasi_io_poll_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_io_streams_0_2_6.py b/src/spin_sdk/wit/imports/wasi_io_streams_0_2_6.py
index 77c37fd..926bd40 100644
--- a/src/spin_sdk/wit/imports/wasi_io_streams_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_io_streams_0_2_6.py
@@ -15,8 +15,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_io_poll_0_2_6
from ..imports import wasi_io_error_0_2_6
+from ..imports import wasi_io_poll_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_ip_name_lookup_0_2_0.py b/src/spin_sdk/wit/imports/wasi_sockets_ip_name_lookup_0_2_0.py
index e8d0429..dcee9a7 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_ip_name_lookup_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_ip_name_lookup_0_2_0.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_network_0_2_0
from ..imports import wasi_io_poll_0_2_0
+from ..imports import wasi_sockets_network_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_0.py b/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_0.py
index c4cd541..0070de1 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_0.py
@@ -8,9 +8,9 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_network_0_2_0
from ..imports import wasi_io_poll_0_2_0
from ..imports import wasi_io_streams_0_2_0
+from ..imports import wasi_sockets_network_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_6.py b/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_6.py
index 0fdbdd1..0487932 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_tcp_0_2_6.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_io_streams_0_2_6
from ..imports import wasi_io_poll_0_2_6
+from ..imports import wasi_io_streams_0_2_6
from ..imports import wasi_sockets_network_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_0.py b/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_0.py
index 85b8b67..0087a75 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_0.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_tcp_0_2_0
from ..imports import wasi_sockets_network_0_2_0
+from ..imports import wasi_sockets_tcp_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_6.py b/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_6.py
index b570d37..f00e94b 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_tcp_create_socket_0_2_6.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_tcp_0_2_6
from ..imports import wasi_sockets_network_0_2_6
+from ..imports import wasi_sockets_tcp_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_0.py b/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_0.py
index cf64c4c..5a685e9 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_0.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_0.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_network_0_2_0
from ..imports import wasi_io_poll_0_2_0
+from ..imports import wasi_sockets_network_0_2_0
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_6.py b/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_6.py
index 4dd93a2..268d1a4 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_udp_0_2_6.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_network_0_2_6
from ..imports import wasi_io_poll_0_2_6
+from ..imports import wasi_sockets_network_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/src/spin_sdk/wit/imports/wasi_sockets_udp_create_socket_0_2_6.py b/src/spin_sdk/wit/imports/wasi_sockets_udp_create_socket_0_2_6.py
index 3705518..0a405b1 100644
--- a/src/spin_sdk/wit/imports/wasi_sockets_udp_create_socket_0_2_6.py
+++ b/src/spin_sdk/wit/imports/wasi_sockets_udp_create_socket_0_2_6.py
@@ -8,8 +8,8 @@
import weakref
from componentize_py_types import Result, Ok, Err, Some
-from ..imports import wasi_sockets_udp_0_2_6
from ..imports import wasi_sockets_network_0_2_6
+from ..imports import wasi_sockets_udp_0_2_6
import componentize_py_async_support
from componentize_py_async_support.streams import StreamReader, StreamWriter, ByteStreamReader, ByteStreamWriter
from componentize_py_async_support.futures import FutureReader, FutureWriter
diff --git a/templates/http-py/content/requirements.txt b/templates/http-py/content/requirements.txt
index 9b01a87..00ea46b 100644
--- a/templates/http-py/content/requirements.txt
+++ b/templates/http-py/content/requirements.txt
@@ -1,2 +1,2 @@
spin-sdk == 4.0.0
-componentize-py == 0.22.0
+componentize-py == 0.22.1