24.9.0
✨ 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 forseeable future and would love to get your feedback.
Enhancements
- 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
. (#13880, #14267) - Alias
conda env remove
command toconda remove --all
. (#13977) - Add a new health check to
conda doctor
that detects if theREQUESTS_CA_BUNDLE
env var points to a non-existent file. (#12905 via #14037) - 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. (#2903, #7882 via #14048) - Report
conda
version used to generate a@EXPLICIT
text file. (#14048) - Update health checks outputs for consistency. (#14049 via #14079)
- Fix Windows to Unix path conversion to handle UNC mounts and root paths. (#14157)
- 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. (#14176 via #14196) - Add
conda commands
subcommand. (#14215) - Add
conda.testing.fixtures.session_capsys
. Use this to capture stdout and stderr within module, package, and session scoped fixtures. (#14243) - Add
conda.testing.fixtures.session_conda_cli
. Use this to invoke conda commands within module, package, and session scoped fixtures. (#14243) - Add
conda.testing.fixtures.session_tmp_env
. Use this to create a conda environment within module, package, and session scoped fixtures. (#14243)
Bug fixes
- 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
. (#13955) - Enable
conda doctor
to check whether the environment exists or not before trying to generate a health report. (#14042 via #14112) - Fix
conda.common.configuration.ObjectParameter
's ability to appropriately handle defaults. (#14148 via #14149) conda remove [env] --all
command no longer deletes empty parent directories for environments that are removed. (#14173)- Raise an error when attempting to remove non-existent environment. (#14174 via #14199)
- Add pre-/post-command hooks to activation subcommands (
activate
,deactivate
,reactivate
,hooks
, andcommands
). (#14211 via #14212) - Replace extensions from end of filename only, not
str.replace()
, in two places. (#14241) - Fix PowerShell activation/deactivation to properly unset environment variables using
$Env:VARIABLE = $null
instead of$Env:VARIABLE = ""
. (#14237 via #14246)
Deprecations
- Mark
conda.core.index.get_index
as pending deprecation. Useconda.core.index.Index
instead. (#13880) - Mark
conda.core.index.get_reduced_index
as pending deprecation. Useconda.core.index.ReducedIndex
instead. (#13880) - Mark
conda.core.index.fetch_index
as pending deprecation. Useconda.core.index.Index
instead. (#13880) - Mark
conda.core.index._supplement_index_with_prefix
as pending deprecation. Useconda.core.index.Index.reload
instead. (#13880) - Mark
conda.core.index._supplement_index_with_cache
as pending deprecation. Useconda.core.index.Index.reload
instead. (#13880) - Mark
conda.core.index._supplement_index_with_features
as pending deprecation. Useconda.core.index.Index.reload
instead. (#13880) - Mark
conda.core.index._supplement_index_with_system
as pending deprecation. Useconda.core.index.Index.reload
instead. (#13880) - Mark
conda.core.index._make_virtual_package
as pending deprecation. Useconda.models.records.PackageRecord.virtual_package
instead. (#13880) - Mark
conda.core.subdir_data.make_feature_record
as pending deprecation. Useconda.models.records.PackageRecord.feature
instead. (#13880) - Mark
conda.plugins.manager.CondaPluginManager.get_virtual_packages
as pending deprecation. Useconda.plugins.manager.CondaPluginManager.get_virtual_package_records
instead. (#13880) - Mark
conda.misc.explicit(index_args)
as pending deprecation. (#14267) - Mark
conda.cli.main_rename.validate_destination
as pending deprecation. Useconda.cli.install.validate_new_prefix
instead. (#13955) - Mark
conda.cli.main_env_remove.execute
as pending deprecation. Useconda.cli.main_remove.execute
instead. (#13977) - Mark
conda.activate.path_identity
as pending deprecation. Useconda.common.path.path_identity
instead. (#14068) - Mark
conda.utils.path_identity
as pending deprecation. Useconda.common.path.path_identity
instead. (#14068) - Mark
conda.models.leased_path_entry
as pending deprecation. (#14077) - Postpone removal of
conda.base.context.Context.conda_exe
toconda 25.3
. (#14077) - Postpone removal of
conda.cli.python_api
toconda 25.9
. (#14077) - Remove
conda._vendor.appdirs
. Useplatformdirs
instead. (#14077) - Remove
conda._vendor.cpuinfo
. (#14077) - Remove
conda._vendor.distro
. Usedistro
instead. (#14077) - Remove
conda.auxlib.collection.call_each
. (#14077) - Remove
conda.auxlib.collection.firstitem
. (#14077) - Remove
conda.auxlib.compat.NoneType
. (#14077) - Remove
conda.auxlib.compat.primitive_types
. (#14077) - Remove
conda.auxlib.compat.utf8_writer
. (#14077) - Remove
conda.auxlib.exceptions.AssignmentError
. (#14077) - Remove
conda.auxlib.exceptions.AuthenticationError
. (#14077) - Remove
conda.auxlib.exceptions.InitializationError
. (#14077) - Remove
conda.auxlib.exceptions.NotFoundError
. (#14077) - Remove
conda.auxlib.exceptions.SenderError
. (#14077) - Remove
conda.auxlib.type_coercion.boolify_truthy_string_ok
. (#14077) - Remove
conda.auxlib.type_coercion.listify
. (#14077) - Remove
conda.base.context.Context.root_dir
. Useconda.base.context.Context.root_prefix
instead. (#14077) - Remove
conda.base.exceptions
. (#14077) - Remove
conda.cli.main.generate_parser
. Useconda.cli.conda_argparse.generate_parser
instead. (#14077) - Remove
conda.cli.main.init_loggers(context)
(#14077) - Remove
conda.cli.main_rename.validate_src(name)
. (#14077) - Remove
conda.cli.main_rename.validate_src(prefix)
. (#14077) - Remove
conda.common.configuration.load_file_configs
. (#14077) - Remove
conda.common.decorators.env_override
. (#14077) - Remove
conda.common.decorators
. (#14077) - Remove
conda.common.disk.temporary_content_in_file
. Usetempfile
instead. (#14077) - Remove
conda.core.package_cache_data.download
. Useconda.gateways.connection.download.download
instead. (#14077) - Remove
conda.core.package_cache_data.rm_fetched
. (#14077) - Remove
conda.core.package_cache
. Useconda.core.package_cache_data
instead. (#14077) - Remove
conda.core.prefix_data.PrefixData._has_python
. (#14077) - Remove
conda.core.subdir_data.get_cache_control_max_age
. Useconda.gateways.repodata.get_cache_control_max_age
instead. (#14077) - Remove
conda.exports.fetch_index
. Useconda.core.index.fetch_index
instead. (#14077) - Remove
conda.exports.IndexRecord
. Useconda.models.records.PackageRecord
instead. (#14077) - Remove
conda.gateways.anaconda_client.EnvAppDirs
. Useplatformdirs
instead. (#14077) - Remove
conda.gateways.connection.adapters.ftp.FTPAdapter.stor
. (#14077) - Remove
conda.gateways.connection.adapters.ftp.parse_multipart_files
(#14077) - Remove
conda.gateways.logging.set_verbosity
. Useconda.gateways.logging.set_log_level
instead. (#14077) - Remove
conda.gateways.logging.VERBOSITY_LEVELS
. (#14077) - Remove
conda.models.dist.IndexRecord
. Useconda.models.records.PackageRecord
instead. (#14077) - Remove
conda.models.enums.LeasedPathType
. (#14077) - Remove
conda.models.leased_path_entry.LeasedPathEntry
. (#14077) - Remove
conda.plugins.subcommands.doctor.get_prefix
. Useconda.base.context.context.target_prefix
instead. (#14077) - Remove
conda.plugins.subcommands.doctor.health_checks.display_health_checks
. (#14077) - Remove
conda.plugins.subcommands.doctor.health_checks.display_report_heading
. (#14077) - Remove
conda.testing.helpers.set_active_prefix
. Usemocker.patch('conda.base.context.Context.active_prefix')
instead. (#14077) - Remove
tests.env.utils.run_command
. Useconda_cli
fixture instead. (#14077) - Mark
tests.env.utils.make_temp_envs_dir
as pending deprecation. Usetmp_envs_dir
fixture instead. (#14093) - Mark
conda.gateways.disk.delete.rm_rf(max_retries)
as pending deprecated. (#14094) - Mark
conda.gateways.disk.delete.rm_rf(trash)
as pending deprecated. (#14094) - Mark
conda.gateways.disk.delete.try_rmdir_all_empty
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. (#14094) - Mark
conda.gateways.disk.delete.move_to_trash
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. (#14094) - Mark
conda.gateways.disk.delete.move_path_to_trash
as pending deprecated. Useconda.gateways.disk.delete.rm_rf
instead. (#14094) - Mark
conda.exports.move_to_trash
as pending deprecation. Useconda.gateways.disk.delete.rm_rf
instead. (#14118) - Mark
conda.activate.ensure_binary
as pending deprecation. Useconda.common.compat.ensure_binary
instead. (#14144) - Mark
conda.activate.ensure_fs_path_encoding
as pending deprecation. (#14144) - Mark
conda.common.compat.six_with_metaclass
as pending deprecation. Use class'metaclass=
keyword argument instead. (#14144) - Mark
conda.common.compat.open
as pending deprecation. Useconda.common.compat.open_utf8
instead. (#14144, #14169) - Mark
conda.common.compat.ensure_unicode
as pending deprecation. (#14144) - Mark
conda.common.compat.ensure_fs_path_encoding
as pending deprecation. (#14144) - Mark
conda.common.compat.FILESYSTEM_ENCODING
as pending deprecation. (#14144, #14169) - Mark
conda.activate.native_path_to_unix
as pending deprecation. Useconda.common.path.win_path_to_unix
instead. (#14157) - Mark
conda.activate.unix_path_to_native
as pending deprecation. Useconda.common.path.unix_path_to_win
instead. (#14157) - Mark
conda.activate._Cygpath
as pending deprecation. Useconda.common.path._cygpath
instead. (#14157) - Mark
conda.activate._Cygpath.RE_UNIX
as pending deprecation. Useconda.common.path._cygpath.RE_WIN_DRIVE
instead. (#14157) - Mark
conda.activate._Cygpath.translate_unix
as pending deprecation. Useconda.common.path._cygpath._to_unix_drive
instead. (#14157) - Mark
conda.activate._Cygpath.RE_DRIVE
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_DRIVE
instead. (#14157) - Mark
conda.activate._Cygpath.translation_drive
as pending deprecation. Useconda.common.path._cygpath._to_win_drive
instead. (#14157) - Mark
conda.activate._Cygpath.RE_MOUNT
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_MOUNT
instead. (#14157) - Mark
conda.activate._Cygpath.translation_mount
as pending deprecation. Useconda.common.path._cygpath._to_win_mount
instead. (#14157) - Mark
conda.activate._Cygpath.RE_ROOT
as pending deprecation. Useconda.common.path._cygpath.RE_UNIX_ROOT
instead. (#14157) - Mark
conda.activate._Cygpath.translation_root
as pending deprecation. Useconda.common.path._cygpath._to_win_root
instead. (#14157) - Mark
conda.utils.unix_path_to_win
as pending deprecation. Useconda.common.path.unix_path_to_win
instead. (#14157) - Deprecate
conda.env.specs.binstar
module. (#14158 via #14160) - Deprecate
conda env [create|update] REMOTE_DEFINITION
. Useconda env [create|update] --file=URL
instead. (#14158 via #14160) - Mark
conda.testing.integration.BIN_DIRECTORY
as pending deprecation. Useconda.common.path.BIN_DIRECTORY
instead. (#14188) - Mark
conda.common.path.get_bin_directory_short_path()
as pending deprecation. Useconda.common.path.BIN_DIRECTORY
instead. (#14188) - Mark
conda.common.path.is_private_env_name
as pending deprecation. (#14189) - Mark
conda.common.path.is_private_env_path
as pending deprecation. (#14189) - Mark
conda shell.SHELL commands
as pending deprecation. Useconda commands
instead. (#14215) - 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. (#14178 via #14227) 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. (#12356 via #14227)- 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. (#14227) - Mark the
restore_free_channel
configuration option as pending deprecation. Addhttps://repo.anaconda.com/pkgs/free
to your channel list afterdefaults
instead. (#14231 via #14269) - Mark
conda.testing.CondaCLIFixture
as pending deprecation. Useconda.testing.fixtures.CondaCLIFixture
instead. (#14243) - Mark
conda.testing.conda_cli
as pending deprecation. Useconda.testing.fixtures.conda_cli
instead. (#14243) - Mark
conda.testing.PathFactoryFixture
as pending deprecation. Useconda.testing.fixtures.PathFactoryFixture
instead. (#14243) - Mark
conda.testing.path_factory
as pending deprecation. Useconda.testing.fixtures.path_factory
instead. (#14243) - Mark
conda.testing.TmpEnvFixture
as pending deprecation. Useconda.testing.fixtures.TmpEnvFixture
instead. (#14243) - Mark
conda.testing.tmp_env
as pending deprecation. Useconda.testing.fixtures.tmp_env
instead. (#14243) - Mark
conda.testing.TmpChannelFixture
as pending deprecation. Useconda.testing.fixtures.TmpChannelFixture
instead. (#14243) - Mark
conda.testing.tmp_channel
as pending deprecation. Useconda.testing.fixtures.tmp_channel
instead. (#14243) - Mark
conda.testing.context_aware_monkeypatch
as pending deprecation. Useconda.testing.fixtures.context_aware_monkeypatch
instead. (#14243) - Mark
conda.testing.tmp_pkgs_dir
as pending deprecation. Useconda.testing.fixtures.tmp_pkgs_dir
instead. (#14243) - Mark
conda.testing.tmp_envs_dir
as pending deprecation. Useconda.testing.fixtures.tmp_envs_dir
instead. (#14243)
Docs
Other
- Update
xonsh
support to accomodate deprecated import path. (#14047)
Contributors
- @anki-code made their first contribution in #14047
- @beeankha
- @conda-bot
- @dholth
- @jaimergp
- @jezdez
- @kenodegard
- @zklaus
- @ForgottenProgramme
- @scw
- @SylvainCorlay made their first contribution in #14226
- @travishathaway
- @dependabot[bot]
- @pre-commit-ci[bot]
Full Changelog: 24.7.1...24.9.0