Skip to main content

mungo

IMPORTANT WARNING mungo is experimental, things are very likely to break.

mungo acts as a drop-in replacement for conda create and conda install - but with way faster environment resolution. The improvements in speed are achieved by employing linear programming instead of sat-solving and caching of intermediate results (see "The ILP" for more information).

Note that we do not want to replace conda - we merely wish to share our solution so that it can be tested and perhaps someday be integrated into conda itself.

Caveats

  • mungo only exposes basic functionality:
    • install (package_spec)+ (--name NAME)? (--channel CHANNEL)* (--file FILE)?
    • create  (package_spec)* (--name NAME)? (--channel CHANNEL)* (--file FILE)?
  • mungo's solutions will not be the same as conda's.
  • mungo cannot handle custom channel urls. Any channel which has repodata.json.bz2 files available from https://conda.anaconda.org/CHANNEL/ARCH is fine, though.
  • mungo only reads channels from ~/.condarc (but also uses the --channel arguments, if supplied, of course).
  • mungo only supports linux at the moment.

Installation

You need a working conda installation, since actual package installation is delegated to conda.

from PIP

pip install mungo

Examples

# create an environment named 'foo' with the specified packages
mungo create -n foo "python>=3.7" pulp packaging pyyaml

# create an environment from an environment file (such as mungo.yml)
mungo create --file mungo.yml

# install packages into the current environment
mungo install bwa

# install packages into a different environment
mungo install -n foo bwa

The ILP

mungo uses an integer linear program to determine a configuration of compatible packages which maximizes version numbers while also keeping channel order in mind.

alt text

After merging, ILP variables ∈ {0, 1} are created for each p-node. These variables relate to (package, version) configurations and tell us whether a configuration is selected for installation (1) or not (0). In a second step, the following ILP constraints are generated from the constrain nodes defined above: For each parent p (variable), the sum of all children (variables) C must be greater or equal to p; in other words: If p is selected, at least one available version of each dependent package must also be selected. If p is not selected for installation (i.e. p = 0), installation status of its dependencies is not relevant (for p).

alt text

alt text

Changelog

  • version 0.1.4: Show packages that get updated/downgraded/installed.
  • version 0.1.3: Prioritize channels over version numbers. Add '-y/--yes' flag to skip package installation confirmation.
  • version 0.1.0: Initial version.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mungo-0.8.1.tar.gz (170.5 kB view details)

Uploaded Source

File details

Details for the file mungo-0.8.1.tar.gz.

File metadata

  • Download URL: mungo-0.8.1.tar.gz
  • Upload date:
  • Size: 170.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.3

File hashes

Hashes for mungo-0.8.1.tar.gz
Algorithm Hash digest
SHA256 bb5e0e5996870048d204de733ac7f1d0a575fa8953f1a2cba5e358230c197f81
MD5 5d43eaa4c38ab5d3699461c4f433fc4a
BLAKE2b-256 efb18a2a3a08b28590338cca60a410fc5805121973d75bf04977508ee13d4911

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.1 This release

1 file

0.8.0

1 file

0.7.6

1 file

0.7.5

1 file

0.7.4

1 file

0.7.3

1 file

0.7.2

1 file

0.7.1

1 file

0.7.0

1 file

0.6.7

1 file

0.6.6

1 file

0.6.5

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.5.4

1 file

0.5.3

1 file

0.5.1

1 file

0.5.0

1 file

0.4.3

1 file

0.4.2

1 file

0.4.1

1 file

0.4.0

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

0.2.6

1 file

0.2.5

1 file

0.2.3

1 file

0.2.2

1 file

0.1.8

1 file

0.1.6

1 file

0.1.5

1 file

0.1.2

2 files

0.1.0

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page