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
 
