Tools for Value-Driven Design
Tools intended to help with modelling decisions in a value centric design process. The intent is to keep this as generic as possible, as some of this decision modelling is suited to generic decision-making, non-design activities with a little massaging.
Features
- Concept Design Analysis (CODA) method implementation
- Requirements weighting with a Binary Weighting Matrix
- Programmatic or Spreadsheet based model creation (via Excel workbooks or Google Sheets).
- Native JSON serialisation for both CODA models and Binary Weighting Matrices (human-readable, git-diff-friendly).
- Command-line interface for quick model inspection and interactive weighting
Install
pip install vdd
CLI
vdd ships with a command-line interface for the two core workflows.
Inspect a CODA model
Load a CODA model from an Excel file and print the overall design merit alongside a per-requirement satisfaction summary:
vdd coda path/to/model.xlsx
By default the compact Excel format is assumed. Pass --parser full for the
standard format:
vdd coda path/to/model.xlsx --parser full
Weight requirements interactively
Step through a pairwise comparison of requirements and print the resulting normalised scores:
vdd requirements weight "Lightweight" "Stiff" "Durable"
Questions are shuffled by default. Pass --no-shuffle to work through them
in a fixed order.
JSON model i/o
Both CODA models and Binary Weighting Matrices serialise to and from a flat, human-readable JSON format. This is handy for version-controlling models or moving them between the two tools.
from vdd.coda.models import CODA
from vdd.requirements.models import BinWM
# Weight requirements with a binary weighting matrix, then persist it.
bwm = BinWM('Stiffness', 'Friction', 'Weight')
bwm.prompt()
bwm.to_json('weights.json')
# Seed a CODA model directly from the weighting matrix scores.
coda = CODA()
coda.add_requirements_from(bwm)
# Round-trip a CODA model through JSON.
coda.to_json('model.json')
reloaded = CODA.read_json('model.json')
to_json() returns a string when no path is given. to_dict() /
from_dict() expose the same data as plain-python dicts. The BinWM
format ({"requirements": [...], "binary_matrix": [[...]]}) is the
same shape used by the bundled example fixtures.
Documentation
Currently just stored in the repo.
Development
In the repository root:
uv sync
Releases
Managed by Release Please with auto-versioning. Changes to default branch will be accumulated in a release PR based on Conventional Commits. Merging the release PR will automatically publish the versioned package to PyPI.
Roadmap
- Model sets for comparative work (rather than a single set of characteristic parameter values)
- Improved visualisation
- Export CODA models to Excel template
- House of Quality style requirement/characteristic weighting
- Pandas everywhere (v1.x)
References
Based on my own degree notes and open access literature:
- M.H. Eres et al, 2014. Mapping Customer Needs to Engineering Characteristics: An Aerospace Perspective for Conceptual Design - Journal of Engineering Design pp. 1-24 http://eprints.soton.ac.uk/id/eprint/361442
Metadata
Release files for vdd 3.1.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 | |
|---|---|---|---|---|
| vdd-3.1.0.tar.gz | 121.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vdd-3.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 194.9 kB
Release files / vdd-3.1.0.tar.gz
| Download URL | vdd-3.1.0.tar.gz |
|---|---|
| Size | 121.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0d1eb2eaa1bdb04614dbc59a77b537fe5cf407d042bbb1e260dfbce0a6fd48e
|
|
BLAKE2b-256 checksum How to use checksums |
4d2571a1f4008d991f141ba7915897458e0224432ef86e2bd67b9cb4ac149416
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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":true}
|
Release files / vdd-3.1.0-py3-none-any.whl
| Download URL | vdd-3.1.0-py3-none-any.whl |
|---|---|
| Size | 73.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f548d2821d7c9d63c3c7d1d39a16757b58b6160789abc3d2e371f6d4bc01ef2
|
|
BLAKE2b-256 checksum How to use checksums |
0f2bc0f542dccbf0b5b1b3b4d14d34f94578033f48a06b1bfe75797e2f57363f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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":true}
|
Security for vdd 3.1.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.