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](images/dag.png "Dependency DAG")

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](images/dag2.png "Dependency DAG")


![alt text](images/dag3.png "Dependency DAG")
## 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.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mungo 0.3.0
File Size Uploaded
mungo-0.3.0.tar.gz 13.7 kB Details

Release files / mungo-0.3.0.tar.gz

Download URL mungo-0.3.0.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
963e16b53aef609ec41d14bb0e6f62b72a40c840d9703aa8ddd1a7cd434cbba1
BLAKE2b-256 checksum
How to use checksums
e75ddfffe7b1b9a61df6abee95a1e7679b73aadb3139bc89b09646b4e95a7078
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/38.4.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

Release history Release notifications | RSS feed

0.8.1

1 release file

0.8.0

1 release file

0.7.6

1 release file

0.7.5

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.7

1 release file

0.6.6

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.2

1 release file

0.3.1

1 release file

This release

0.3.0 This release

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.1.8

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.2

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page