dough
Roll your own typed wrapper.
[!WARNING]
doughis still pre-1.0. The API is still evolving and can break in minor releases.
dough is a small framework for building typed Python wrappers around the output files of simulation codes.
It ships the generic machinery — file parsers, declarative output mappings, optional library converters — and stays out of the way of the code-specific details.
Code-specific wrappers live in their own packages (see Packages built on dough below).
🌯 The current layers
- Parsers — turn one output file into a plain dict. One parser per file format; stateless, with a single
parse(content)method. - Output mappings — frozen dataclasses whose fields are
Annotated[T, Spec(...)]. Each field declares the output's name, type, unit (in its docstring), and how to extract it from the parsed dicts via aglomSpec. One source of truth per quantity. - Converters — optional adapters that turn base Python outputs into
ase,pymatgen, oraiida-coreobjects. Heavy third-party imports stay lazy so wrapper packages don't pay for them at import time.
See the outputs design page for the full picture.
🧪 Testing
dough.testing ships shared pytest fixtures (json_serializer, robust_data_regression_check) used by downstream wrapper packages for regression tests.
It's an opt-in plugin — activate it in your top-level conftest.py with pytest_plugins = ["dough.testing.plugin"].
See the testing design page.
🚀 Bootstrapping a wrapper
First create a git-tracked package directory:
mkdir my-package
cd my-package
git init
Or clone a fresh repo from e.g. GitHub. Then copy the template:
copier copy --trust https://github.com/mbercx/dough .
This renders the typed-output scaffolding, then chains an opinionated non-interactive python-copier run for the Python project skeleton.
📦 Packages built on dough
| Package | Code | Status |
|---|---|---|
qe-tools |
Quantum ESPRESSO | alpha — pw.x, dos.x outputs |
strudel |
VASP | alpha — basic outputs + magnetization |
📚 Docs
Full documentation at mbercx.github.io/dough.
🤝 Contributing
It's still early days, and too soon to accept external contributions. Feedback is most welcome though, feel free to open issue!
Metadata
Release files for dough 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dough-0.6.0.tar.gz | 58.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dough-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.1 kB
Release files / dough-0.6.0.tar.gz
| Download URL | dough-0.6.0.tar.gz |
|---|---|
| Size | 58.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e73b5979b3441d6353b8ecca5fe1d0fe7da4c3bf621a10737d2677d13de8cef
|
|
BLAKE2b-256 checksum How to use checksums |
0651250fd48372a5eb2c5aee1e8ba42d64bda8eb7b7e06675ad7071c3cbf7456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 20, 2026.
Transparency logRelease files / dough-0.6.0-py3-none-any.whl
| Download URL | dough-0.6.0-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
289568e93db39973ec2d2f185b1295de304ee8929084d1d5467982630a3b9808
|
|
BLAKE2b-256 checksum How to use checksums |
c90895bd60599fda808510cc50c4d9724b0a722e032187c50a59b8547a52d330
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 20, 2026.
Transparency logSecurity for dough 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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dough-0.6.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 20, 2026.
Transparency logA 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.