Skip to main content

wh40kdc

The 40kdc Warhammer 40K dataset behind a linked, typed API — find units, follow them to their weapons, abilities, phases, and factions. The Python counterpart to @alpaca-software/40kdc-data (npm) and wh40kdc (crates.io), held in behavioral lockstep with both by the shared conformance corpus in the 40kdc-data repository.

pip install wh40kdc
from wh40kdc import Dataset

ds = Dataset.embedded()
unit = ds.units.find("Khârn the Betrayer")
for weapon in unit.weapons:
    print(weapon.name)

What ships:

  • Linked dataset APIDataset with id/name lookups (diacritic- and punctuation-insensitive), reverse indexes, and join queries across units, weapons, abilities, phases, and factions.
  • Importers — ListForge, NewRecruit (JSON / WTC-compact / WTC-full / simple), GW app export, and Rosterizer, all resolving to one Roster shape.
  • Exporters — the same roster formats back out, byte-identical to the TypeScript and Rust implementations.
  • Cruncher — the damage-projection engine (attacks → hits → wounds → unsaved → damage → after-FNP → models-killed) with buff resolution and per-buff attribution.
  • Scoring, terrain, translation — secondary-mission scoring, terrain layout resolution and keystone measurements, and the ability-DSL / scoring-card describers.
  • Validatorvalidate(target, value) against the canonical JSON Schemas, emitting the closed error-code enum shared by all implementations.

The conformance runner (used by the cross-implementation parity differ) is invoked as python -m wh40kdc.runner — see conformance/RUNNER_PROTOCOL.md in the repository.

Development

cd python
uv venv && uv pip install -e ".[dev]"
pytest          # includes the conformance suite when run inside the repo
ruff check .
mypy src

Generated artifacts (_bundle.json, _spec.py, _types.py, src/wh40kdc/schemas/) are produced by the scripts in codegen/ and checked for drift in CI — regenerate with:

python3 codegen/sync_bundle.py && python3 codegen/sync_spec.py && python3 codegen/gen_typeddicts.py

License

MIT. The schema content the dataset describes is CC0; enrichment data is CC BY 4.0 — see the repository's licensing table.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wh40kdc-1.0.23.tar.gz (969.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wh40kdc-1.0.23-py3-none-any.whl (1.0 MB view details)

Uploaded Python 3

File details

Details for the file wh40kdc-1.0.23.tar.gz.

File metadata

  • Download URL: wh40kdc-1.0.23.tar.gz
  • Upload date:
  • Size: 969.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wh40kdc-1.0.23.tar.gz
Algorithm Hash digest
SHA256 a714e7847bf6f43229ba4c5cff0925c5c46f9a0de698b96c4dea6b9a9cf61d4f
MD5 b94fc9ec28c8cc1f9beaf36cbcfb804f
BLAKE2b-256 2a59b9db479770bcf7ee93f86a331ebd8df53a325f5a09d1d030cbd3b54b3768

See more details on using hashes here.

Provenance

The following attestation bundles were made for wh40kdc-1.0.23.tar.gz:

Publisher: validate.yml on wn-mitch/40kdc-data

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wh40kdc-1.0.23-py3-none-any.whl.

File metadata

  • Download URL: wh40kdc-1.0.23-py3-none-any.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wh40kdc-1.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 0bdf9c8e6385456daf3894257f81cc7d00fbcf87a7ab399c04e38d2a186c0b23
MD5 cdecbb0f062d1aca14de4b959c77e9be
BLAKE2b-256 f38021e605d62453da17a9cb06adfe9181a9e5c6a4a8aa4292f382584dda198a

See more details on using hashes here.

Provenance

The following attestation bundles were made for wh40kdc-1.0.23-py3-none-any.whl:

Publisher: validate.yml on wn-mitch/40kdc-data

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.4.1

2 files

1.4.0

2 files

1.3.5

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.0.28

2 files

1.0.27

2 files

1.0.26

2 files

1.0.25

2 files

1.0.24

2 files

This release

1.0.23 This release

2 files

1.0.22

2 files

1.0.21

2 files

1.0.20

2 files

1.0.19

2 files

1.0.18

2 files

1.0.17

2 files

1.0.16

2 files

1.0.15

2 files

1.0.14

2 files

1.0.13

2 files

1.0.11

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.1

2 files

1.0.0

2 files

0.5.18

2 files

0.5.17

2 files

0.5.16

2 files

0.5.15

2 files

0.5.14

2 files

0.5.12

2 files

0.5.11

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

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