"dbus签名解析器"
项目描述
一个dbus签名的解析器。
简介
本模块包含一个使用pyparsing库(http://pyparsing.wikispaces.com/)构建的dbus签名的解析器。
语法遵循https://dbus.freedesktop.org/doc/dbus-specification.html中的非正式规范。这是一个非常简单的语法,可以被一个LL(1)解析器解析。
语法已经使用Hypothesis测试库(http://hypothesis.works/)进行了大量的测试。
使用和实现提示
使用库来验证字符串是否是签名相当简单
>>> from dbus_signature_pyparsing import Parser >>> parser = Parser() >>> parser.PARSER.parseString("a(qy)", parseAll=True)
如果parseString()没有引发pyparsing异常,则参数字符串是有效的签名。
请注意,空字符串是一个有效的签名。因此,要求解析器通过将 parseAll 参数设置为 True 解析整个字符串是很重要的。如果 parseAll 为 False(默认值),则解析器始终可以解析空字符串,并且每个字符串都将被解析并验证是否为有效的签名。
解析器对象公开所有其子解析器作为实例属性。PARSER 属性是顶层解析器,适用于解析通用签名。COMPLETE 属性解析非正式规范中定义的“单个完整类型”。CODE 属性相当于规范中的“类型代码”。
解析器可以通过代理或继承轻松使用。每个子解析器属性都是 ParserElement;因此,每个子解析器都支持 addParseAction() 方法。要自定义基本解析器以在解析签名后返回特定值,请在适当的子解析器上调用 addParseAction() 方法,并选择合适的方法。修改后的解析器应在调用 parseString() 方法时在有效的签名字符串上返回所需值。有关进一步的帮助,请参阅 pyparsing 的全面文档,网址为 http://pyparsing.wikispaces.com/ 和 https://pythonhosted.org/pyparsing/。
打包
下游打包者,如果将测试纳入其打包,建议仅使用 test_deterministic.py 模块中的测试,以避免由于 Hypothesis 测试的非确定性行为而产生的测试失败。
项目详情
散列 for dbus_signature_pyparsing-0.4.1-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | d2c7464ad55d918aa5c802988eb3e3bae9710aad127dca4dd53c3832108d2922 |
|
MD5 | d903ca09817107d65cef397a85e1fde4 |
|
BLAKE2b-256 | 055eb06d6dc70c537a2d38b64b2e742c939e2fd0d4239b5ad10ed63fad2ad8b5 |