无法在类初始化

时间:2017-10-24 07:03:22

标签: python yaml

我使用自定义YAML标记来定义配置中的秘密。配置密钥的路径确定密钥库中密钥的路径。

import yaml
import pdb

yaml_str="""
databases:
  master:
    user: 'admin'
    pass: !KMS
"""


class KMSSecret(yaml.YAMLObject):

    def __repr__(self):
        pdb.set_trace()

        secret_path = '/' + '/'.join(self._find_key(config))
        return secret_path

    def _find_key(self, data):
        pdb.set_trace()

        for key, value in data.items():
            if isinstance(value, dict) or isinstance(value, list):
                path_item = self._find_key(value)
                if path_item:
                    return [key] + path_item
            elif value is self:
                return [key]

    @classmethod
    def from_yaml(self, loader, node):
        return KMSSecret()


yaml.add_constructor(u'!KMS', KMSSecret.from_yaml)
config = yaml.load(yaml_str)

__repr___find_key内设置断点无效。

代码必须在某个时刻执行,因为在加载后检查config变量会显示预期的表示。

print(config)添加到上述代码段的末尾时,断点可以正常工作。

我想更多地了解正在发生的事情以及我应该阅读的内容。

0 个答案:

没有答案