Skip to content

Package definitions

This section describes how the package definitions are laid out inside the computing/conda GitLab project.

External packages

External packages are defined as those not directly maintained by IGWN members and over whose development we have little or no influence. Examples include gsl, numpy, or astropy.

Pins for these packages are stored in packages/upstream.yaml.

In general the following rules should be followed regarding packages in upstream.yaml:

  1. A package should only be included if it is explicitly required, meaning is it not a direct requirement of another package.
  2. A package should only be included if its version needs to be constrained in some way that is not specified in the requirements of another package.
  3. When a package is added/updated in upstream.yaml, include a good reason for the change (i.e. a link to an issue) in the git commit message.

Examples:

  • numpy is included because we wish to contrain its version to a specific minor release.

  • notebook is required because no other packages require it, but it is useful to allow users to spawn jupyter notebooks from the relevant conda environments.

  • gsl is not included because it is automatically pulled in by its dependents, and we do not need to manually constrain its version.

Internal packages

Internal packages are defined as those directly maintained by IGWN members for the purposes of IGWN research. Each of these packages is defined in its own file in the packages/ directory, named for the package.

Each package should be specified as precisely as possible, including the appropriate build_strings for each Python version, platform, and architecture to ensure compatibility with the rest of the distribution.

See Workflow for more details on how to add or update packages.