This repository has been archived on 2026-04-16. You can view files and clone it, but cannot push or open issues or pull requests.
substrate-sdk-python/substrate_sdk/django/apps.py
Tyler King 89a054d656 initial: substrate-sdk-python v0.1.0
Python SDK for shellbound Django applications.
Provides ShellApp, ShardContext, ShellboundMiddleware.
Emits Chronicle events to stdout in dev mode.

Includes fix for IndexError in apps.py when
DJANGO_SETTINGS_MODULE has no dots (e.g.
instance_settings). Shard name now falls back
safely without eager default argument parsing.

Implements SHELLBOUND-APP-0001 §4 (dev mode).
Wired into entropyopposition as of 2026-03-18.
2026-03-18 13:53:58 -04:00

28 lines
975 B
Python

"""Django app config — registers shard with shell at startup."""
import os
from django.apps import AppConfig
class ShellboundDjangoApp(AppConfig):
name = "substrate_sdk.django"
label = "substrate_sdk"
verbose_name = "Substrate Shell SDK"
default_auto_field = "django.db.models.BigAutoField"
def ready(self):
from substrate_sdk import ShellApp
from substrate_sdk.django.middleware import set_emitter
from substrate_sdk.django.signals import connect_signals
shard_name = os.environ.get("SUBSTRATE_SHARD_NAME")
if not shard_name:
parts = os.environ.get("DJANGO_SETTINGS_MODULE", "django-app").split(".")
shard_name = parts[-2] if len(parts) >= 2 else parts[0]
version = os.environ.get("SUBSTRATE_SHARD_VERSION", "0.0.0")
app = ShellApp(shard_name=shard_name, version=version)
app.register()
set_emitter(app.emitter)
connect_signals(app.emitter)