Skip to main content

windy-drops-spec

Python bindings (Pydantic v2 models + Literal types) for the windy.drop.v1 manifest format.

Generated from schemas/windy.drop.v1.json — the source of truth.

Install

Not published yet. This package is not on PyPI as of 2026-08-10; the command below is what the install will be once it ships. Until then, run the CLI from a checkout of sneakyfree/windy-drops.

pip install windy-drops-spec
# or
uv add windy-drops-spec

Usage

from windy_drops_spec import DropManifest, DROP_TYPES

manifest = DropManifest.model_validate({
    "schema": "windy.drop.v1",
    "id": "kit-oc5-echo-hq",
    "name": "Echo HQ",
    "type": "control-panel-template",
    "version": "1.0.0",
    "author": [{"name": "Kit OC5", "callsign": "Echo"}],
    "license": "MIT",
})

assert manifest.id == "kit-oc5-echo-hq"
assert manifest.type in DROP_TYPES

Exports

Export Kind Purpose
DropManifest Pydantic v2 BaseModel Runtime validation of any drop manifest
DROP_TYPES tuple 6 v1 reserved drop types
DropType Literal Static type for drop types
PRICING_TYPES tuple 4 pricing types (free / tip-jar / paid / subscription)
PricingType Literal Static type
INTEGRITY_BANDS tuple Eternitas integrity bands
IntegrityBand Literal Static type
CLEARANCE_LEVELS tuple Eternitas clearance levels
ClearanceLevel Literal Static type

Regenerating

The src/windy_drops_spec/_generated.py file is GENERATED from schemas/windy.drop.v1.json. Don't hand-edit.

# Regenerate (datamodel-code-generator is version-pinned — its output
# format drifts across releases, which would fail the CI staleness check)
uvx --with 'datamodel-code-generator==0.70.0' python codegen.py

# Build wheel + sdist
uv build

# Run tests
uv pip install -e .[test] && pytest

CI re-runs codegen.py on every PR and fails if the generated file is stale:

uvx --with 'datamodel-code-generator==0.70.0' python codegen.py
git diff --exit-code -- src/windy_drops_spec/_generated.py

Known limitations (intentional, aligned with windy-drops-artifact-spec)

Both bindings enforce the schema's universal fields, drop-type enum, i18n shape, signature structure, and per-field constraints (length, pattern, enum, min/max). They do NOT enforce JSON Schema if/then dependent constraints (notably "paid pricing requires amount_cents + currency"). That class of validation is enforced server-side at the registry layer (WD-18) per ADR-053. Both bindings are intentionally aligned in what they verify so a manifest accepted by one is accepted by the other (per WD-11 conformance).

Strand reference

Owned by strand WD-2 in docs/DNA_STRAND_MASTER_PLAN.md. Paired with WD-1 (TypeScript Zod bindings on npm as windy-drops-artifact-spec). Cross-binding byte-identity is enforced by WD-11 conformance harness.

License

MIT

Release files for windy-drops-spec 0.1.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 windy-drops-spec 0.1.0
File Size Uploaded
windy_drops_spec-0.1.0.tar.gz 7.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for windy-drops-spec 0.1.0
File Interpreter ABI Platform
windy_drops_spec-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.1 kB

Release files / windy_drops_spec-0.1.0.tar.gz

Download URL windy_drops_spec-0.1.0.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ec7eb57e409b94c2d9d71afbf53d4c864e1e5915201cd8cbd629c0e3ca4274a3
BLAKE2b-256 checksum
How to use checksums
2461de6bf4d4989e4c209c53c2ec70ff3898c943f80a7bb801a66b95effa946d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / windy_drops_spec-0.1.0-py3-none-any.whl

Download URL windy_drops_spec-0.1.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b37b4871210c5def2e0eb340b5eed3531bb118635c52483bf9d9fb8d8a99f3a
BLAKE2b-256 checksum
How to use checksums
5fb29b998c7081bbf67ba204fb3f3cc6b03042cb498a5e82f1639a1450c23e33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release 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