All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to calendar versioning in the
YY.M.MICRO
format.
- Require
libmambapy
v2. This is a big refactor inlibmamba
internals, which also allowed us to remove a lot of code inconda-libmamba-solver
. (#457)
CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED
has no effect anymore. Channels coming from installed packages are no longer added to the channel list. (#411 via #457)- Removed
conda_libmamba_solver.state.BaseIndexHelper
. The base class is nowconda_libmamba_solver.index.IndexHelper
. (#457) - Verbose logging in
libsolv
has a big overhead inlibmamba
v2, so we have disabled it by default (even if the user adds-vvv
flags to the CLI). To opt-in, please setCONDA_LIBMAMBA_SOLVER_DEBUG_LIBSOLV
to a truthy value. (#457) - Python 3.8 is no longer supported. The minimum version is now 3.9. (#457)
- @jaimergp
- Use
Solver
instance configuration to initialize thelibmamba
context without implicitly relying on theconda
context settings. (#525) - Fix conda-build compatibility regression where arch-specific outputs can't be found in the test phase if a
noarch
output was built first. (#531)
- Add installation workarounds FAQ with conda-standalone. (#505 via #511)
- Update user guide to reflect conda-libmamba-solver being the default solver in conda. (#516 via #517)
- Include
mamba-org/mamba
as a required cloned repository for setting up a dev environment. (#528)
- @jaimergp
- @jjhelmus made their first contribution in #528
- @justmarkham made their first contribution in #510
- Allow wildcards in package names for
conda remove
(e.g.conda remove "python-*"
). (#434 via #435) - Avoid duplicate channel listing when using channel-pinned specs like
channel::package
. (#449) - Fix a performance regression where
.solv
repodata cache files were not being loaded when available. (#481 via #482) - Do not ignore virtual packages as input specs. (#480 via #485)
- Pin
libmambapy <2
to defend against upcoming API changes. (#492)
- Document development workflows with devcontainers. (#451)
- Add DevContainer configurations for local development workflows. (#451)
- @jaimergp
- @tl-hbk made their first contribution in #449
- @zklaus made their first contribution in #476
- Prioritize explicitly requested specs with stricter constraints over implicit ones or name-only specs (e.g. a CLI-specified
name=version=build
will be sent to the solver before CLI-specifiedname=version
andname
). This happens to fix #391. (#381) - Load
pkgs_dirs
records when called in offline mode. (#396 via #423)
- Fix a regression introduced in #378, where certain solves would hard crash due to the given specs input order. (#391 via #381)
- Properly propagate customized local channels (conda-build workspaces). Requires
libmamba 1.5.6
or above. (#398 via #401) - Do not raise an error if an unsupported
MatchSpec
field can be safely dropped instead. Currently ignoringurl
,md5
andsha256
. (#418 via #421, #427 via #429). - Do not crash if a stateless repodata cache is accessed with
--offline
or--use-index-cache
. (#396 via #423).
- Remove old
SolverOutputState.specs
preparation logic fromstate.py
, which was no longer in use since 23.9.0. Instead, enumerate all known specs in a certain order (see Enhancements for details). This list is then consumed bySolver._specs_to_tasks()
as usual. (#381)
- @isuruf made their first contribution in #401
- @jaimergp
- Add some boundary checks to
CONDA_LIBMAMBA_SOLVER_MAX_ATTEMPTS
. (#394, #403)
- Instantiate
IndexHelper
in offline mode for compatibility with conda-build. Otherwise the index can get out of sync during long build processes. (#386 via #395)
- Use new conda-sphinx-theme for documentation site. (#367 via #370)
- Reorganize the layout of the documentation site. (#370)
- @dholth
- @jaimergp
- @jezdez
- @travishathaway made their first contribution in #370
- Raise a friendlier
InvalidSpec
error instead ofRuntimeError
when libmamba detects a problem in the configured solver jobs. (#352 via #357) - Ensure specs,
SolverInputState.installed
andSolverInputState.virtual
containers are consistently sorted. (#378)
- Configure pinned specs just once to avoid solver bugs related with their persistence (i.e. inability to downgrade environments if pinned specs are present and a transient dependency needs to be removed). (#354 via #355)
- Detect whether a channel is part of a multichannel so the latter is used in the
PackageRecord
entries for conda-build. Fixes an issue with conda-build and custom multichannels. (#363 via #365) - Allow authenticated URLs in
default_channels
and other multichannels. (#364 via #366) - Preserve authentication while reloading local channels. (#366)
- @jaimergp
- Do not use
libmamba
's default signal handler so users canCtrl-C
fromconda
. (#337 via #340) - Defer conda-build-specific exception definition and import until it is needed by the solver. (#342)
- Interpret "excluded by strict priority" solver errors as proper satisfiability conflicts and avoid printing related yet uninformative warnings. (#343)
- Ensure that historic specs are kept in the environment, even if that means raising a conflict. (#341 via #345)
- Document environment variables used for advanced configuration. (#349)
- Require
libmambapy >=1.5.3
for improved signal handling andMatchSpec
syntax compliance. (#347)
- @dholth
- @jaimergp
- Massage bracket-containing specs (e.g.
ca-certificates[version='>=2023']
) so they are understood bylibmambapy.Query
, fixing a bug whereconda
would erroneously complain about no package records matching the configured pinned specs. (#327 via #328)
- @jaimergp
- Use the conda version reported at runtime (instead of the one reported by
conda list
) to figure out whether there are conda updates available. (#316) - Allow the index to be empty in
--offline
runs with no local cache available for the configured channels. (#323)
- @costrouc
- @jaimergp
- Increase performance of
notify_conda_outdated
logic. (#298)
- Prevent solver from bouncing between two compatible solutions when the same command is run twice in a row. (#302)
- @costrouc
- @jaimergp
- Expose libmamba's
repoquery
search features as a conda subcommand plugin. (#258) - Rewrite how we create tasks for
libsolv
, making use oflibmamba
'sadd_pin
features. Requireslibmambapy >=1.5.1
. (#270, #288) - Name-only pins will lock the corresponding package if installed. (conda#13031 via #289)
- Use the
.solv
cache for repodata if available and recent. (#295)
- Handle commands with no channels passed gracefully. (#256)
- Workaround for missing
noarch
field in returnedPackageRecord
payload. (#257) - Port logic from conda/conda#9614, which fixes
a bug where the
--prune
flag was not working correctly inconda env update
commands. (#270) - Ensure environments are not aggressively updated to higher priority channels under some conditions. (#240 via #270, #285)
- Do not inject those channels from installed packages that do not exist or are unavailable. (#262 via #274)
- Correctly print all configured channels in
PackagesNotFoundError
exceptions. (#284) - Do not crash if a
MatchSpec
with a build string is specified in the CLI and there's a pinned spec for the same package name. (#286 via #289) - Only apply
defaults::pkg
workarounds for the default valuedefault_channels
. (#292)
- Users won't be able to override pinned specs with incompatible CLI specs anymore. Instead they must modify their pinned specs explicitly. (conda#9016 via #289, #294)
- Document intentional deviations from conda's
classic
solver behavior. (#289)
- Explain why
defaults::pkg_name
is broken libmamba 1.5.x (details). (#266)
- Add basic integrations for local channels in conda-build. (#194)
- Add backwards-compatible support for the new namespaced settings in
libmamba.Context
. (#192 via #193) - Fixes an error where a user-supplied package in the CLI would get dropped if the argument happened to match a larger string in the argument list. (#221 via #222)
- Fix authentication in package downloads. (#216 via #226)
- Fix unhandled channels coming from injected virtual packages in
conda-lock
. (#230 via #234) - Handle URL-encoded channels correctly with recent
libmamba
versions. (#247 via #248)
- Added notes about development workflows with libmamba from source. (#191)
- Adding libmamba/libmambapy as development dependencies within docker images. (#191)
- @costrouc
- @jaimergp
- @conda-bot
- @pre-commit-ci[bot]
- Provide a
CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED
environment variable to prevent channels from being injected from installed packages. This is useful for air-gapped environments where outside channels are not available. (#108 via #184) - Simplify
libmambapy.Context
initialization so we only set the bits that we use. (#209) - Use the new
RepoInterface
and remove theSubdirData
subclass workarounds, which requiresconda 23.5.0
. (#210)
- Fix an issue where running
conda update <package>
would result in the package being downgraded if no newer versions were available. (#71 via #158) - Ensure unauthenticated channels are not re-injected in the channel lists from installed packages if an authenticated equivalent is already present. (#108 via #184)
- Honor
context.repodata_threads
. (#200) - Do not set
quiet
manually whencontext.json
is true. (#187)
- Remove unneeded user-agent tests. (#183)
- Document known solver behavior differences. (#115, #131 via #197)
- Update development docs to reflect changes in build system and other inaccuracies. (#208)
- Add tests reproducing the known solver differences. (#115, #131 via #197)
- Skip tests on libmamba 1.4.2 temporarily to workaround some test failures. Tracked by #186. (#187)
- @jakirkham made their first contribution in #189
- @costrouc
- @jaimergp
- @jezdez
- @kenodegard
- @conda-bot
- @pre-commit-ci[bot]
- Simplify exception parsing and enable new (experimental) conflict reports in
libmamba
. (#102 via #103, #160) - Use
conda
'sSubdirData
for all repodata fetching and caching. (#59, #68 via #65, #171)
- Disable lockfiles within libmambapy to conform with conda's behavior of not using them. (#120)
- Fix JSON serialization errors in some exceptions. (#140 via #142)
- Fix API breakage upstream:
SubdirData.cache_path_json
property changed fromstr
toPrefixPath
. Depend directly onboltons.setutils.IndexedSet
. (#151) - Updated bundled conda recipe and corresponding CI workflow. (#166)
- Bumped minimum conda version from 22.11.1 -> 23.3.0 due to change in boltons IndexedSet. (#170)
- Add workaround for
defaults::<pkg_name>
specs. (#173 via #172)
- Python 3.7 is no longer supported. The minimum version is now 3.8. (#174)
- Change the build-system to
hatchling
+hatch-cvs
for asetuptools-scm
-like versioning setup. (#128 via #127) - Add conda-forge based CI environments. (#133)
- Fix cache directory in flaky test. (#157)
- CI: Pin
minio
to2023-03-13T19-46-17Z
to avoid breaking changes. (#159) - Require
libmamba 1.4.1
or greater and remove unused code paths. (#165)
- @AlbertDeFusco made their first contribution in #142
- @costrouc
- @jaimergp
- @jezdez
- @conda-bot
- @pre-commit-ci[bot]
23.1.0 - 2023-01-31
- Fix "Packages Not Found" error messages to be more accurate and informative. (#96 via #101)
- Ensure solves are deterministic and input order independent. (#75 via #111)
- Fix compatibility errors with newer conda versions >=23.1.0 since we are using an internal API SubdirData. (#118 via #119)
- Mention expected versions and how to upgrade from experimental builds. (#89 via #93)
- CI: Add scheduled runs with self-reported issues. (#60 via #106)
- Fix typo in workflow documentation so it is consistent with the setup page. (#110)
- @costrouc made their first contribution in #110
- @jaimergp
- @jezdez
- @conda-bot
- @pre-commit-ci[bot]
22.12.0 - 2022-12-01
To upgrade to conda-libmamba-solver 22.12.0
please update to conda 22.11.0
using the "classic" solver first:
$ CONDA_EXPERIMENTAL_SOLVER=classic conda install -n base conda=22.11.0
and then install a new version of conda-libmamba-solver:
$ CONDA_EXPERIMENTAL_SOLVER=classic conda install -n base conda-libmamba-solver=22.12.0
Afterwards, please use the new CONDA_SOLVER
environment variable and --solver
as mentioned below.
- Added a new documentation site: https://conda.github.io/conda-libmamba-solver/ (#58)
- Added CEP 4 compatible plugin for conda's
solvers
plugin hook. (#63)
- The
conda-libmamba-solver
package is now generally available, removes theexperimental
label. (#53) - The index will also load channels only listed as part the installed packages in the active prefix. (#52)
- Updated compatibility to mamba 1.0.0 and conda 22.11.0. (#78)
- Deprecate support for Python 3.6.x.
-
Fixed a wrong dependency on libmambapy. (#90)
-
If missing or empty, package records will have their
subdir
field populated by the channel platform. (#53)
22.8.1 - 2022-08-25
- Amend packaging metadata (#51)
22.8.0 - 2022-08-24
- Check if conda is outdated with
libmamba
instead of relying on conda's implementation (#46)
- Rely on conda's
SubdirData
as a fallback for channel protocols not supported bylibmamba
(#49)
- Deprecate
libmamba-draft
solver variant (#45)
- Remove legacy debugging code and file-logging based on stream capture (#48)
22.6.0 - 2022-06-28
- Custom user agent (#29)
- Compatibility with conda-build (#30)
- Enable support for user-defined
repodata_fn
while ignoringcurrent_repodata.json
(#34) - Faster Python version changes (#33)
- Remove base environment protection (#43)
- Fix libmamba 0.23 compatibility (#35)
- Fix handling of
*
-enabled build strings (#36) - Fix
escape_channel_url
problems (#32) - Fix error reporting if S3-backed channels are used (#41)
22.3.1 - 2022-03-23
- Make sure
noarch
packages get reinstalled if Python version changed (#26) - Accept star-only version specs (e.g.
libblas=*=*mkl
) and fix support forchannel::package
syntax (#25) - Enable support for authenticated channels (#23)
22.3.0 - 2022-03-09
First public release
22.2.0 - 2022-02-01
Internal pre-release as a separate repository.