跳转到主要内容

yaml文件节点实现

项目描述

Latest PyPI version Number of PyPI downloads

node.ext.yaml 提供了一个对yaml文件的节点实现。

有关节点的更多信息,请参阅 node 软件包。

有关管道的更多信息,请参阅 plumber 软件包。

用法

创建一个yaml文件

from node.ext.yaml import YamlFile

class MyYamlFile(YamlFile):

    @property
    def fs_path(self):
        return '/path/to/file.yaml'

file = MyYamlFile()
file['child'] = 'Value'

# write file to disk
file()

定义子节点的工厂

from node.ext.yaml import YamlNode

class SpecificChild(YamlNode):
    pass

class DefaultChild(YamlNode):
    pass

class MyYamlFile(YamlFile):
    factories = {
        'child': SpecificChild,
        '*': DefaultChild
    }

定义节点成员的模式

from node import schema
from node.behaviors import SchemaAsAttributes
from plumber import plumbing

@plumbing(SchemaAsAttributes)
class MyYamlFile(YamlFile):
    schema = {
        'int_member': schema.Int(),
        'str_member': schema.Str()
    }

file = MyYamlFile()
file.attr['int_member'] = 1
file.attr['str_member'] = u'String'

模式成员可以直接在类上定义。

注意:请小心不要覆盖现有的API成员。

from node.behaviors import SchemaProperties

@plumbing(SchemaProperties)
class MyYamlFile(YamlFile):
    int_member = schema.Int()
    str_member = schema.Str()

file = MyYamlFile()
file.int_member = 1
file.str_member = u'String'

Python版本

  • Python 2.7, 3.3+

贡献者

  • Robert Niederreiter

变更

0.3 (2022-12-21)

  • node.ext.yaml.behaviors.YamlSequenceStorage 现在实现了 __contains__,它直接比较存储值。这是为了使包含检查正常工作,因为yaml子节点不在 __getitem__ 上缓存。[rnix]

  • node.ext.yaml.behaviors.YamlMember 现在提供了 default_mapping_factorydefault_sequence_factory 设置。[rnix]

  • node.ext.yaml.behaviors.YamlMember 现在继承自 node.behaviors.WildcardFactory。[rnix]

  • node.ext.yaml.YamlSequence 上使用 node.behaviors.SequenceAdoptnode.behaviors.SequenceOrder 行为。[rnix]

  • 建议使用在 node 1.2 中引入的 node.behaviors.MappingOrder 行为,而不是 node.behaviors.Order,在 node.ext.yaml.YamlMappingnode.ext.yaml.YamlFile 中使用。 [rnix]

0.2 (2022-10-06)

  • node.ext.fs.FSLocation 继承 YamlRootStorage,它提供了 fs_path 属性。请注意,现在 fs_path 被视为列表。 [rnix]

  • node.ext.fs.interfaces.IFile 继承 IYamlRoot。 [rnix]

  • 现在该软件包依赖于 node.ext.fs。 [rnix]

  • 将已弃用的 Adopt 替换为 MappingAdopt。 [rnix]

  • node.ext.yaml.YamlNodenode.ext.yaml.YamlFile 不再提供默认子工厂。 [rnix]

0.1 (2021-11-22)

  • 初始工作 [rnix]

许可协议

版权所有 (c) 2021-2022, Node 贡献者。保留所有权利。

在不违反以下条件的情况下,允许重新分发和使用源代码和二进制形式,无论是否修改:

  • 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  • 二进制形式的重新分发必须在文档和/或其他与分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。

本软件按“原样”提供,版权所有者和贡献者不提供任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后续损害(包括但不限于替代商品或服务的采购;损失使用、数据或利润;或业务中断)承担责任,无论该损害是否因本软件的使用而引起,即使被告知此类损害的可能性。 [rnix]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

node.ext.yaml-0.3.tar.gz (10.9 kB 查看哈希)

上传时间 源代码

构建分发

node.ext.yaml-0.3-py3-none-any.whl (10.4 kB 查看哈希)

上传时间 Python 3

由以下组织支持