Format names and aliases#
Each lockfile format has a version-pinned canonical name and, when a short form reads better at the command line, an unversioned alias.
Names today#
Canonical name |
Unversioned alias |
Files |
|---|---|---|
|
|
|
|
|
|
rattler-lock-v6 also accepts pixi-lock-v6 for compatibility with
docs and tooling that use the pixi-lock-v* naming.
What the two names mean#
The canonical names (conda-lock-v1, rattler-lock-v6) identify one
specific file-format version and never change meaning. conda-lock-v1
will still be conda-lock-v1 after conda-lock-v2 ships. Use these in
committed lockfiles, CI pins, and anywhere a file is exchanged with
another tool.
The unversioned aliases (conda-lock, pixi) resolve to whichever
version is current-stable in the installed conda-lockfiles release. Use
these when you want the latest format and do not need the invocation to
outlive the next release.
Concretely: conda export --format pixi writes rattler-lock-v6 today.
If a later release makes rattler-lock-v7 current-stable, the same
command writes v7.
Alias ordering convention#
The ALIASES tuple in each format module puts the short unversioned
alias first. conda uses the first alias as the display label in
--help output, with the canonical name and any remaining aliases
shown in parentheses:
Lockfiles:
- pixi (rattler-lock-v6, pixi-lock-v6)
- conda-lock (conda-lock-v1)
All names in the tuple, and the canonical name itself, remain valid
everywhere conda accepts a --format value. The ordering only affects
the help label.
When adding a new alias, place the short form first.
Default filenames across versions#
Each format’s default_filenames is the filename users are already
typing (pixi.lock, conda-lock.yml). A new version of the same
format claims the same filenames; conda-lockfiles does not invent
pixi-v7.lock.
That means two export plugins can register the same default_filenames
entry once a new version ships alongside the old one. conda export --file pixi.lock (no --format) needs conda to pick one. Conda today
raises PluginError on that collision;
conda/conda#15963 tracks
the tiebreaker work so conda picks the current-stable plugin. Until
that lands, users pass --format rattler-lock-vN alongside --file pixi.lock to disambiguate.
On the read side, conda env create -f pixi.lock dispatches on file
contents. Each specifier’s can_handle() rejects files it cannot
parse, so both plugins can coexist without manual disambiguation.
--file pixi.lock without --format writes current-stable (whatever
pixi currently resolves to) once the tiebreaker in conda/conda#15963
lands. Pin --format rattler-lock-v6 when the format version needs to
outlive the next alias flip.
Re-exporting a lockfile at a new format version#
Existing pixi.lock files on disk remain valid after an alias flip;
nothing rewrites them. To upgrade one, re-create the environment from
the existing file and re-export at the new format:
conda env create --name lockfile-upgrade --file pixi.lock
conda export \
--name lockfile-upgrade \
--format rattler-lock-v7 \
--file pixi.lock \
--platform linux-64 \
--platform osx-arm64 \
--platform win-64
Pin the new canonical name in the re-export so the command is
unaffected by future alias flips. The same pattern works for
conda-lock-v1 to a future conda-lock-v2.