July 2024 Releases
ยท 7 min read
The July 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.7.0/24.7.1โ
To update conda, run:
conda install -n base conda=24.7.1
โจ What's New? โจโ
- Add a new
reporters
setting for configuring output. - Report traceback of plugin loading errors with verbosity 2 or higher (
-vv
or more). - Skip checking for
.pyc
and.pyo
files in theconda doctor
"missing files" health check. - Breaking change
conda list --explicit
will not print authentication details by default. A new flag--auth
has been added so folks can opt-in to this behavior. - Print transaction report for
@EXPLICIT
lockfile installs. - Do not require
-n/--name
or-p/--prefix
ifconda create
is invoked with--dry-run
. - Add an
envvars_force_uppercase
setting which defaults toTrue
, uppercasing all environment variables (thereby justifyingconda
's current behaviour); whenenvvars_force_uppercase
is set toFalse
, conda will only save preserved-case variable names. - Alias
conda env list
command toconda info --envs
. - Replace calls to
logger.warn
withlogger.warning
.
๐ง What Got Fixed? ๐งโ
- Improve treatment of logger levels.
- Mask authentication details in
conda-meta/*.json
metadata. - Mask Anaconda.org tokens in verbose logs.
- Fix parsing error when history file only contains a single commented line.
- Add missing
emscripten
andwasi
entries to the recognized platforms, andwasm32
to the recognized architectures. - Fix checksum comparisons in
conda.gateways.connection.download.download()
to be case insensitive. - Fix caching when
repodata.json
contains\r\n
line endings. - Fix
conda.core.portability.binary_replace
not matching chunks that end with\n
. - (24.7.1) Revert increased restrictions on allowed environment name characters. The previously forbidden characters (^, %, !, =, (, ), ) are allowed again until the impact is assessed.
๐ What's Marked for Deprecation? ๐ โ
- Mark
conda.gateways.logging.initialize_root_logger
as pending deprecation. - Mark
conda.cli.main_env_list.execute
as pending deprecation. Useconda.cli.main_info.execute
instead. - Revert
--all
deprecation inconda info
. - Mark
conda.exports.iteritems
as pending deprecation. Use builtindict.items()
instead. - Mark
conda.exports.Completer
as pending deprecation. - Mark
conda.exports.InstalledPackages
as pending deprecation. - Mark
conda.exports.KEYS
as pending deprecation. - Mark
conda.exports.KEYS_DIR
as pending deprecation. - Mark
conda.exports.hash_file
as pending deprecation. - Mark
conda.exports.verify
as pending deprecation. - Mark
conda.exports.symlink_conda
as pending deprecation. Useconda.activate
instead. - Mark
conda.exports._symlink_conda_hlp
as pending deprecation. Useconda.activate
instead. - Mark
conda.exports.win_conda_bat_redirect
as pending deprecation. Useconda.activate
instead. - Mark
conda.utils.win_path_to_cygwin
as pending deprecation. Useconda.common.path.win_path_to_unix
instead. - Mark
conda.utils.cygwin_path_to_win
as pending deprecation. Useconda.utils.unix_path_to_win
instead. - Mark
conda.utils.translate_stream
as pending deprecation. - Mark
conda.utils.unix_shell_base
as pending deprecation. Useconda.activate
instead. - Mark
conda.utils.msys2_shell_base
as pending deprecation. Useconda.activate
instead. - Mark
conda.utils.shells
as pending deprecation. Useconda.activate
instead.
๐ What's New in Documentation? ๐โ
- Clarify proxy server configuration in documentation.
- Add type hints and doc strings to
conda.core.envs_manager
. - Add logging overview as deep-dive.
- Update conda cheatsheet text and add it directly to cheatsheet page.
- Add updated cheatsheet PDF download to cheatsheet page.
- Add
ssl_verify: truststore
to the user guide. - Fix the help text of the
satisfied-skip-solve
flag. - Add a section explaining how to correctly raise exceptions from a plugin.
- Add new article for configuring
envs_dirs
andpkgs_dirs
.
Changes in Conda-Build 24.7.0/24.7.1โ
To update conda-build, run:
conda install -n base conda-build=24.7.1
โจ What's New? โจโ
- Skip generating
repodata.json.bz2
for local index; generaterepodata.json
only; requireconda-package-handling >=2.2.0
matching conda. - Add new include/exclude sections for glob expressions in multi-output
outputs/files
. - Increase performance by using
pickle
instead ofcopy.deepcopy
. - Report fully rendered recipe to stdout before the build process starts.
- Validate
run_constrained
dependencies to prevent faulty specs reaching final repodata. PIP_*
env variables are set when building outputs in multi-output recipes.- Reduce performance overhead of logging.
- Do not generate conda error reports for common exceptions.
- Add
CondaBuildUserError
exception to replacesys.exit
calls. - Updated the CI to download the MacOSX 10.15 SDK.
๐ง What Got Fixed? ๐งโ
- Include file path in addition to the content when generating the file hash to avoid unwanted caching during linkage analysis.
- Error handling when
LIEF
fails is now consistent withpatchelf
. - Ensure cross-building recipes select the correct noarch package variants.
- On Linux platforms, prefer the sysroot matching the target_platform when cross-compiling.
- (24.7.1) Check for WSL existence before calling
pathlib.Path.samefile
/os.stat
.
๐ What's Marked for Deprecation? ๐ โ
- Mark
conda_build.build._construct_metadata_for_test_from_recipe
as deprecated. Test built packages instead, not recipes (e.g.,conda build --test package
instead ofconda build --test recipe/
). - Mark
conda_build.build.check_external
for deprecation.patchelf
is an explicit conda-build dependency on Linux so it will always be installed. - Remove the following deprecations:
conda_build.config.Config.override_channels
(useconda.base.context.context.channels
instead).conda_build.config.noarch_python_build_age_default
.conda_build.conda_interface.add_parser_channels
(useconda.cli.helpers.add_parser_channels
instead).conda_build.conda_interface.add_parser_prefix
(useconda.cli.helpers.add_parser_prefix
instead).conda_build.conda_interface.ArgumentParser
(useconda.cli.conda_argparse.ArgumentParser
instead).conda_build.conda_interface.binstar_upload
(useconda.base.context.context.binstar_upload
instead).conda_build.conda_interface.cc_conda_build
(useconda.base.context.context.conda_build
instead).conda_build.conda_interface.cc_platform
(useconda.base.context.context.platform
instead).conda_build.conda_interface.Channel
(useconda.models.channel.Channel
instead).conda_build.conda_interface.Completer
.conda_build.conda_interface.configparser
(useconfigparser
instead).conda_build.conda_interface.CondaError
(useconda.exceptions.CondaError
instead).conda_build.conda_interface.CondaHTTPError
(useconda.exceptions.CondaHTTPError
instead).conda_build.conda_interface.CondaSession
(useconda.gateways.connection.session.CondaSession
instead).conda_build.conda_interface.CONDA_VERSION
(useconda.__version__
instead).conda_build.conda_interface.context
(useconda.base.context.context
instead).conda_build.conda_interface.create_default_packages
(useconda.base.context.context.create_default_packages
instead).conda_build.conda_interface.default_python
(useconda.base.context.context.default_python
instead).conda_build.conda_interface.determine_target_prefix
(useconda.base.context.determine_target_prefix
instead).conda_build.conda_interface.download
(useconda.gateways.connection.download.download
instead).conda_build.conda_interface.env_path_backup_var_exists
.conda_build.conda_interface.envs_dirs
(useconda.base.context.context.envs_dirs
instead).conda_build.conda_interface.EntityEncoder
(useconda.auxlib.entity.EntityEncoder
instead).conda_build.conda_interface.FileMode
(useconda.models.enums.FileMode
instead).conda_build.conda_interface.get_conda_build_local_url
(useconda.models.channel.get_conda_build_local_url
instead).conda_build.conda_interface.get_conda_channel
(useconda.models.channel.Channel.from_value
instead).conda_build.conda_interface.get_prefix
(useconda.base.context.context.target_prefix
instead).conda_build.conda_interface.get_rc_urls
(useconda.base.context.context.channels
instead).conda_build.conda_interface.human_bytes
(useconda.utils.human_bytes
instead).conda_build.conda_interface.import_module
(useimportlib.import_module
instead).conda_build.conda_interface.input
(useinput
instead).conda_build.conda_interface.InstalledPackages
.conda_build.conda_interface.lchmod
(useconda.gateways.disk.link.lchmod
instead).conda_build.conda_interface.LinkError
(useconda.exceptions.LinkError
instead).conda_build.conda_interface.LockError
(useconda.exceptions.LockError
instead).conda_build.conda_interface.MatchSpec
(useconda.models.match_spec.MatchSpec
instead).conda_build.conda_interface.non_x86_linux_machines
(useconda.base.context.non_x86_machines
instead).conda_build.conda_interface.NoPackagesFound
(useconda.exceptions.ResolvePackageNotFound
instead).conda_build.conda_interface.NoPackagesFoundError
(useconda.exceptions.NoPackagesFoundError
instead).conda_build.conda_interface.normalized_version
(useconda.models.version.normalized_version
instead).conda_build.conda_interface.os
(useos
instead).conda_build.conda_interface.PackageRecord
(useconda.models.records.PackageRecord
instead).conda_build.conda_interface.PaddingError
(useconda.exceptions.PaddingError
instead).conda_build.conda_interface.partial
(usefunctools.partial
instead).conda_build.conda_interface.PathType
(useconda.models.enums.PathType
instead).conda_build.conda_interface.pkgs_dirs
(useconda.base.context.context.pkgs_dirs
instead).conda_build.conda_interface.prefix_placeholder
(useconda.base.constants.PREFIX_PLACEHOLDER
instead).conda_build.conda_interface.ProgressiveFetchExtract
(useconda.core.package_cache_data.ProgressiveFetchExtract
instead).conda_build.conda_interface.reset_context
(useconda.base.context.reset_context
instead).conda_build.conda_interface.Resolve
(useconda.resolve.Resolve
instead).conda_build.conda_interface.rm_rf
(useconda_build.utils.rm_rf
instead).conda_build.conda_interface.root_dir
(useconda.base.context.context.root_prefix
instead).conda_build.conda_interface.root_writable
(useconda.base.context.context.root_writable
instead).conda_build.conda_interface.spec_from_line
(useconda.cli.common.spec_from_line
instead).conda_build.conda_interface.specs_from_args
(useconda.cli.common.specs_from_args
instead).conda_build.conda_interface.specs_from_url
(useconda.cli.common.specs_from_url
instead).conda_build.conda_interface.StringIO
(useio.StringIO
instead).conda_build.conda_interface.subdir
(useconda.base.context.context.subdir
instead).conda_build.conda_interface.symlink_conda
.conda_build.conda_interface.TemporaryDirectory
(useconda.gateways.disk.create.TemporaryDirectory
instead).conda_build.conda_interface.TmpDownload
(useconda.gateways.connection.download.TmpDownload
instead).conda_build.conda_interface._toposort
(useconda.common.toposort._toposort
instead).conda_build.conda_interface.unix_path_to_win
(useconda.utils.unix_path_to_win
instead).conda_build.conda_interface.untracked
(useconda.misc.untracked
instead).conda_build.conda_interface.Unsatisfiable
(useconda.exceptions.UnsatisfiableError
instead).conda_build.conda_interface.UnsatisfiableError
(useconda.exceptions.UnsatisfiableError
instead).conda_build.conda_interface.url_path
(useconda.utils.url_path
instead).conda_build.conda_interface.VersionOrder
(useconda.models.version.VersionOrder
instead).conda_build.conda_interface.walk_prefix
(useconda.misc.walk_prefix
instead).conda_build.conda_interface.win_path_to_unix
(useconda.common.path.win_path_to_unix
instead).conda_build.index.channel_data
;conda_build.index.get_build_index
return value forchannel_data
is now alwaysNone
.conda_build.metadata.check_circular_dependencies
(useconda_build.metadata._check_circular_dependencies
instead).conda_build.metadata.toposort
(useconda_build.metadata.toposort_outputs
instead).conda_build.utils._convert_lists_to_sets
(usefrozendict.deepfreeze
instead).conda_build.utils.HashableDict
(usefrozendict.deepfreeze
instead).conda_build.utils.represent_hashabledict
(usefrozendict.deepfreeze
instead).conda_build.utils.rm_rf(config)
.conda_build.variants.get_vars(loop_only)
.
Changes in Conda-Libmamba-Solver 24.7.0โ
To update conda-libmamba-solver, run:
conda install -n base conda-libmamba-solver=24.7.0
โจ What's New? โจโ
- Document development workflows with devcontainers.
- Add DevContainer configurations for local development workflows.
๐ง What Got Fixed? ๐งโ
- Allow wildcards in package names for
conda remove
(e.g.conda remove "python-*"
). - Avoid duplicate channel listing when using channel-pinned specs like
channel::package
. - Fix a performance regression where
.solv
repodata cache files were not being loaded when available. - Do not ignore virtual packages as input specs.
- Pin
libmambapy <2
to defend against upcoming API changes.
We โค๏ธ Our Communityโ
Altogether, we had 9 (!) new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible.
- @carterbox made their first contribution in conda-build#5216
- @DerThorsten made their first contribution in conda#13962
- @erik-whiting made their first contribution in conda#13877
- @kelvinou01 made their first contribution in conda#14044
- @padeoe made their first contribution in conda#12856
- @skupr-anaconda made their first contribution in conda#13946
- @timkpaine made their first contribution in conda-build#4821
- @tl-hbk made their first contribution in conda-libmamba-solver#449
- @zklaus made their first contributions in conda-build#5364 and conda-libmamba-solver#476
If you have ideas or want to help improve any of the conda community projects, we love to see new (and returning) contributors! ๐