Skip to main content

Experimental SDK for Spin and Componentize-Py

Project description

Spin Python SDK

This is an SDK for creating Spin apps using Python.

Note that this SDK supersedes an earlier, experimental version, which may be found in the old-sdk branch.

API Documentation

Example

Prerequisites

Once you have Python and pip installed, you can use the latter to create and enter a virtual environment and then install the desired packages

python -m venv .venv
source .venv/bin/activate
pip install componentize-py==0.16.0 spin-sdk==3.3.1 mypy==1.8.0

Hello, World

A minimal app requires two files: a spin.toml and a Python script, which we'll name app.py:

cat >spin.toml <<EOF
spin_manifest_version = 2

[application]
name = "hello"
version = "0.1.0"
authors = ["Dev Eloper <dev@example.com>"]

[[trigger.http]]
route = "/..."
component = "hello"

[component.hello]
source = "app.wasm"
[component.hello.build]
command = "componentize-py -w spin-http componentize app -o app.wasm"
EOF
cat >app.py <<EOF
from spin_sdk import http
from spin_sdk.http import Request, Response

class IncomingHandler(http.IncomingHandler):
    def handle_request(self, request: Request) -> Response:
        return Response(
            200,
            {"content-type": "text/plain"},
            bytes("Hello from Python!", "utf-8")
        )
EOF

Once you've created those files, you can check, build, and run your app:

python -m mypy app.py
spin build -u

Finally, you can test your app using e.g. curl in another terminal:

curl -i http://127.0.0.1:3000

If all goes well, you should see something like:

HTTP/1.1 200 OK
content-type: text/plain
content-length: 18
date: Thu, 11 Apr 2024 17:42:31 GMT

Hello from Python!

Please file an issue if you have any trouble.

See the examples directory in the repository for more examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spin_sdk-3.3.1.tar.gz (78.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spin_sdk-3.3.1-py3-none-any.whl (111.5 kB view details)

Uploaded Python 3

File details

Details for the file spin_sdk-3.3.1.tar.gz.

File metadata

  • Download URL: spin_sdk-3.3.1.tar.gz
  • Upload date:
  • Size: 78.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for spin_sdk-3.3.1.tar.gz
Algorithm Hash digest
SHA256 7110197a6b157493ae07654e7b6edf929477eee073c13c2d019af6f8bf4949e4
MD5 2c690d7c8011c5f6a5cdac67ecb5614b
BLAKE2b-256 e2da83be1bb8044ac6b9e39b41426381a0417a0e8fe914299f322e47ca5aca8d

See more details on using hashes here.

File details

Details for the file spin_sdk-3.3.1-py3-none-any.whl.

File metadata

  • Download URL: spin_sdk-3.3.1-py3-none-any.whl
  • Upload date:
  • Size: 111.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for spin_sdk-3.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1c7f632575a4a576779028c0444fdcad16db553f42510d0c3b8a3b35eb865d5a
MD5 b177b8dbad7311be1aba502d3eb31e54
BLAKE2b-256 744553b11337e090a4b32423f28557b46d7c0acad2cfb12e686a5adfac75c2fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page