本文整理汇总了Python中yaml.Loader.add_constructor方法的典型用法代码示例。如果您正苦于以下问题:Python Loader.add_constructor方法的具体用法?Python Loader.add_constructor怎么用?Python Loader.add_constructor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yaml.Loader
的用法示例。
在下文中一共展示了Loader.add_constructor方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: fix_yaml_loader
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def fix_yaml_loader():
"""Ensure that any string read by yaml is represented as unicode."""
from yaml import Loader, SafeLoader
def construct_yaml_str(self, node):
# Override the default string handling function
# to always return unicode objects
return self.construct_scalar(node)
Loader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
SafeLoader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
示例2: _handle_quirks
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def _handle_quirks(self):
if self._unicode_quirk:
self._logger.debug('Enabling unicode quirk')
def construct_yaml_str(self, node):
try:
rawdata = b''.join([chr(ord(x)) for x in self.construct_scalar(node)])
return rawdata.decode('utf8')
except ValueError:
# apparently sometimes the data is already correctly encoded
return self.construct_scalar(node)
Loader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
SafeLoader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
示例3: get_config_yaml
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def get_config_yaml( path_config=os.path.dirname(os.path.realpath(__file__)) + "/../config.d/config.yaml", name_config="openstack"):
import yaml
from yaml import Loader, SafeLoader
def construct_yaml_str(self, node):
# Override the default string handling function
# to always return unicode objects
return self.construct_scalar(node)
Loader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
SafeLoader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
f = open(path_config)
# use safe_load instead load
dataMap = yaml.load(f)[name_config]
f.close()
return dataMap
示例4: _do_loads
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def _do_loads(self, s, *args, **kwargs):
import yaml
from yaml import Loader, SafeLoader
# Force Unicode string output according to this SO question
# 2890146/how-to-force-pyyaml-to-load-strings-as-unicode-objects
def construct_yaml_str(self, node):
# Override the default string handling function
# to always return unicode objects
return self.construct_scalar(node)
_STR_TAG = 'tag:yaml.org,2002:str'
Loader.add_constructor(_STR_TAG, construct_yaml_str)
SafeLoader.add_constructor(_STR_TAG, construct_yaml_str)
# TODO: optionally utilize C acceleration if available
return yaml.load(s, *args, **kwargs)
示例5: load
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def load(cls, stream, constructors=None, multi_constructors=None):
loader = Loader(stream)
cs = dict(cls._constructors)
if constructors:
cs.update(constructors)
mcs = dict(cls._multi_constructors)
if multi_constructors:
mcs.update(multi_constructors)
if cs:
for name, constructor in cs.items():
loader.add_constructor(name, constructor)
if mcs:
for name, constructor in mcs.items():
loader.add_multi_constructor(name, constructor)
try:
return loader.get_single_data()
finally:
loader.dispose()
示例6: load
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
def load(stream, constructors=None):
loader = Loader(stream)
constructors = constructors or {}
if not "timedelta" in constructors:
loader.add_constructor("!timedelta", _timedelta_contructor)
if not "re" in constructors:
loader.add_constructor("!re", _re_constructor)
loader.add_multi_constructor("!ref:", _ref_constructor)
loader.add_multi_constructor("!factory:", _factory_constructor)
loader.add_multi_constructor("!obj:", _obj_constructor)
loader.add_multi_constructor("!extends:", _extends_constructor)
loader.add_multi_constructor("!include:", _extends_constructor)
if constructors:
for name, constructor in constructors.items():
loader.add_constructor("!" + name, constructor)
try:
return loader.get_single_data()
finally:
loader.dispose()
示例7: construct_yaml_str
# 需要导入模块: from yaml import Loader [as 别名]
# 或者: from yaml.Loader import add_constructor [as 别名]
from util.config_parse import convert_tokens
import os
from path import path
# https://stackoverflow.com/questions/2890146/how-to-force-pyyaml-to-load-strings-as-unicode-objects
from yaml import Loader, SafeLoader
def construct_yaml_str(self, node):
"""
Override the default string handling function
to always return unicode objects
"""
return self.construct_scalar(node)
Loader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
SafeLoader.add_constructor(u'tag:yaml.org,2002:str', construct_yaml_str)
# SERVICE_VARIANT specifies name of the variant used, which decides what YAML
# configuration files are read during startup.
SERVICE_VARIANT = os.environ.get('SERVICE_VARIANT', None)
# CONFIG_ROOT specifies the directory where the YAML configuration
# files are expected to be found. If not specified, use the project
# directory.
CONFIG_ROOT = path(os.environ.get('CONFIG_ROOT', ENV_ROOT))
# CONFIG_PREFIX specifies the prefix of the YAML configuration files,
# based on the service variant. If no variant is use, don't use a
# prefix.
CONFIG_PREFIX = SERVICE_VARIANT + "." if SERVICE_VARIANT else ""