跳转至主要内容

2024 年 4 月和 5 月发布

·6 分钟阅读
Bianca Henderson
Conda 维护者 🐍📦

2024 年 4 月和 5 月的发布包括对 conda 和 conda-build 的更新!🎉 所有这些新版本都已发布到 mainconda-forge

Conda 24.4.024.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.inwheel 构建依赖项),自从在 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_407conda.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 位新的贡献者;感谢我们所有的开源社区成员,感谢你们帮助使这些改进成为可能。

如果您有任何想法或想帮助改进任何 conda 社区项目,我们欢迎新的(和回来的)贡献者!😄