2024年7月发布
·7 分钟阅读
2024年7月发布版本包括了对 conda、conda-build 和 conda-libmamba-solver 的更新!🎉 所有这些都已发布到 main 和 conda-forge 频道。
Conda 的变更 24.7.0/24.7.1
要更新 conda,请运行
conda install -n base conda=24.7.1
✨ 新功能? ✨
- 添加新的
reporters设置以配置输出。 - 在详细级别为 2 或更高时报告插件加载错误的追溯 (
-vv或更高)。 - 在
conda doctor“缺少文件” 健康检查中,跳过检查.pyc和.pyo文件。 - 重大变更
conda list --explicit默认情况下不会打印身份验证详细信息。已添加新的--auth标志,以便用户可以选择启用此行为。 - 为
@EXPLICITlockfile 安装打印事务报告。 - 如果使用
--dry-run调用conda create,则不需要-n/--name或-p/--prefix。 - 添加一个
envvars_force_uppercase设置,其默认值为True,将所有环境变量转换为大写(从而证明了 conda 当前行为的合理性);当envvars_force_uppercase设置为False时,conda 将仅保存保留大小写的变量名。 - 将
conda env list命令别名为conda info --envs。 - 将对
logger.warn的调用替换为logger.warning。
🔧 修复了什么? 🔧
- 改进了对 logger 级别的处理。
- 在
conda-meta/*.json元数据中屏蔽身份验证详细信息。 - 在详细日志中屏蔽 Anaconda.org tokens。
- 修复了当历史文件仅包含单行注释行时的解析错误。
- 将缺少的
emscripten和wasi条目添加到已识别的平台,并将wasm32添加到已识别的架构。 - 修复了
conda.gateways.connection.download.download()中的校验和比较,使其不区分大小写。 - 修复了当
repodata.json包含\r\n行尾符时的缓存问题。 - 修复了
conda.core.portability.binary_replace未匹配以\n结尾的块的问题。 - (24.7.1) 恢复了对允许的环境名称字符增加的限制。之前禁止的字符 (^, %, !, =, (, ), ) 再次被允许,直到评估影响为止。
🌅 标记为 弃用? 🌅
- 将
conda.gateways.logging.initialize_root_logger标记为待弃用。 - 将
conda.cli.main_env_list.execute标记为待弃用。请改用conda.cli.main_info.execute。 - 恢复
conda info中--all的弃用。 - 将
conda.exports.iteritems标记为待弃用。请改用内置的dict.items()。 - 将
conda.exports.Completer标记为待弃用。 - 将
conda.exports.InstalledPackages标记为待弃用。 - 将
conda.exports.KEYS标记为待弃用。 - 将
conda.exports.KEYS_DIR标记为待弃用。 - 将
conda.exports.hash_file标记为待弃用。 - 将
conda.exports.verify标记为待弃用。 - 将
conda.exports.symlink_conda标记为待弃用。请改用conda.activate。 - 将
conda.exports._symlink_conda_hlp标记为待弃用。请改用conda.activate。 - 将
conda.exports.win_conda_bat_redirect标记为待弃用。请改用conda.activate。 - 将
conda.utils.win_path_to_cygwin标记为待弃用。请改用conda.common.path.win_path_to_unix。 - 将
conda.utils.cygwin_path_to_win标记为待弃用。请改用conda.utils.unix_path_to_win。 - 将
conda.utils.translate_stream标记为待弃用。 - 将
conda.utils.unix_shell_base标记为待弃用。请改用conda.activate。 - 将
conda.utils.msys2_shell_base标记为待弃用。请改用conda.activate。 - 将
conda.utils.shells标记为待弃用。请改用conda.activate。
📄 文档中的新功能? 📄
- 在文档中澄清了代理服务器配置。
- 为
conda.core.envs_manager添加了类型提示和文档字符串。 - 添加了日志记录概述作为深入探讨。
- 更新了 conda 速查表文本,并将其直接添加到速查表页面。
- 将更新后的速查表 PDF 下载添加到速查表页面。
- 将
ssl_verify: truststore添加到用户指南。 - 修复了
satisfied-skip-solve标志的帮助文本。 - 添加了一个章节,解释如何从插件中正确引发异常。
- 添加了新文章,用于配置
envs_dirs和pkgs_dirs。
Conda-Build 的变更 24.7.0/24.7.1
要更新 conda-build,请运行
conda install -n base conda-build=24.7.1
✨ 新功能? ✨
- 跳过为本地索引生成
repodata.json.bz2;仅生成repodata.json;需要conda-package-handling >=2.2.0以匹配 conda。 - 为多输出
outputs/files中的 glob 表达式添加了新的 include/exclude 部分。 - 通过使用
pickle而不是copy.deepcopy来提高性能。 - 在构建过程开始之前,将完全渲染的配方报告到 stdout。
- 验证
run_constrained依赖项,以防止错误的规范到达最终的 repodata。 - 在多输出配方中构建输出时,将设置
PIP_*环境变量。 - 减少日志记录的性能开销。
- 不要为常见异常生成 conda 错误报告。
- 添加
CondaBuildUserError异常以替换sys.exit调用。 - 更新了 CI 以下载 MacOSX 10.15 SDK。
🔧 修复了什么? 🔧
- 在生成文件哈希时,除了内容外,还包括文件路径,以避免在链接分析期间出现不必要的缓存。
- 当
LIEF失败时的错误处理现在与patchelf一致。 - 确保交叉构建配方选择正确的 noarch 包变体。
- 在 Linux 平台上,交叉编译时优先选择与 target_platform 匹配的 sysroot。
- (24.7.1) 在调用
pathlib.Path.samefile/os.stat之前检查 WSL 是否存在。
🌅 标记为 弃用? 🌅
- 将
conda_build.build._construct_metadata_for_test_from_recipe标记为已弃用。请测试构建的包,而不是配方(例如,conda build --test package而不是conda build --test recipe/)。 - 将
conda_build.build.check_external标记为弃用。patchelf是 Linux 上 conda-build 的显式依赖项,因此它将始终安装。 - 删除以下弃用项
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_data.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.TemporaryDirectory(请改用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.untracked(请改用conda.misc.untracked)。conda_build.conda_interface.Unsatisfiable(请改用conda.exceptions.UnsatisfiableError)。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.index.channel_data;conda_build.index.get_build_index的channel_data返回值现在始终为None。conda_build.metadata.check_circular_dependencies(请改用conda_build.metadata._check_circular_dependencies)。conda_build.metadata.toposort(请改用conda_build.metadata.toposort_outputs)。conda_build.utils._convert_lists_to_sets(请改用frozendict.deepfreeze)。conda_build.utils.HashableDict(请改用frozendict.deepfreeze)。conda_build.utils.represent_hashabledict(请改用frozendict.deepfreeze)。conda_build.utils.rm_rf(config).conda_build.variants.get_vars(loop_only).
Conda-Libmamba-Solver 的变更 24.7.0
要更新 conda-libmamba-solver,请运行
conda install -n base conda-libmamba-solver=24.7.0
✨ 新功能? ✨
- 记录了使用 devcontainers 的开发工作流程。
- 为本地开发工作流程添加了 DevContainer 配置。
🔧 修复了什么? 🔧
- 允许在包名称中使用通配符进行
conda remove(例如conda remove "python-*")。 - 修复了使用通道固定规范(如
channel::package)时重复列出通道的问题。 - 修复了当
.solvrepodata 缓存文件可用时未加载的性能回归问题。 - 不要忽略虚拟包作为输入规范。
- 锁定
libmambapy <2以防御即将到来的 API 更改。
我们 ❤️ 我们的社区
总而言之,在这个发布周期中,我们有 9 位 (!) 新贡献者;感谢我们所有的开源社区成员,感谢他们帮助使这些改进成为可能。
- @carterbox 在 conda-build#5216 中做出了他们的首次贡献
- @DerThorsten 在 conda#13962 中做出了他们的首次贡献
- @erik-whiting 在 conda#13877 中做出了他们的首次贡献
- @kelvinou01 在 conda#14044 中做出了他们的首次贡献
- @padeoe 在 conda#12856 中做出了他们的首次贡献
- @skupr-anaconda 在 conda#13946 中做出了他们的首次贡献
- @timkpaine 在 conda-build#4821 中做出了他们的首次贡献
- @tl-hbk 在 conda-libmamba-solver#449 中做出了他们的首次贡献
- @zklaus 在 conda-build#5364 和 conda-libmamba-solver#476 中做出了他们的首次贡献
如果您有任何想法或想帮助改进任何 conda 社区项目,我们非常欢迎新的(和回来的)贡献者! 😄
