gpt4 book ai didi

python - ruamel.yaml:对 typ 和 pure=True 的说明

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:16 25 4
gpt4 key购买 nike

我正在尝试了解 typpure=Trueruamel.yaml Python 库中的含义。
我已阅读文档 here .
到目前为止,我已经了解 typ='safe' 使用安全加载程序,它省略了 YAML 中的 YAML 标记解析(它们可能导致任意代码执行)。
我没有在文档中找到有关往返解析器 typ='rt' 的任何解释。

此外,我认为 pure=True 的解释令人困惑:

Provide pure=True to enforce using the pure Python implementation (faster C libraries will be used when possible/available)

更快的 C 库是否与 pure=True 一起使用?如果他们这样做,为什么您需要首先指定此标志?

最佳答案

有四个标准typ参数:

  • rt :(对于往返)在这种情况下,文档以保留评论等的特殊类型加载,用于转储。这就是ruamel.yaml是为创建的,这是默认值(即如果您不指定 typ 会得到什么)。这是 safe 的子类装载机/自卸车。
  • safe : 这只会加载/转储标记的对象,当这些对象被显式注册到加载程序/转储程序
  • unsafe :尝试加载/转储所有内容。类自动解析为 !!python/object:<module>/<class> 形式的标签
  • base :从中派生一切的装载机/倾销机。所有标量都作为字符串加载(甚至像 YAML 规范或 type description
  • 中提到的特殊处理的整数、 float 、 bool 值等类型

对于 safe , unsafe , base有更快的 C Loader 可用。如果您从 .tar.gz 安装这些文件只有在安装过程中有合适的编译器可用时才会被编译。如果它们不可用,因为它们无法编译,则无法使用。
rt没有C版本代码。因此,不可能使用 C 库。

单词pure适用于仅使用 Python 模块的情况。反之则被“污染”:Python 被 C 扩展模块污染。没有 tainted=True范围。当 pure=true 时,这是隐式的(如果可能/可用,请参阅上一段)未指定,默认为 pureFalse


为了进一步混淆您:以上是 type 的四个基本(内置)值.如果您使用插件,您可以例如做

yaml = YAML(typ='jinja2')

如图in this answer


上述部分信息可从 YAML() docstring 获得。 , 但其中很少有被纳入包文档,主要是由于 ruamel.yaml 的惰性的作者。

关于python - ruamel.yaml:对 typ 和 pure=True 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com