大约5小时前,版本4.1.0
发布。它破坏了我的单元测试。以下是一个干净的MVCE显示:
3.12版:
>>> import numpy as np
>>> import yaml
>>> x = np.int64(2)
>>> yaml.dump(x, Dumper=yaml.Dumper)
'!!python/object/apply:numpy.core.multiarray.scalar\n- !!python/object/apply:numpy.dtype\n args: [i8, 0, 1]\n state: !!python/tuple [3, <, null, null, null, -1, -1, 0]\n- !!binary |\n AgAAAAAAAAA=\n'
4.1.0版:
^{pr2}$对于PyYAML
不再支持这些对象类型,是否有明确的原因?在
dump
现在是safe_dump
,它不会处理任意对象:将
^{pr2}$danger_dump
用于旧行为。在load
/safe_load
也是如此。找不到4.1.0的文档或发行说明,我只是通过挖掘提交(here)找到的。在是的。
yaml.load
允许任意代码执行,而这样一个危险的特性只能选择使用——不可能偶然使用。可以说,从一开始就应该这样,我很高兴PyYAML的新维护者已经纠正了这一点。在相关问题 更多 >
编程相关推荐