Specifications
This section aggregates all the currently relevant interoperability specifications available in the conda ecosystem.
This section is a work in progress. These codes can be used to identify status:
- (status: pending): Pending standardization (no CEP available yet)
- (status: in progress): Standardization in progress (CEP being written / discussed)
- (status: ready): Standardization finished, ready to be summarized here (CEP approved)
- (status: done): Section standardized and written.
The conda package lifecycle
Since the specifications below assume a certain familiarity with conda packaging, here we offer a quick overview of how conda packages are created, distributed and used.
conda packages are compressed archives that ship compiled software ready to run on a given target machine. They are often built from source by aggregating dependency metadata and build scripts in a recipe. The resulting artifacts are usually served from conda channels (e.g. conda-forge
), which provide platform-specific subdirectories (subdirs), each with the aggregated metadata from the available packages (repodata).
conda clients take user requested specifications (e.g. python=3
) and query the platform-specific repodata from the configured channels to find out which available packages best satisfy the user request. The resulting artifacts are then downloaded, extracted and installed into its target location, a conda environment.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in the documents below are to be interpreted as described in RFC2119 when, and only when, they appear in all capitals, as shown here.
More specifically, violations of a MUST or MUST NOT rule MUST result in an error. Violations of the rules specified by any of the other all-capital terms MAY result in a warning, at discretion of the implementation.
Package Distribution Metadata
- Names and package identifiers (status: ready)
- Versioning (status: in progress)
- Dependency specifiers (status: in progress)
Distributable and virtual packages
- Distributable packages:
- Overview of contents (status: pending)
- The
info/
folder (status: pending) - The
Menu/
directory (status: ready) - File formats:
.tar.bz2
and.conda
(status: pending)
- Virtual packages (status: in progress)
Channels
- Channel identifiers (status: ready)
- The channel interface (status: pending)
- Repodata (status: pending)
- Repodata patches (status: pending)
channeldata.json
(status: pending)- Attestation and signing (status: ready)
Package Installation Metadata
- The conda environment structure (status: in progress)
- Recording installed packages (status: in progress)
- Processing
Menu/*.json
items (status: ready)
Package Building
- The
meta.yaml
file format (status: pending) - The
recipe.yaml
file format (status: ready)
Environment Sharing
- Text spec input files (status: ready)
environment.yml
files (status: ready)- Lockfiles (status: pending)