Skip to main content

Templated from python-copier

dough

Roll your own typed wrapper.

[!WARNING] dough is 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 a glom Spec. One source of truth per quantity.
  • Converters — optional adapters that turn base Python outputs into ase, pymatgen, or aiida-core objects. 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)

Source distribution for dough 0.6.0
File Size Uploaded Provenance
dough-0.6.0.tar.gz 58.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dough 0.6.0
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

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.

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