From 49be9078f5981cca1e1c1f809815d34d15afc59a Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Wed, 8 Apr 2026 15:43:07 -0600 Subject: [PATCH 1/2] specify `--export-interface-name` options to `componentize-py` This renames a couple of exported interfaces when generating bindings to avoid ugly class names like `WasiHttpHandler030Rc20260315` in application code. Specifically, this renames the following exports: - `wasi:http/handler@0.3.0-rc-2026-03-15` => `http-handler` - `spin:redis/inbound-redis@3.0.0` => `redis-handler` Signed-off-by: Joel Dice --- docs/v4/http/index.html | 6 +- ...0_rc_2026_03_15.html => http_handler.html} | 4 +- docs/v4/wit/exports/index.html | 86 +++++++++---------- ...nd_redis_3_0_0.html => redis_handler.html} | 4 +- docs/v4/wit/imports/fermyon_spin_config.html | 14 +-- examples/external-lib-example/app.py | 2 +- examples/hello/app.py | 2 +- examples/matrix-math/app.py | 2 +- examples/outgoing-request/app.py | 2 +- examples/redis-trigger/app.py | 2 +- examples/spin-kv/app.py | 2 +- examples/spin-llm/app.py | 2 +- examples/spin-mysql/app.py | 2 +- examples/spin-outbound-mqtt/app.py | 2 +- examples/spin-postgres/app.py | 2 +- examples/spin-redis/app.py | 2 +- examples/spin-sqlite/app.py | 2 +- examples/spin-variables/app.py | 2 +- examples/streaming/app.py | 2 +- regenerate_bindings.sh | 2 + src/spin_sdk/componentize-py.toml | 4 + src/spin_sdk/http/__init__.py | 2 +- src/spin_sdk/wit/__init__.py | 4 +- src/spin_sdk/wit/exports/__init__.py | 32 +++---- ...0_3_0_rc_2026_03_15.py => http_handler.py} | 0 ...nbound_redis_3_0_0.py => redis_handler.py} | 0 .../wit/imports/fermyon_spin_config.py | 4 +- .../imports/wasi_filesystem_types_0_2_0.py | 4 +- .../imports/wasi_filesystem_types_0_2_6.py | 2 +- .../wit/imports/wasi_http_types_0_2_0.py | 4 +- .../wit/imports/wasi_http_types_0_2_6.py | 2 +- .../wit/imports/wasi_io_streams_0_2_0.py | 2 +- .../wit/imports/wasi_io_streams_0_2_6.py | 2 +- .../wasi_sockets_ip_name_lookup_0_2_0.py | 2 +- .../wit/imports/wasi_sockets_tcp_0_2_0.py | 2 +- .../wit/imports/wasi_sockets_tcp_0_2_6.py | 2 +- .../wasi_sockets_tcp_create_socket_0_2_0.py | 2 +- .../wasi_sockets_tcp_create_socket_0_2_6.py | 2 +- .../wit/imports/wasi_sockets_udp_0_2_0.py | 2 +- .../wit/imports/wasi_sockets_udp_0_2_6.py | 2 +- .../wasi_sockets_udp_create_socket_0_2_6.py | 2 +- 41 files changed, 107 insertions(+), 115 deletions(-) rename docs/v4/wit/exports/{wasi_http_handler_0_3_0_rc_2026_03_15.html => http_handler.html} (97%) rename docs/v4/wit/exports/{spin_redis_inbound_redis_3_0_0.html => redis_handler.html} (97%) rename src/spin_sdk/wit/exports/{wasi_http_handler_0_3_0_rc_2026_03_15.py => http_handler.py} (100%) rename src/spin_sdk/wit/exports/{spin_redis_inbound_redis_3_0_0.py => redis_handler.py} (100%) diff --git a/docs/v4/http/index.html b/docs/v4/http/index.html index 556757f..00d2b70 100644 --- a/docs/v4/http/index.html +++ b/docs/v4/http/index.html @@ -269,7 +269,7 @@

Classes

Simplified handler for incoming HTTP requests using blocking, buffered I/O.

Ancestors

@@ -292,9 +292,9 @@

Methods

Inherited members

diff --git a/docs/v4/wit/exports/wasi_http_handler_0_3_0_rc_2026_03_15.html b/docs/v4/wit/exports/http_handler.html similarity index 97% rename from docs/v4/wit/exports/wasi_http_handler_0_3_0_rc_2026_03_15.html rename to docs/v4/wit/exports/http_handler.html index 28bb435..e8b9b55 100644 --- a/docs/v4/wit/exports/wasi_http_handler_0_3_0_rc_2026_03_15.html +++ b/docs/v4/wit/exports/http_handler.html @@ -4,7 +4,7 @@ -spin_sdk.wit.exports.wasi_http_handler_0_3_0_rc_2026_03_15 API documentation +spin_sdk.wit.exports.http_handler API documentation @@ -33,7 +33,7 @@
-

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_0
+
spin_sdk.wit.exports.http_handler
-
+

This interface defines a handler of HTTP Requests …

-
spin_sdk.wit.exports.wasi_http_handler_0_3_0_rc_2026_03_15
+
spin_sdk.wit.exports.redis_handler
-

This interface defines a handler of HTTP Requests …

+
spin_sdk.wit.exports.wasi_http_incoming_handler_0_2_0
@@ -141,8 +141,8 @@

Methods

-
-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

    +

    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

    -

    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

    - -
  • 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/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/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/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/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/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-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-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-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-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-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-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-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/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/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 From 9d24f8c0f003c597f69c89380190d9cc2589852b Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Wed, 8 Apr 2026 16:28:32 -0600 Subject: [PATCH 2/2] update `componentize-py` to v0.22.1 ...which hasn't been released yet, but will be soon. Signed-off-by: Joel Dice --- .github/workflows/build.yml | 2 +- CONTRIBUTING.md | 4 ++-- README.md | 2 +- examples/external-lib-example/requirements.txt | 2 +- examples/hello/requirements.txt | 2 +- examples/matrix-math/requirements.txt | 2 +- examples/outgoing-request/requirements.txt | 2 +- examples/redis-trigger/requirements.txt | 2 +- examples/spin-kv/requirements.txt | 2 +- examples/spin-llm/requirements.txt | 2 +- examples/spin-mysql/requirements.txt | 2 +- examples/spin-outbound-mqtt/requirements.txt | 2 +- examples/spin-postgres/requirements.txt | 2 +- examples/spin-redis/requirements.txt | 2 +- examples/spin-sqlite/requirements.txt | 2 +- examples/spin-variables/requirements.txt | 2 +- examples/streaming/requirements.txt | 2 +- templates/http-py/content/requirements.txt | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 268a5e2..6702342 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: run: | python -m venv venv source venv/bin/activate - pip install componentize-py==0.22.0 http-router==4.1.2 build==1.4.2 mypy==1.13 + pip install componentize-py==0.22.1 http-router==4.1.2 build==1.4.2 mypy==1.13 python -m build pip install dist/spin_sdk-4.0.0-py3-none-any.whl bash run_tests.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 30c78b4..02a6e72 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,12 +4,12 @@ - Python - `pip` -- `componentize-py` 0.22.0 +- `componentize-py` 0.22.1 Once you have `pip` installed, you can install `componentize-py` using: ```bash -pip install componentize-py==0.22.0 +pip install componentize-py==0.22.1 ``` ### Generating the bindings diff --git a/README.md b/README.md index 27d6cc5..171cb34 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ enter a virtual environment and then install the desired packages ```shell python -m venv .venv source .venv/bin/activate -pip install componentize-py==0.22.0 spin-sdk==4.0.0 mypy==1.8.0 +pip install componentize-py==0.22.1 spin-sdk==4.0.0 mypy==1.8.0 ``` ### Hello, World 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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