September 2024 Releases
The September 2024 releases included updates to conda, conda-build, and conda-libmamba-solver! π All of these have been released to both main and conda-forge channels.
Changes in Conda 24.9.0/24.9.1β
To update conda, run:
conda install -n base conda=24.9.1
β¨ Special announcement β¨β
This is an announcement about an important and positive future change in conda's functionality:
Following feedback from conda users about the pre-configuration of the conda code base to favor channels from Anaconda Inc, we've started the process to deprecate hardcoding Anaconda's channels as the default set of channels in the conda source code, which is a remnant of conda's incubation at the company.
In the future, we will rely on providers of conda distributions, such as miniforge or Anaconda (including miniconda), to pre-configure their preferred channels, e.g. by running the necessary conda config --set channels command.
We're also going to continue to work on improving channel management in the foreseeable future and would love to get your feedback.
β¨ What's New? β¨β
- Add
conda.core.index.Indexas a faster drop-in replacement of the realized dictionary index. Note: The loggers are no longer implicitly initialized when fetching the index. Instead, you must explicitly callconda.gateways.logging.initialize_logging. - Alias
conda env removecommand toconda remove --all. - Add a new health check to
conda doctorthat detects if theREQUESTS_CA_BUNDLEenv var points to a non-existent file. - Add
--sha256flag toconda list --explicitso it lists URLs with a SHA256 hash instead of MD5 and makeconda install|createcompatible with these inputs. - Report
condaversion used to generate a@EXPLICITtext file. - Update health checks outputs for consistency.
- Fix Windows to Unix path conversion to handle UNC mounts and root paths.
- Add a new
denylist_channelsconfig option andCONDA_DENYLIST_CHANNELSenvironment variable to explicitly deny using specific channels globally, which is complementing the already existingallowlist_channelsconfig option. - Add
conda commandssubcommand. - Add
conda.testing.fixtures.session_capsys. Use this to capture stdout and stderr within module, package, and session scoped fixtures. - Add
conda.testing.fixtures.session_conda_cli. Use this to invoke conda commands within module, package, and session scoped fixtures. - Add
conda.testing.fixtures.session_tmp_env. Use this to create a conda environment within module, package, and session scoped fixtures.
π§ What Got Fixed? π§β
- Prevent directories that contain conda environments from being specified as an environment prefix when creating new envs; this provides guardrails against the accidental deletion of environments via commands such as
conda rename. - Enable
conda doctorto check whether the environment exists or not before trying to generate a health report. - Fix
conda.common.configuration.ObjectParameter's ability to appropriately handle defaults. conda remove [env] --allcommand no longer deletes empty parent directories for environments that are removed.- Raise an error when attempting to remove non-existent environment.
- Add pre-/post-command hooks to activation subcommands (
activate,deactivate,reactivate,hooks, andcommands). - Replace extensions from end of filename only, not
str.replace(), in two places. - Fix PowerShell activation/deactivation to properly unset environment variables using
$Env:VARIABLE = $nullinstead of$Env:VARIABLE = "". - (24.9.1) Tweak pending deprecation warning for the upcoming changes in channel defaults.
π What Got Deprecated or Got Marked for Future Deprecation? π β
- Mark
conda.core.index.get_indexas pending deprecation. Useconda.core.index.Indexinstead. - Mark
conda.core.index.get_reduced_indexas pending deprecation. Useconda.core.index.ReducedIndexinstead. - Mark
conda.core.index.fetch_indexas pending deprecation. Useconda.core.index.Indexinstead. - Mark
conda.core.index._supplement_index_with_prefixas pending deprecation. Useconda.core.index.Index.reloadinstead. - Mark
conda.core.index._supplement_index_with_cacheas pending deprecation. Useconda.core.index.Index.reloadinstead. - Mark
conda.core.index._supplement_index_with_featuresas pending deprecation. Useconda.core.index.Index.reloadinstead. - Mark
conda.core.index._supplement_index_with_systemas pending deprecation. Useconda.core.index.Index.reloadinstead. - Mark
conda.core.index._make_virtual_packageas pending deprecation. Useconda.models.records.PackageRecord.virtual_packageinstead. - Mark
conda.core.subdir_data.make_feature_recordas pending deprecation. Useconda.models.records.PackageRecord.featureinstead. - Mark
conda.plugins.manager.CondaPluginManager.get_virtual_packagesas pending deprecation. Useconda.plugins.manager.CondaPluginManager.get_virtual_package_recordsinstead. - Mark
conda.misc.explicit(index_args)as pending deprecation. - Mark
conda.cli.main_rename.validate_destinationas pending deprecation. Useconda.cli.install.validate_new_prefixinstead. - Mark
conda.cli.main_env_remove.executeas pending deprecation. Useconda.cli.main_remove.executeinstead. - Mark
conda.activate.path_identityas pending deprecation. Useconda.common.path.path_identityinstead. - Mark
conda.utils.path_identityas pending deprecation. Useconda.common.path.path_identityinstead. - Mark
conda.models.leased_path_entryas pending deprecation. - Postpone removal of
conda.base.context.Context.conda_exetoconda 25.3. - Postpone removal of
conda.cli.python_apitoconda 25.9. - Remove
conda._vendor.appdirs. Useplatformdirsinstead. - Remove
conda._vendor.cpuinfo. - Remove
conda._vendor.distro. Usedistroinstead. - Remove
conda.auxlib.collection.call_each. - Remove
conda.auxlib.collection.firstitem. - Remove
conda.auxlib.compat.NoneType. - Remove
conda.auxlib.compat.primitive_types. - Remove
conda.auxlib.compat.utf8_writer. - Remove
conda.auxlib.exceptions.AssignmentError. - Remove
conda.auxlib.exceptions.AuthenticationError. - Remove
conda.auxlib.exceptions.InitializationError. - Remove
conda.auxlib.exceptions.NotFoundError. - Remove
conda.auxlib.exceptions.SenderError. - Remove
conda.auxlib.type_coercion.boolify_truthy_string_ok. - Remove
conda.auxlib.type_coercion.listify. - Remove
conda.base.context.Context.root_dir. Useconda.base.context.Context.root_prefixinstead. - Remove
conda.base.exceptions. - Remove
conda.cli.main.generate_parser. Useconda.cli.conda_argparse.generate_parserinstead. - Remove
conda.cli.main.init_loggers(context). - Remove
conda.cli.main_rename.validate_src(name). - Remove
conda.cli.main_rename.validate_src(prefix). - Remove
conda.common.configuration.load_file_configs. - Remove
conda.common.decorators.env_override. - Remove
conda.common.decorators. - Remove
conda.common.disk.temporary_content_in_file. Usetempfileinstead. - Remove
conda.core.package_cache_data.download. Useconda.gateways.connection.download.downloadinstead. - Remove
conda.core.package_cache_data.rm_fetched. - Remove
conda.core.package_cache. Useconda.core.package_cache_datainstead. - Remove
conda.core.prefix_data.PrefixData._has_python. - Remove
conda.core.subdir_data.get_cache_control_max_age. Useconda.gateways.repodata.get_cache_control_max_ageinstead. - Remove
conda.exports.fetch_index. Useconda.core.index.fetch_indexinstead. - Remove
conda.exports.IndexRecord. Useconda.models.records.PackageRecordinstead. - Remove
conda.gateways.anaconda_client.EnvAppDirs. Useplatformdirsinstead. - Remove
conda.gateways.connection.adapters.ftp.FTPAdapter.stor. - Remove
conda.gateways.connection.adapters.ftp.parse_multipart_files - Remove
conda.gateways.logging.set_verbosity. Useconda.gateways.logging.set_log_levelinstead. - Remove
conda.gateways.logging.VERBOSITY_LEVELS. - Remove
conda.models.dist.IndexRecord. Useconda.models.records.PackageRecordinstead. - Remove
conda.models.enums.LeasedPathType. - Remove
conda.models.leased_path_entry.LeasedPathEntry. - Remove
conda.plugins.subcommands.doctor.get_prefix. Useconda.base.context.context.target_prefixinstead. - Remove
conda.plugins.subcommands.doctor.health_checks.display_health_checks. - Remove
conda.plugins.subcommands.doctor.health_checks.display_report_heading. - Remove
conda.testing.helpers.set_active_prefix. Usemocker.patch('conda.base.context.Context.active_prefix')instead. - Remove
tests.env.utils.run_command. Useconda_clifixture instead. - Mark
tests.env.utils.make_temp_envs_diras pending deprecation. Usetmp_envs_dirfixture instead. - Mark
conda.gateways.disk.delete.rm_rf(max_retries)as pending deprecated. - Mark
conda.gateways.disk.delete.rm_rf(trash)as pending deprecated. - Mark
conda.gateways.disk.delete.try_rmdir_all_emptyas pending deprecated. Useconda.gateways.disk.delete.rm_rfinstead. - Mark
conda.gateways.disk.delete.move_to_trashas pending deprecated. Useconda.gateways.disk.delete.rm_rfinstead. - Mark
conda.gateways.disk.delete.move_path_to_trashas pending deprecated. Useconda.gateways.disk.delete.rm_rfinstead. - Mark
conda.exports.move_to_trashas pending deprecation. Useconda.gateways.disk.delete.rm_rfinstead. - Mark
conda.activate.ensure_binaryas pending deprecation. Useconda.common.compat.ensure_binaryinstead. - Mark
conda.activate.ensure_fs_path_encodingas pending deprecation. - Mark
conda.common.compat.six_with_metaclassas pending deprecation. Use class'metaclass=keyword argument instead. - Mark
conda.common.compat.openas pending deprecation. Useconda.common.compat.open_utf8instead. - Mark
conda.common.compat.ensure_unicodeas pending deprecation. - Mark
conda.common.compat.ensure_fs_path_encodingas pending deprecation. - Mark
conda.common.compat.FILESYSTEM_ENCODINGas pending deprecation. - Mark
conda.activate.native_path_to_unixas pending deprecation. Useconda.common.path.win_path_to_unixinstead. - Mark
conda.activate.unix_path_to_nativeas pending deprecation. Useconda.common.path.unix_path_to_wininstead. - Mark
conda.activate._Cygpathas pending deprecation. Useconda.common.path._cygpathinstead. - Mark
conda.activate._Cygpath.RE_UNIXas pending deprecation. Useconda.common.path._cygpath.RE_WIN_DRIVEinstead. - Mark
conda.activate._Cygpath.translate_unixas pending deprecation. Useconda.common.path._cygpath._to_unix_driveinstead. - Mark
conda.activate._Cygpath.RE_DRIVEas pending deprecation. Useconda.common.path._cygpath.RE_UNIX_DRIVEinstead. - Mark
conda.activate._Cygpath.translation_driveas pending deprecation. Useconda.common.path._cygpath._to_win_driveinstead. - Mark
conda.activate._Cygpath.RE_MOUNTas pending deprecation. Useconda.common.path._cygpath.RE_UNIX_MOUNTinstead. - Mark
conda.activate._Cygpath.translation_mountas pending deprecation. Useconda.common.path._cygpath._to_win_mountinstead. - Mark
conda.activate._Cygpath.RE_ROOTas pending deprecation. Useconda.common.path._cygpath.RE_UNIX_ROOTinstead. - Mark
conda.activate._Cygpath.translation_rootas pending deprecation. Useconda.common.path._cygpath._to_win_rootinstead. - Mark
conda.utils.unix_path_to_winas pending deprecation. Useconda.common.path.unix_path_to_wininstead. - Deprecate
conda.env.specs.binstarmodule. - Deprecate
conda env [create|update] REMOTE_DEFINITION. Useconda env [create|update] --file=URLinstead. - Mark
conda.testing.integration.BIN_DIRECTORYas pending deprecation. Useconda.common.path.BIN_DIRECTORYinstead. - Mark
conda.common.path.get_bin_directory_short_path()as pending deprecation. Useconda.common.path.BIN_DIRECTORYinstead. - Mark
conda.common.path.is_private_env_nameas pending deprecation. - Mark
conda.common.path.is_private_env_pathas pending deprecation. - Mark
conda shell.SHELL commandsas pending deprecation. Useconda commandsinstead. - The
defaultsmultichannel will stop being the (implicit) default value forchannels. Users relying on this behavior are encouraged to runconda config --add channels defaults. This is pending deprecation, and will be fully deprecated in 25.3. conda config --add/--append channels ...will warn whendefaultsis implicitly added. Inconda 25.3, this behavior will be removed and users should runconda config --add/--append channels defaultsexplicitly if needed. Conda distribution installers like miniforge or miniconda will pre-configure conda channels during installation.- Without an explicit
channelsconfiguration (viacondarcfiles, environment variables, or CLI flags), conda will warn about usingdefaultsimplicitly. In 25.3, an empty list will be used. - Mark the
restore_free_channelconfiguration option as pending deprecation. Addhttps://repo.anaconda.com/pkgs/freeto your channel list afterdefaultsinstead. - Mark
conda.testing.CondaCLIFixtureas pending deprecation. Useconda.testing.fixtures.CondaCLIFixtureinstead. - Mark
conda.testing.conda_clias pending deprecation. Useconda.testing.fixtures.conda_cliinstead. - Mark
conda.testing.PathFactoryFixtureas pending deprecation. Useconda.testing.fixtures.PathFactoryFixtureinstead. - Mark
conda.testing.path_factoryas pending deprecation. Useconda.testing.fixtures.path_factoryinstead. - Mark
conda.testing.TmpEnvFixtureas pending deprecation. Useconda.testing.fixtures.TmpEnvFixtureinstead. - Mark
conda.testing.tmp_envas pending deprecation. Useconda.testing.fixtures.tmp_envinstead. - Mark
conda.testing.TmpChannelFixtureas pending deprecation. Useconda.testing.fixtures.TmpChannelFixtureinstead. - Mark
conda.testing.tmp_channelas pending deprecation. Useconda.testing.fixtures.tmp_channelinstead. - Mark
conda.testing.context_aware_monkeypatchas pending deprecation. Useconda.testing.fixtures.context_aware_monkeypatchinstead. - Mark
conda.testing.tmp_pkgs_diras pending deprecation. Useconda.testing.fixtures.tmp_pkgs_dirinstead. - Mark
conda.testing.tmp_envs_diras pending deprecation. Useconda.testing.fixtures.tmp_envs_dirinstead. - (24.9.1) Remove deprecated testing entrypoint
shell/bin/conda. Usedev/start[.bat]instead.
π What's New in Documentation? πβ
- Document
--platformflag forconda [env] create.
Otherβ
- Update
xonshsupport to accommodate deprecated import path.
Changes in Conda-Build 24.9.0β
To update conda-build, run:
conda install -n base conda-build=24.9.0
β¨ What's New? β¨β
- Reduce render time when there is a large number of unused variants.
π§ What Got Fixed? π§β
- Ensure variables mentioned in
script_envare undefined in the multi-output build environment if they are undefined in the environment thatconda-buildis invoked from. - Variables used in single-line jinja2
forandsetstatements are now properly included in the variant matrix for some edge cases. - Allow undefined jinja variables when a particular metadata block evaluates as skipped.
π What Got Deprecated or Got Marked for Future Deprecation? π β
- Remove
conda_build.build.check_external.patchelfis an explicit conda-build dependency on Linux, so it will always be installed. - Remove
conda_build.metadata._get_env_path. Useconda.base.context.locate_prefix_by_nameinstead. - Remove
conda_build.build._construct_metadata_for_test_from_recipe. Test built packages instead, not recipes (e.g.,conda build --test packageinstead ofconda build --test recipe/).
Changes in Conda-Libmamba-Solver 24.9.0β
To update conda-libmamba-solver, run:
conda install -n base conda-libmamba-solver=24.9.0
π§ What Got Fixed? π§β
- Use Solver instance configuration to initialize the libmamba context without implicitly relying on the conda context settings.
- Fix conda-build compatibility regression where arch-specific outputs can't be found in the test phase if a noarch output was built first.
π What's New in Documentation? πβ
- Add installation workarounds FAQ with conda-standalone.
- Update user guide to reflect conda-libmamba-solver being the default solver in conda.
- Include mamba-org/mamba as a required cloned repository for setting up a dev environment.
We β€οΈ Our Communityβ
Altogether, we had 4 new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible.
- @anki-code made their first contribution in conda#14047
- @SylvainCorlay made their first contribution in conda#14226
- @jjhelmus made their first contribution in conda-libmamba-solver#528
- @justmarkham made their first contribution in conda-libmamba-solver#510