Skip to main content

Official Python SDK for the somewhere.tech platform API. Supabase-compatible interface.

Project description

somewhere — Python SDK

Official Python SDK for the somewhere.tech platform API. Thin wrapper around the REST API at https://api.somewhere.tech/v1.

Install

pip install somewhere

Quick start

from somewhere import Somewhere, SomewhereError

sw = Somewhere(key="smt_...")  # or token="eyJ..." for app-user mode

# Create a project
project = sw.projects.create(name="Booking App")

# Run a migration
sw.db.migrate(
    """
    CREATE TABLE bookings (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        slot TEXT NOT NULL,
        created_at TEXT DEFAULT (datetime('now'))
    );
    """,
    project["id"],
)

# Insert + query
sw.db.query(
    "INSERT INTO bookings (name, slot) VALUES (?, ?)",
    ["Alice", "2026-05-01 18:00"],
    project["id"],
)
rows = sw.db.query("SELECT * FROM bookings", [], project["id"])

# Deploy a static site
sw.deploy(
    files={"index.html": "<h1>Book a table</h1>"},
    project_id=project["id"],
)

print(f"Live at https://{project['subdomain']}.somewhere.tech")

Auth modes

Developer mode — full access, server-side only:

sw = Somewhere(key="smt_...")

App-user mode — app JWT, browser-safe operations only (db, storage, fs, auth.me):

sw = Somewhere(token="eyJ...", project_id="booking-app")
me = sw.auth.me()
rows = sw.db.query("SELECT * FROM bookings WHERE email = ?", [me["user"]["email"]])

Default project:

sw = Somewhere(key="smt_...", project_id="booking-app")
sw.db.query("SELECT * FROM bookings")  # uses 'booking-app'

Error handling

Every API error raises a typed SomewhereError:

from somewhere import SomewhereError

try:
    sw.email.send(to="user@example.com", subject="Hi", text="Welcome")
except SomewhereError as err:
    print(err.code)           # "QUOTA_EXCEEDED"
    print(err.message)        # human-readable
    print(err.status_code)    # 429
    print(err.retry)          # True if client should retry
    print(err.retry_after_ms) # ms to wait

Method reference

Namespace Methods
sw.projects create, list, get, delete, undeploy, archive, unarchive, rename, deploys
sw.deploy sw.deploy(files=..., functions=..., project_id=...), sw.deploy.status(project_id)
sw.promote sw.promote(project_id), sw.promote.rollback(project_id)
sw.db query, migrate, tables, schema
sw.storage put, get, delete, list
sw.fs write, read, delete, move, copy, stat, versions, restore
sw.auth signup, login, logout, me, forgot, reset, users, verify_email, request_verification, delete_account, update_me
sw.email send
sw.ai complete, embed, image, tts, transcribe
sw.jobs create, status, list, cancel, progress
sw.cron create, list, update, delete
sw.queue push
sw.logs write, read
sw.env set, list, delete
sw.domains add, verify, list, delete
sw.preview invite, revoke, viewers
sw.feedback submit, list
sw.billing status, checkout, portal
sw.usage get, summary

* = stub for not-yet-shipped endpoints; calling returns UNSUPPORTED_FEATURE.

Test

SMT_KEY=smt_... python tests/test_basic.py

License

MIT © somewhere.tech

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

somewhere_tech-0.3.0.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

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

somewhere_tech-0.3.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file somewhere_tech-0.3.0.tar.gz.

File metadata

  • Download URL: somewhere_tech-0.3.0.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for somewhere_tech-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fe70111832a592919062b63604d0a928564930e10089e7b593ba6a830f6cdf73
MD5 0eef45e78206090342d02c34445ccb05
BLAKE2b-256 01cad4e016d1270acc34b2a40fbfba81de6643ea3c5d47ec5ab4ccb19e3f43f1

See more details on using hashes here.

File details

Details for the file somewhere_tech-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: somewhere_tech-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for somewhere_tech-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1488a911990d8f4cd3896b1341eef34bfe5e50e6e79bdedf6997af914f1e6df7
MD5 99e8c3e6fa681a7c8853091d36694d46
BLAKE2b-256 09ad91d00933f35e6f7d4cf8c0a2d56ce6ae293ea0c9cc05415fcb9500864bf3

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