Maybe we could a project-specific (or package-specific) configuration, similar to Rust’s editions:
When creating editions, there is one most consequential rule: crates in one edition must seamlessly interoperate with those compiled with other editions.
In other words, each crate can decide when to migrate to a new edition independently. This decision is ‘private’ - it won’t affect other crates in the ecosystem.
In Rust it’s specified in the Cargo.toml
, but we could use the py.typed
or pyproject.toml
for that.
And instead of year-labelled “editions”, a minimal key-value format will suffice for our purposes, so that we can write something like promote_types = false
.