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.4.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.4.0
File Size Uploaded Provenance Actions
stoms-0.4.0.tar.gz 325.3 kB Without provenance Details for stoms-0.4.0.tar.gz

Built distribution (wheel)

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

Total release size: 440.2 kB

Release files / stoms-0.4.0.tar.gz

Download URL stoms-0.4.0.tar.gz
Size 325.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e64aef5cc23e0ad2adce700e6241d621fc8175982d5cccfd0415a966ea58245f
BLAKE2b-256 checksum
How to use checksums
079751f2c8b2c650d5a2c6218e93718716f7a16f88858379dfa0cffcb45dd58e
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.4.0-py3-none-any.whl

Download URL stoms-0.4.0-py3-none-any.whl
Size 114.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8c1ea8ff171dde6f88803635d41e0a54ddbea1024c7f6dad7b75ff4b94faab9
BLAKE2b-256 checksum
How to use checksums
7abe2911b437cb04b96ae040c9aad29758a9090be087a38a7b204c974fa11200
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.4.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