Getting started

Installation

pip install singlejson

Quickstart

from singlejson import JSONFile, load, sync, JsonSerializationSettings

# Work with a single file
with JSONFile("settings.json", default_data={"theme": "dark"}) as jf:
    jf.json["count"] = 1  # saved automatically on clean exit

# Shared instance via pool
jf = load("data.json", default_data={})
jf.json["x"] = 42
sync()  # persist all pooled files

# Control formatting
jf.settings = JsonSerializationSettings(indent=2, sort_keys=True, ensure_ascii=False)
jf.save()

Why singlejson?

  • Minimal API with sensible defaults

  • Safe writes via save_atomic()

  • Robust error handling (invalid JSON recovery, clear exceptions)

  • Thread-safe pooling so the same path uses one in-memory object