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.Index
as 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 remove
command toconda remove --all
. - Add a new health check to
conda doctor
that detects if theREQUESTS_CA_BUNDLE
env var points to a non-existent file. - Add
--sha256
flag toconda list --explicit
so it lists URLs with a SHA256 hash instead of MD5 and makeconda install|create
compatible with these inputs. - Report
conda
version used to generate a@EXPLICIT
text file. - Update health checks outputs for consistency.
- Fix Windows to Unix path conversion to handle UNC mounts and root paths.
- Add a new
denylist_channels
config option andCONDA_DENYLIST_CHANNELS
environment variable to explicitly deny using specific channels globally, which is complementing the already existingallowlist_channels
config option. - Add
conda commands
subcommand. - 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 doctor
to 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] --all
command 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 = $null
instead 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_index
as pending deprecation. Useconda.core.index.Index
instead. - Mark
conda.core.index.get_reduced_index
as pending deprecation. Useconda.core.index.ReducedIndex
instead. - Mark
conda.core.index.fetch_index
as pending deprecation. Useconda.core.index.Index
instead. - Mark
conda.core.index._supplement_index_with_prefix
as pending deprecation. Useconda.core.index.Index.reload
instead. - Mark
conda.core.index._supplement_index_with_cache
as pending deprecation. Useconda.core.index.Index.reload
instead. - Mark
conda.core.index._supplement_index_with_features
as pending deprecation. Useconda.core.index.Index.reload
instead. - Mark
conda.core.index._supplement_index_with_system
as pending deprecation. Useconda.core.index.Index.reload
instead. - Mark
conda.core.index._make_virtual_package
as pending deprecation. Useconda.models.records.PackageRecord.virtual_package
instead. - Mark
conda.core.subdir_data.make_feature_record
as pending deprecation. Useconda.models.records.PackageRecord.feature
instead. - Mark
conda.plugins.manager.CondaPluginManager.get_virtual_packages
as pending deprecation. Useconda.plugins.manager.CondaPluginManager.get_virtual_package_records
instead. - Mark
conda.misc.explicit(index_args)
as pending deprecation. - Mark
conda.cli.main_rename.validate_destination
as pending deprecation. Useconda.cli.install.validate_new_prefix
instead. - Mark
conda.cli.main_env_remove.execute
as pending deprecation. Useconda.cli.main_remove.execute
instead. - Mark
conda.activate.path_identity
as pending deprecation. Useconda.common.path.path_identity
instead. - Mark
conda.utils.path_identity
as pending deprecation. Useconda.common.path.path_identity
instead. - Mark
conda.models.leased_path_entry
as pending deprecation. - Postpone removal of
conda.base.context.Context.conda_exe
toconda 25.3
. - Postpone removal of
conda.cli.python_api
toconda 25.9
. - Remove
conda._vendor.appdirs
. Useplatformdirs
instead. - Remove
conda._vendor.cpuinfo
. - Remove
conda._vendor.distro
. Usedistro
instead. - 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_prefix
instead. - Remove
conda.base.exceptions
. - Remove
conda.cli.main.generate_parser
. Useconda.cli.conda_argparse.generate_parser
instead. - 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
. Usetempfile
instead. - Remove
conda.core.package_cache_data.download
. Useconda.gateways.connection.download.download
instead. - Remove
conda.core.package_cache_data.rm_fetched
. - Remove
conda.core.package_cache
. Useconda.core.package_cache_data
instead. - 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_age
instead. - Remove
conda.exports.fetch_index
. Useconda.core.index.fetch_index
instead. - Remove
conda.exports.IndexRecord
. Useconda.models.records.PackageRecord
instead. - Remove
conda.gateways.anaconda_client.EnvAppDirs
. Useplatformdirs
instead. - 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_level
instead. - Remove
conda.gateways.logging.VERBOSITY_LEVELS
. - Remove
conda.models.dist.IndexRecord
. Useconda.models.records.PackageRecord
instead. - Remove
conda.models.enums.LeasedPathType
. - Remove
conda.models.leased_path_entry.LeasedPathEntry
. - Remove
conda.plugins.subcommands.doctor.get_prefix
. Useconda.base.context.context.target_prefix
instead. - 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_cli
fixture instead. - Mark
tests.env.utils.make_temp_envs_dir
as pending deprecation. Usetmp_envs_dir
fixture 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_empty
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. - Mark
conda.gateways.disk.delete.move_to_trash
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. - Mark
conda.gateways.disk.delete.move_path_to_trash
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. - Mark
conda.exports.move_to_trash
as pending deprecation. Useconda.gateways.disk.delete.rm_rf
instead. - Mark
conda.activate.ensure_binary
as pending deprecation. Useconda.common.compat.ensure_binary
instead. - Mark
conda.activate.ensure_fs_path_encoding
as pending deprecation. - Mark
conda.common.compat.six_with_metaclass
as pending deprecation. Use class'metaclass=
keyword argument instead. - Mark
conda.common.compat.open
as pending deprecation. Useconda.common.compat.open_utf8
instead. - Mark
conda.common.compat.ensure_unicode
as pending deprecation. - Mark
conda.common.compat.ensure_fs_path_encoding
as pending deprecation. - Mark
conda.common.compat.FILESYSTEM_ENCODING
as pending deprecation. - Mark
conda.activate.native_path_to_unix
as pending deprecation. Useconda.common.path.win_path_to_unix
instead. - Mark
conda.activate.unix_path_to_native
as pending deprecation. Useconda.common.path.unix_path_to_win
instead. - Mark
conda.activate._Cygpath
as pending deprecation. Useconda.common.path._cygpath
instead. - Mark
conda.activate._Cygpath.RE_UNIX
as pending deprecation. Useconda.common.path._cygpath.RE_WIN_DRIVE
instead. - Mark
conda.activate._Cygpath.translate_unix
as pending deprecation. Useconda.common.path._cygpath._to_unix_drive
instead. - Mark
conda.activate._Cygpath.RE_DRIVE
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_DRIVE
instead. - Mark
conda.activate._Cygpath.translation_drive
as pending deprecation. Useconda.common.path._cygpath._to_win_drive
instead. - Mark
conda.activate._Cygpath.RE_MOUNT
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_MOUNT
instead. - Mark
conda.activate._Cygpath.translation_mount
as pending deprecation. Useconda.common.path._cygpath._to_win_mount
instead. - Mark
conda.activate._Cygpath.RE_ROOT
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_ROOT
instead. - Mark
conda.activate._Cygpath.translation_root
as pending deprecation. Useconda.common.path._cygpath._to_win_root
instead. - Mark
conda.utils.unix_path_to_win
as pending deprecation. Useconda.common.path.unix_path_to_win
instead. - Deprecate
conda.env.specs.binstar
module. - Deprecate
conda env [create|update] REMOTE_DEFINITION
. Useconda env [create|update] --file=URL
instead. - Mark
conda.testing.integration.BIN_DIRECTORY
as pending deprecation. Useconda.common.path.BIN_DIRECTORY
instead. - Mark
conda.common.path.get_bin_directory_short_path()
as pending deprecation. Useconda.common.path.BIN_DIRECTORY
instead. - Mark
conda.common.path.is_private_env_name
as pending deprecation. - Mark
conda.common.path.is_private_env_path
as pending deprecation. - Mark
conda shell.SHELL commands
as pending deprecation. Useconda commands
instead. - The
defaults
multichannel 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 whendefaults
is implicitly added. Inconda 25.3
, this behavior will be removed and users should runconda config --add/--append channels defaults
explicitly if needed. Conda distribution installers like miniforge or miniconda will pre-configure conda channels during installation.- Without an explicit
channels
configuration (viacondarc
files, environment variables, or CLI flags), conda will warn about usingdefaults
implicitly. In 25.3, an empty list will be used. - Mark the
restore_free_channel
configuration option as pending deprecation. Addhttps://repo.anaconda.com/pkgs/free
to your channel list afterdefaults
instead. - Mark
conda.testing.CondaCLIFixture
as pending deprecation. Useconda.testing.fixtures.CondaCLIFixture
instead. - Mark
conda.testing.conda_cli
as pending deprecation. Useconda.testing.fixtures.conda_cli
instead. - Mark
conda.testing.PathFactoryFixture
as pending deprecation. Useconda.testing.fixtures.PathFactoryFixture
instead. - Mark
conda.testing.path_factory
as pending deprecation. Useconda.testing.fixtures.path_factory
instead. - Mark
conda.testing.TmpEnvFixture
as pending deprecation. Useconda.testing.fixtures.TmpEnvFixture
instead. - Mark
conda.testing.tmp_env
as pending deprecation. Useconda.testing.fixtures.tmp_env
instead. - Mark
conda.testing.TmpChannelFixture
as pending deprecation. Useconda.testing.fixtures.TmpChannelFixture
instead. - Mark
conda.testing.tmp_channel
as pending deprecation. Useconda.testing.fixtures.tmp_channel
instead. - Mark
conda.testing.context_aware_monkeypatch
as pending deprecation. Useconda.testing.fixtures.context_aware_monkeypatch
instead. - Mark
conda.testing.tmp_pkgs_dir
as pending deprecation. Useconda.testing.fixtures.tmp_pkgs_dir
instead. - Mark
conda.testing.tmp_envs_dir
as pending deprecation. Useconda.testing.fixtures.tmp_envs_dir
instead. - (24.9.1) Remove deprecated testing entrypoint
shell/bin/conda
. Usedev/start[.bat]
instead.
๐ What's New in Documentation? ๐โ
- Document
--platform
flag forconda [env] create
.
Otherโ
- Update
xonsh
support 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_env
are undefined in the multi-output build environment if they are undefined in the environment thatconda-build
is invoked from. - Variables used in single-line jinja2
for
andset
statements 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
.patchelf
is 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_name
instead. - Remove
conda_build.build._construct_metadata_for_test_from_recipe
. Test built packages instead, not recipes (e.g.,conda build --test package
instead 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