Skip to content

Commit 8d7a780

Browse files
committed
Change default loader for yaml.add_constructor (#287)
* Change default loader for yaml.add_constructor If the Loader parameter is not given, add constructor to all three loaders
1 parent 8a7d0ed commit 8d7a780

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

lib/yaml/__init__.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,22 +329,32 @@ def add_path_resolver(tag, path, kind=None, Loader=Loader, Dumper=Dumper):
329329
Loader.add_path_resolver(tag, path, kind)
330330
Dumper.add_path_resolver(tag, path, kind)
331331

332-
def add_constructor(tag, constructor, Loader=Loader):
332+
def add_constructor(tag, constructor, Loader=None):
333333
"""
334334
Add a constructor for the given tag.
335335
Constructor is a function that accepts a Loader instance
336336
and a node object and produces the corresponding Python object.
337337
"""
338-
Loader.add_constructor(tag, constructor)
338+
if Loader == None:
339+
loader.Loader.add_constructor(tag, constructor)
340+
loader.FullLoader.add_constructor(tag, constructor)
341+
loader.UnsafeLoader.add_constructor(tag, constructor)
342+
else:
343+
Loader.add_constructor(tag, constructor)
339344

340-
def add_multi_constructor(tag_prefix, multi_constructor, Loader=Loader):
345+
def add_multi_constructor(tag_prefix, multi_constructor, Loader=None):
341346
"""
342347
Add a multi-constructor for the given tag prefix.
343348
Multi-constructor is called for a node if its tag starts with tag_prefix.
344349
Multi-constructor accepts a Loader instance, a tag suffix,
345350
and a node object and produces the corresponding Python object.
346351
"""
347-
Loader.add_multi_constructor(tag_prefix, multi_constructor)
352+
if Loader == None:
353+
loader.Loader.add_multi_constructor(tag_prefix, multi_constructor)
354+
loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor)
355+
loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor)
356+
else:
357+
Loader.add_multi_constructor(tag_prefix, multi_constructor)
348358

349359
def add_representer(data_type, representer, Dumper=Dumper):
350360
"""

lib3/yaml/__init__.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,22 +326,32 @@ def add_path_resolver(tag, path, kind=None, Loader=Loader, Dumper=Dumper):
326326
Loader.add_path_resolver(tag, path, kind)
327327
Dumper.add_path_resolver(tag, path, kind)
328328

329-
def add_constructor(tag, constructor, Loader=Loader):
329+
def add_constructor(tag, constructor, Loader=None):
330330
"""
331331
Add a constructor for the given tag.
332332
Constructor is a function that accepts a Loader instance
333333
and a node object and produces the corresponding Python object.
334334
"""
335-
Loader.add_constructor(tag, constructor)
335+
if Loader == None:
336+
loader.Loader.add_constructor(tag, constructor)
337+
loader.FullLoader.add_constructor(tag, constructor)
338+
loader.UnsafeLoader.add_constructor(tag, constructor)
339+
else:
340+
Loader.add_constructor(tag, constructor)
336341

337-
def add_multi_constructor(tag_prefix, multi_constructor, Loader=Loader):
342+
def add_multi_constructor(tag_prefix, multi_constructor, Loader=None):
338343
"""
339344
Add a multi-constructor for the given tag prefix.
340345
Multi-constructor is called for a node if its tag starts with tag_prefix.
341346
Multi-constructor accepts a Loader instance, a tag suffix,
342347
and a node object and produces the corresponding Python object.
343348
"""
344-
Loader.add_multi_constructor(tag_prefix, multi_constructor)
349+
if Loader == None:
350+
loader.Loader.add_multi_constructor(tag_prefix, multi_constructor)
351+
loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor)
352+
loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor)
353+
else:
354+
Loader.add_multi_constructor(tag_prefix, multi_constructor)
345355

346356
def add_representer(data_type, representer, Dumper=Dumper):
347357
"""

0 commit comments

Comments
 (0)