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.
Metadata
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 | Provenance | |
|---|---|---|---|---|
| mungo-0.8.1.tar.gz | 170.5 kB | Without provenance | 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
|
Security for mungo 0.8.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.