Dmi*_*gol 5 python yaml ruamel.yaml
我试图理解Python 库中typ和 的含义。我已阅读此处的
文档。
到目前为止,我已经了解使用安全加载器,该加载器省略了 YAML 中的 YAML 标记解析(它们可能导致任意代码执行)。我在文档中
没有找到有关往返解析器的任何解释。pure=Trueruamel.yamltyp='safe'typ='rt'
另外,我认为解释pure=True很混乱:
提供
pure=True强制使用纯 Python 实现(如果可能/可用,将使用更快的 C 库)
是否使用更快的 C 库pure=True?如果确实如此,为什么您需要首先指定此标志?
Ant*_*hon 10
标准参数有四个typ:
rt:(对于往返)在这种情况下,文档以保留注释等的特殊类型加载,用于转储。这是ruamel.yaml创建的目的,也是默认值(即,如果您不指定,您将得到什么typ)。这是加载器/转储器的子类safe。safe:这仅加载/转储标记对象,当这些对象显式注册到加载器/转储器时unsafe:尝试加载/转储所有内容。类会自动解析为表单的标签!!python/object:<module>/<class> base:一切都源自装载机/卸载机。所有标量都作为字符串加载(甚至像 YAML 规范或类型描述中提到的那样进行特殊处理的整数、浮点数、布尔值等类型)对于safe, unsafe,base有更快的 C Loader 可用。如果您从.tar.gz文件安装,则仅当适当的编译器可用时,这些文件才会在安装过程中进行编译。如果它们不可用,因为它们无法编译,那么它们就不能使用。
没有 C 版本的rt代码。所以不可能使用C库。
该词pure适用于仅使用 Python 模块的情况。相反的情况就是“被污染”:Python 被 C 扩展模块污染。没有tainted=True参数。pure=true当未指定时,这是隐式的(如果可能/可用,请参阅上一段) ,因为默认pure值为False
为了进一步迷惑您:以上是 的四个基本(内置)值type。如果您使用插件,您可以这样做
yaml = YAML(typ='jinja2')
Run Code Online (Sandbox Code Playgroud)
上述一些信息可以从YAML()docstring中获得,但其中很少有进入到包文档中,这主要是由于ruamel.yaml作者的懒惰造成的。