April and May 2024 Releases
The April and May 2024 releases included updates to conda and conda-build! ๐ All of these new releases have been released to both main
and conda-forge
.
Changes in Conda 24.4.0 and 24.5.0โ
To update conda to the latest version, run:
conda install -n base conda=24.5.0
Per conda's release schedule (CEP 8) there is an expected and official release every two months; occasionally however, new features may be added that are significant enough to warrant a separate release in between the bimonthly cadence. The April 2024 release of conda introduces a new enhancement for Windows users. Specifically, the stub executables used for Python entrypoints in packages are now codesigned as a result of pull request #13721.
Amongst other updates, the most recent 24.5.0
version of conda enables MSYS2 packages to utilize upstream installation prefixes, adds support for
CEP-15 base_url
field in repodata.json
, and allows specification of channel URLs using a glob-like wildcard pattern in custom channel settings
(e.g., for user with auth handler plugins). See the list below or the release notes for more details.
โจ What's New? โจโ
- Report which
MatchSpec
item causedInvalid*Spec
exceptions for more informative error messages. - Remove
setuptools
remainings (MANIFEST.in
,wheel
build dependency) not required since the move tohatch
in pull request #12509. - Remove and update any imports inside conda that is importing from
conda/exports.py
.
๐ง What Got Fixed? ๐งโ
- Fix
conda notices --json
to correctly output JSON. - Fix prefix replacement for Windows
subdir
on Unix.
๐ What's Marked for Deprecation? ๐ โ
conda.activate._Activator.add_export_unset_vars
(useconda.activate._Activator.get_export_unset_vars
instead)conda.activate._Activator.get_scripts_export_unset_vars
(useget_scripts_export_unset_vars
helper function intest_activate.py
instead)conda.activate._Activator._get_path_dirs(extra_library_bin)
conda.activate.JSONFormatMixin.get_scripts_export_unset_vars
(useconda.activate._Activator.get_export_unset_vars
instead)conda.auxlib.collection.make_immutable
(usefrozendict.deepfreeze
instead)conda.gateways.logging.trace
(useLogger.log(conda.common.constants.TRACE, msg)
instead)conda.plan
as an entrypointconda.plan.add_defaults_to_specs
conda.plan.add_unlink
conda.plan.display_actions
conda.plan.execute_actions
conda.plan.execute_instructions
conda.plan.execute_plan
conda.plan._get_best_prec_match
(useconda.misc._get_best_prec_match
instead)conda.plan.get_blank_actions
conda.plan._handle_menuinst
conda.plan._inject_UNLINKLINKTRANSACTION
conda.plan.install_actions
conda.plan._plan_from_actions
conda.plan.print_dists
conda.plan.revert_actions
(useconda.cli.install.revert_actions
instead)conda.plan._update_old_plan
conda._vendor.frozendict
(usefrozendict
instead)conda create --mkdir
commandconda install --mkdir
(useconda create
instead)
๐ What's New in Documentation? ๐โ
- Add type hints and doc strings to
conda.core.index
.
Changes in Conda-Build 24.5.0โ
To update conda-build, run:
conda install -n base conda-build=24.5.0
The May 2024 release of conda-build adds conda_build.metadata._split_line_selector
to cache line-selector parsed text, exclusively fetches
lfs
files for specific git_ref
, and enables CodSpeed benchmarks for select tests. See the list below or the release notes
for more details.
โจ What's New? โจโ
- Add
conda_build.render.open_recipe
context manager to detect the recipe type (file/meta.yaml
, directory/recipe, or tarball/package) and properly handling any exit/close behavior. - For Windows users, the stub executables used for Python entrypoints in packages are now codesigned.
- Require
conda >=23.7.0
.
๐ง What Got Fixed? ๐งโ
- Fix all CLI arguments to properly initialize
conda.base.context.context
with parsed arguments. Fixes issue with arguments not being processed (e.g.,--override-channels
was previously ignored).
๐ What's Marked for Deprecation? ๐ โ
- Postpone
conda_build.index.channel_data
deprecation.
The following code was marked as deprecated:
conda_build.config.Config.override_channels
(defer toconda.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
constant (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
constant (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
module (useconfigparser
instead)conda_build.conda_interface.CondaError
class (useconda.exceptions.CondaError
instead)conda_build.conda_interface.CondaHTTPError
class (useconda.exceptions.CondaHTTPError
instead)conda_build.conda_interface.CondaSession
(useconda.gateways.connection.session.CondaSession
instead)conda_build.conda_interface.CONDA_VERSION
constant (useconda.__version__
instead)conda_build.conda_interface.context
singleton (useconda.base.context.context
instead)conda_build.conda_interface.create_default_packages
constant (useconda.base.context.context.create_default_packages
instead)conda_build.conda_interface.default_python
constant (useconda.base.context.context.default_python
instead)conda_build.conda_interface.determine_target_prefix
function (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
constant (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
class (useconda.models.channel.get_conda_build_local_url
instead)conda_build.conda_interface.get_conda_channel
function (useconda.models.channel.Channel.from_value
instead)conda_build.conda_interface.get_prefix
function (useconda.base.context.context.target_prefix
instead)conda_build.conda_interface.get_rc_urls
function (useconda.base.context.context.channels
instead)conda_build.conda_interface.human_bytes
(useconda.utils.human_bytes
instead)conda_build.conda_interface.import_module
function (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
class (useconda.exceptions.LinkError
instead)conda_build.conda_interface.LockError
class (useconda.exceptions.LockError
instead)conda_build.conda_interface.MatchSpec
(useconda.models.match_spec.MatchSpec
instead)conda_build.conda_interface.non_x86_linux_machines
constant (useconda.base.context.non_x86_machines
instead)conda_build.conda_interface.NoPackagesFound
(useconda.exceptions.ResolvePackageNotFound
instead)conda_build.conda_interface.NoPackagesFoundError
class (useconda.exceptions.NoPackagesFoundError
instead)conda_build.conda_interface.normalized_version
(useconda.models.version.normalized_version
instead)conda_build.conda_interface.os
module (useos
instead)conda_build.conda_interface.PackageRecord
(useconda.models.records.PackageRecord
instead)conda_build.conda_interface.PaddingError
class (useconda.exceptions.PaddingError
instead)conda_build.conda_interface.partial
function (usefunctools.partial
instead)conda_build.conda_interface.PathType
(useconda.models.enums.PathType
instead)conda_build.conda_interface.pkgs_dirs
constant (useconda.base.context.context.pkgs_dirs
instead)conda_build.conda_interface.prefix_placeholder
(useconda.base.constants.PREFIX_PLACEHOLDER
instead)conda_build.conda_interface.ProgressiveFetchExtract
class (useconda.core.package_cache.ProgressiveFetchExtract
instead)conda_build.conda_interface.reset_context
function (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
constant (useconda.base.context.context.root_prefix
instead)conda_build.conda_interface.root_writable
constant (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
constant (useconda.base.context.context.subdir
instead)conda_build.conda_interface.symlink_conda
conda_build.conda_interface.TempDirectory
(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.Unsatisfiable
(useconda.exceptions.UnsatisfiableError
instead)conda_build.conda_interface.untracked
(useconda.misc.untracked
instead)conda_build.conda_interface.UnsatisfiableError
class (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.utils.HashableDict
(usefrozendict.deepfreeze
instead)conda_build.utils._convert_lists_to_sets
(usefrozendict.deepfreeze
instead)conda_build.utils.represent_hashabledict
(usefrozendict.deepfreeze
instead)conda_build.variants.get_vars(loop_only)
The following code was removed:
conda_build.api.get_output_file_path
(useconda_build.api.get_output_file_paths
instead)conda_build.bdist_conda
conda_build.build.have_prefix_files
conda_build.conda_interface.get_index
(useconda.core.index.get_index
instead)conda_build.conda_interface.get_version_from_git_tag
(useconda_build.environ.get_version_from_git_tag
instead)conda_build.conda_interface.handle_proxy_407
Handled byconda.gateways.connection.session.CondaSession
conda_build.conda_interface.hashsum_file
(useconda.gateways.disk.read.compute_sum
instead)conda_build.conda_interface.md5_file
(useconda.gateways.disk.read.compute_sum(path, 'md5')
instead)conda_build.environ._load_all_json
conda_build.environ._load_json
conda_build.environ.cached_actions
conda_build.environ.Environment
(useconda.core.prefix_data.PrefixData
instead)conda_build.environ.InvalidEnvironment
conda_build.environ.LINK_ACTION
conda_build.environ.PREFIX_ACTION
conda_build.index._apply_instructions
(useconda_index._apply_instructions
instead)conda_build.index.DummyExecutor
conda_build.index.LOCK_TIMEOUT_SECS
conda_build.index.LOCKFILE_NAME
conda_build.index.MAX_THREADS_DEFAULT
We โค๏ธ Our Communityโ
Altogether, we had 6 new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible.
- @Callek made their first contribution in conda #13721
- @dwr-psandhu made their first contribution in conda #13770
- @ifitchet made their first contribution in conda #13649
- @Nathann03 made their first contribution in conda #13816
- @Tobias-Fischer made their first contribution in conda-build #5202
- @ytausch made their first contribution in conda-build #5214
If you have ideas or want to help improve any of the conda community projects, we love to see new (and returning) contributors! ๐