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.
28 lines
975 B
Python
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)
|