跳到主要内容

2024年7月发布

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

2024年7月发布版本包括了对 conda、conda-build 和 conda-libmamba-solver 的更新!🎉 所有这些都已发布到 mainconda-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 标志,以便用户可以选择启用此行为。
  • @EXPLICIT lockfile 安装打印事务报告。
  • 如果使用 --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。
  • 修复了当历史文件仅包含单行注释行时的解析错误。
  • 将缺少的 emscriptenwasi 条目添加到已识别的平台,并将 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_dirspkgs_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_dataconda_build.index.get_build_indexchannel_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)时重复列出通道的问题。
  • 修复了当 .solv repodata 缓存文件可用时未加载的性能回归问题。
  • 不要忽略虚拟包作为输入规范。
  • 锁定 libmambapy <2 以防御即将到来的 API 更改。

我们 ❤️ 我们的社区

总而言之,在这个发布周期中,我们有 9 位 (!) 新贡献者;感谢我们所有的开源社区成员,感谢他们帮助使这些改进成为可能。

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