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.bz2files available fromhttps://conda.anaconda.org/CHANNEL/ARCHis fine, though. - mungo only reads channels from
~/.condarc(but also uses the--channelarguments, 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.
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).
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.
Release files for mungo 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mungo-0.8.1.tar.gz | 170.5 kB | Details |
Release files / mungo-0.8.1.tar.gz
| Download URL | mungo-0.8.1.tar.gz |
|---|---|
| Size | 170.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb5e0e5996870048d204de733ac7f1d0a575fa8953f1a2cba5e358230c197f81
|
|
BLAKE2b-256 checksum How to use checksums |
efb18a2a3a08b28590338cca60a410fc5805121973d75bf04977508ee13d4911
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|