Make UnsafeTag self registering
YAMLObject classes can self-register themselves in the yaml dumper and loader via metaclass magic. Use it so we don't execute statements during import. Change-Id: I31f097701f863e3f2298028d76054e80dfc2d23e
This commit is contained in:
parent
c7ec1490b0
commit
1a5a9863bb
|
@ -27,6 +27,8 @@ except ImportError:
|
||||||
|
|
||||||
class UnsafeTag(yaml.YAMLObject):
|
class UnsafeTag(yaml.YAMLObject):
|
||||||
yaml_tag = u'!unsafe'
|
yaml_tag = u'!unsafe'
|
||||||
|
yaml_dumper = yaml.SafeDumper
|
||||||
|
yaml_loader = yaml.SafeLoader
|
||||||
|
|
||||||
def __init__(self, unsafe_var):
|
def __init__(self, unsafe_var):
|
||||||
self.unsafe_var = unsafe_var
|
self.unsafe_var = unsafe_var
|
||||||
|
@ -43,13 +45,6 @@ class UnsafeTag(yaml.YAMLObject):
|
||||||
return self.unsafe_var
|
return self.unsafe_var
|
||||||
|
|
||||||
|
|
||||||
# Just calling SafeLoader and SafeDumper without yaml module prefix
|
|
||||||
# does not work and cyaml is using yaml.SafeConstructor yaml.SafeRepresenter
|
|
||||||
# underneath so this just fine for both
|
|
||||||
yaml.SafeLoader.add_constructor(UnsafeTag.yaml_tag, UnsafeTag.from_yaml)
|
|
||||||
yaml.SafeDumper.add_multi_representer(UnsafeTag, UnsafeTag.to_yaml)
|
|
||||||
|
|
||||||
|
|
||||||
def safe_load(stream, *args, **kwargs):
|
def safe_load(stream, *args, **kwargs):
|
||||||
return yaml.load(stream, *args, Loader=SafeLoader, **kwargs)
|
return yaml.load(stream, *args, Loader=SafeLoader, **kwargs)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue