2024 年 4 月和 5 月发布
2024 年 4 月和 5 月的发布包括对 conda 和 conda-build 的更新!🎉 所有这些新版本都已发布到 main
和 conda-forge
。
Conda 24.4.0 和 24.5.0 的更改
要将 conda 更新到最新版本,请运行
conda install -n base conda=24.5.0
根据 conda 的发布计划 (CEP 8),预计每两个月发布一个正式版本;但有时,可能会添加一些非常重要的新功能,足以保证在双月节奏之间单独发布一个版本。conda 2024 年 4 月的发布为 Windows 用户引入了一项新增强功能。具体来说,由于 pull request #13721,用于软件包中 Python 入口点的 stub 可执行文件现在已进行代码签名。
在其他更新中,最新版本的 24.5.0
conda 使 MSYS2 软件包能够利用上游安装前缀,在 repodata.json
中增加了对 CEP-15 base_url
字段的支持,并允许在使用自定义通道设置中使用类似 glob 的通配符模式指定通道 URL(例如,对于具有身份验证处理程序插件的用户)。有关更多详细信息,请参阅下面的列表或发行说明。
✨ 新功能?✨
- 报告哪个
MatchSpec
项导致Invalid*Spec
异常,以获得更具信息性的错误消息。 - 删除
setuptools
残留项(MANIFEST.in
、wheel
构建依赖项),自从在 pull request #12509 中迁移到hatch
后不再需要这些项。 - 删除并更新 conda 内部从
conda/exports.py
导入的所有导入。
🔧 修复了什么?🔧
- 修复
conda notices --json
以正确输出 JSON。 - 修复 Unix 上 Windows
subdir
的前缀替换。
🌅 标记为弃用的内容?🌅
conda.activate._Activator.add_export_unset_vars
(请改用conda.activate._Activator.get_export_unset_vars
)conda.activate._Activator.get_scripts_export_unset_vars
(请改用test_activate.py
中的get_scripts_export_unset_vars
帮助函数)conda.activate._Activator._get_path_dirs(extra_library_bin)
conda.activate.JSONFormatMixin.get_scripts_export_unset_vars
(请改用conda.activate._Activator.get_export_unset_vars
)conda.auxlib.collection.make_immutable
(请改用frozendict.deepfreeze
)conda.gateways.logging.trace
(请改用Logger.log(conda.common.constants.TRACE, msg)
)conda.plan
作为入口点conda.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
(请改用conda.misc._get_best_prec_match
)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
(请改用conda.cli.install.revert_actions
)conda.plan._update_old_plan
conda._vendor.frozendict
(请改用frozendict
)conda create --mkdir
命令conda install --mkdir
(请改用conda create
)
📄 文档中的新功能?📄
- 向
conda.core.index
添加类型提示和文档字符串。
Conda-Build 24.5.0 的更改
要更新 conda-build,请运行
conda install -n base conda-build=24.5.0
conda-build 2024 年 5 月的发布增加了 conda_build.metadata._split_line_selector
以缓存行选择器解析的文本,专门为特定的 git_ref
获取 lfs
文件,并为选定的测试启用 CodSpeed 基准测试。有关更多详细信息,请参阅下面的列表或发行说明。
✨ 新功能?✨
- 添加
conda_build.render.open_recipe
上下文管理器,以检测 recipe 类型(文件/meta.yaml
、目录/recipe 或 tarball/package)并正确处理任何退出/关闭行为。 - 对于 Windows 用户,软件包中 Python 入口点使用的 stub 可执行文件现在已进行代码签名。
- 需要
conda >=23.7.0
。
🔧 修复了什么?🔧
- 修复所有 CLI 参数以使用解析的参数正确初始化
conda.base.context.context
。修复了参数未被处理的问题(例如,之前忽略了--override-channels
)。
🌅 标记为弃用的内容?🌅
- 推迟
conda_build.index.channel_data
弃用。
以下代码被标记为已弃用
conda_build.config.Config.override_channels
(请改用conda.base.context.context.channels
)conda_build.config.noarch_python_build_age_default
conda_build.conda_interface.add_parser_channels
(请改用conda.cli.helpers.add_parser_channels
)conda_build.conda_interface.add_parser_prefix
(请改用conda.cli.helpers.add_parser_prefix
)conda_build.conda_interface.ArgumentParser
(请改用conda.cli.conda_argparse.ArgumentParser
)conda_build.conda_interface.binstar_upload
常量(请改用conda.base.context.context.binstar_upload
)conda_build.conda_interface.cc_conda_build
(请改用conda.base.context.context.conda_build
)conda_build.conda_interface.cc_platform
常量(请改用conda.base.context.context.platform
)conda_build.conda_interface.Channel
(请改用conda.models.channel.Channel
)conda_build.conda_interface.Completer
conda_build.conda_interface.configparser
模块(请改用configparser
)conda_build.conda_interface.CondaError
类(请改用conda.exceptions.CondaError
)conda_build.conda_interface.CondaHTTPError
类(请改用conda.exceptions.CondaHTTPError
)conda_build.conda_interface.CondaSession
(请改用conda.gateways.connection.session.CondaSession
)conda_build.conda_interface.CONDA_VERSION
常量(请改用conda.__version__
)conda_build.conda_interface.context
单例(请改用conda.base.context.context
)conda_build.conda_interface.create_default_packages
常量(请改用conda.base.context.context.create_default_packages
)conda_build.conda_interface.default_python
常量(请改用conda.base.context.context.default_python
)conda_build.conda_interface.determine_target_prefix
函数(请改用conda.base.context.determine_target_prefix
)conda_build.conda_interface.download
(请改用conda.gateways.connection.download.download
)conda_build.conda_interface.env_path_backup_var_exists
conda_build.conda_interface.envs_dirs
常量(请改用conda.base.context.context.envs_dirs
)conda_build.conda_interface.EntityEncoder
(请改用conda.auxlib.entity.EntityEncoder
)conda_build.conda_interface.FileMode
(请改用conda.models.enums.FileMode
)conda_build.conda_interface.get_conda_build_local_url
类(请改用conda.models.channel.get_conda_build_local_url
)conda_build.conda_interface.get_conda_channel
函数(请改用conda.models.channel.Channel.from_value
)conda_build.conda_interface.get_prefix
函数(请改用conda.base.context.context.target_prefix
)conda_build.conda_interface.get_rc_urls
函数(请改用conda.base.context.context.channels
)conda_build.conda_interface.human_bytes
(请改用conda.utils.human_bytes
)conda_build.conda_interface.import_module
函数(请改用importlib.import_module
)conda_build.conda_interface.input
(请改用input
)conda_build.conda_interface.InstalledPackages
conda_build.conda_interface.lchmod
(请改用conda.gateways.disk.link.lchmod
)conda_build.conda_interface.LinkError
类(请改用conda.exceptions.LinkError
)conda_build.conda_interface.LockError
类(请改用conda.exceptions.LockError
)conda_build.conda_interface.MatchSpec
(请改用conda.models.match_spec.MatchSpec
)conda_build.conda_interface.non_x86_linux_machines
常量(请改用conda.base.context.non_x86_machines
)conda_build.conda_interface.NoPackagesFound
(请改用conda.exceptions.ResolvePackageNotFound
)conda_build.conda_interface.NoPackagesFoundError
类(请改用conda.exceptions.NoPackagesFoundError
)conda_build.conda_interface.normalized_version
(请改用conda.models.version.normalized_version
)conda_build.conda_interface.os
模块(请改用os
)conda_build.conda_interface.PackageRecord
(请改用conda.models.records.PackageRecord
)conda_build.conda_interface.PaddingError
类(请改用conda.exceptions.PaddingError
)conda_build.conda_interface.partial
函数(请改用functools.partial
)conda_build.conda_interface.PathType
(请改用conda.models.enums.PathType
)conda_build.conda_interface.pkgs_dirs
常量(请改用conda.base.context.context.pkgs_dirs
)conda_build.conda_interface.prefix_placeholder
(请改用conda.base.constants.PREFIX_PLACEHOLDER
)conda_build.conda_interface.ProgressiveFetchExtract
类(请改用conda.core.package_cache.ProgressiveFetchExtract
)conda_build.conda_interface.reset_context
函数(请改用conda.base.context.reset_context
)conda_build.conda_interface.Resolve
(请改用conda.resolve.Resolve
)conda_build.conda_interface.rm_rf
(请改用conda_build.utils.rm_rf
)conda_build.conda_interface.root_dir
常量(请改用conda.base.context.context.root_prefix
)conda_build.conda_interface.root_writable
常量(请改用conda.base.context.context.root_writable
)conda_build.conda_interface.spec_from_line
(请改用conda.cli.common.spec_from_line
)conda_build.conda_interface.specs_from_args
(请改用conda.cli.common.specs_from_args
)conda_build.conda_interface.specs_from_url
(请改用conda.cli.common.specs_from_url
)conda_build.conda_interface.StringIO
(请改用io.StringIO
)conda_build.conda_interface.subdir
常量(请改用conda.base.context.context.subdir
)conda_build.conda_interface.symlink_conda
conda_build.conda_interface.TempDirectory
(请改用conda.gateways.disk.create.TemporaryDirectory
)conda_build.conda_interface.TmpDownload
(请改用conda.gateways.connection.download.TmpDownload
)conda_build.conda_interface.toposort
(请改用conda.common.toposort._toposort
)conda_build.conda_interface.unix_path_to_win
(请改用conda.utils.unix_path_to_win
)conda_build.conda_interface.Unsatisfiable
(请改用conda.exceptions.UnsatisfiableError
)conda_build.conda_interface.untracked
(请改用conda.misc.untracked
)conda_build.conda_interface.UnsatisfiableError
类(请改用conda.exceptions.UnsatisfiableError
)conda_build.conda_interface.url_path
(请改用conda.utils.url_path
)conda_build.conda_interface.VersionOrder
(请改用conda.models.version.VersionOrder
)conda_build.conda_interface.walk_prefix
(请改用conda.misc.walk_prefix
)conda_build.conda_interface.win_path_to_unix
(请改用conda.common.path.win_path_to_unix
)conda_build.utils.HashableDict
(请改用frozendict.deepfreeze
)conda_build.utils._convert_lists_to_sets
(请改用frozendict.deepfreeze
)conda_build.utils.represent_hashabledict
(请改用frozendict.deepfreeze
)conda_build.variants.get_vars(loop_only)
以下代码已被删除
conda_build.api.get_output_file_path
(请改用conda_build.api.get_output_file_paths
)conda_build.bdist_conda
conda_build.build.have_prefix_files
conda_build.conda_interface.get_index
(请改用conda.core.index.get_index
)conda_build.conda_interface.get_version_from_git_tag
(请改用conda_build.environ.get_version_from_git_tag
)conda_build.conda_interface.handle_proxy_407
由conda.gateways.connection.session.CondaSession
处理conda_build.conda_interface.hashsum_file
(请改用conda.gateways.disk.read.compute_sum
)conda_build.conda_interface.md5_file
(请改用conda.gateways.disk.read.compute_sum(path, 'md5')
)conda_build.environ._load_all_json
conda_build.environ._load_json
conda_build.environ.cached_actions
conda_build.environ.Environment
(请改用conda.core.prefix_data.PrefixData
)conda_build.environ.InvalidEnvironment
conda_build.environ.LINK_ACTION
conda_build.environ.PREFIX_ACTION
conda_build.index._apply_instructions
(请改用conda_index._apply_instructions
)conda_build.index.DummyExecutor
conda_build.index.LOCK_TIMEOUT_SECS
conda_build.index.LOCKFILE_NAME
conda_build.index.MAX_THREADS_DEFAULT
❤️ 我们的社区
总而言之,在这个发布周期中,我们有 6 位新的贡献者;感谢我们所有的开源社区成员,感谢你们帮助使这些改进成为可能。
- @Callek 在 conda #13721 中做出了他们的首次贡献
- @dwr-psandhu 在 conda #13770 中做出了他们的首次贡献
- @ifitchet 在 conda #13649 中做出了他们的首次贡献
- @Nathann03 在 conda #13816 中做出了他们的首次贡献
- @Tobias-Fischer 在 conda-build #5202 中做出了他们的首次贡献
- @ytausch 在 conda-build #5214 中做出了他们的首次贡献
如果您有任何想法或想帮助改进任何 conda 社区项目,我们欢迎新的(和回来的)贡献者!😄