Skip to main content

Documentation

STOMS

STOMS (Storage Tool of Minor Significance) is an SQLite-first immutable, provenance-first ledger for ASE structures and their numerical evaluations. The public library is stoms.atomsledger.

SQLite and PostgreSQL are supported backends; SQLite is the portable archive format. Structures, evaluations, trajectories, stored queries, and aggregations are immutable; post-ingestion tags are append-only annotations.

PostgreSQL

PostgreSQL 16 or newer is a supported operational backend. SQLite remains the sole portable archive format. Install the optional driver dependency:

uv sync --extra postgres --dev

Construct a ledger from a normal DSN and a schema it exclusively owns:

from stoms.atomsledger import AtomsLedger, PostgresRepository

ledger = AtomsLedger(
    PostgresRepository("postgresql://user:password@host/database", schema="project")
)

PostgresRepository creates and validates its tables in the selected schema. Do not share that schema with unrelated applications. Export a portable SQLite archive with ledger.export_database("archive.atomsledger", overwrite=True). See the PostgreSQL operational ledger guide for project setup and bidirectional SQLite synchronization.

Integration tests read STOMS_POSTGRES_TEST_DSN. The DSN must identify a disposable database; each test creates and drops its own schema.

Start the local PostgreSQL 16 test service with Docker (Engine + the Compose plugin):

docker compose up -d postgres
export STOMS_POSTGRES_TEST_DSN='postgresql://stoms:stoms@localhost:54329/stoms_test'
uv run pytest tests/postgres

If that fails with a permission error connecting to the Docker socket, your user cannot talk to the Docker daemon yet. Adding yourself to the docker group (sudo usermod -aG docker $USER, then a full logout/login) is the usual fix, but it does not always take effect right away; sudo docker compose up -d postgres works as a reliable fallback.

The Compose database uses in-memory storage and test-only credentials. Stop it after testing with docker compose down; do not use this service for data that must persist.

Install

Add STOMS as a dependency:

uv add stoms
# or
pip install stoms

Optional extras: stoms[postgres] and stoms[vasp].

Development setup

To work on STOMS itself:

uv sync --dev
uv run pytest

Install the optional VASP parser with:

uv sync --extra vasp --dev

Documentation

The documentation is ready for MkDocs publication:

Serve it locally:

uv sync --group docs
uv run --group docs mkdocs serve

License

Copyright 2026 Ralf Wanzenböck.

STOMS is licensed under the Apache License 2.0; see LICENSE.

The structure viewer of stoms serve uses the Jmol element colours and the covalent radii of B. Cordero et al., "Covalent radii revisited", Dalton Trans. (2008) 2832–2838, doi:10.1039/B801115J.

Metadata

Release files for stoms 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stoms 0.6.0
File Size Uploaded Provenance Actions
stoms-0.6.0.tar.gz 364.5 kB Without provenance Details for stoms-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for stoms 0.6.0
File Interpreter ABI Platform Actions
stoms-0.6.0-py3-none-any.whl Python 3 none any Details for stoms-0.6.0-py3-none-any.whl

Total release size: 512.9 kB

Release files / stoms-0.6.0.tar.gz

Download URL stoms-0.6.0.tar.gz
Size 364.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e05b30bd9fe6b78f3c115ff29eaef97edb6451b985fe70de7eae25c419736b6f
BLAKE2b-256 checksum
How to use checksums
c6e01a5996ed4a7d744011a42ac577b43ae0bd4f974dffd67794dc449ab6a841
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / stoms-0.6.0-py3-none-any.whl

Download URL stoms-0.6.0-py3-none-any.whl
Size 148.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae1396e6dfc9a77adb59a162a31dc643f05c23f8abfa6e3fe405651231a82d19
BLAKE2b-256 checksum
How to use checksums
335b50d066798c0a93ce8c004eb249ca76207d9695db76801528ace29704963d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for stoms 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page