python代码生成工具。
literal的Python项目详细描述
Version: | 1.0.0 |
---|
概要
literal是一个有趣的周末项目,它创建了一种生成python的方法 使用python代码编写代码。而不是python的字符串文本 代码,使用literal.py对象来记住操作 对他们做了,操作的历史就是 python程序。
这只是我想玩的一个实验; 它的有用性还没有被证明,而且很可能 这将被当作失败的实验扔掉。所以使用 小心小心。
快速概述
import literal @literal.py def unpack_octet(x, payload, offset, unpack_from): x <<= unpack_from('B', payload, offset) offset += 1 print(unpack_octet())
给出:
x = unpack_from('B', payload, offset) offset += 1
或另一个用于创建参数解包器的示例 对于AMQP协议:
def unpack(method): @literal.py def body(p, payload, offset, unpack_from, argtuple, ssize): fields = method.fields names = p.tuple(*self.field_names) for i, fset in enumerate(fields): if len(fset) == 1: for field in fset: name = p.var(field.name) if field.format == '*': # This is a string payload, # don't have to unpack name <<= payload[offset:offset + ssize] offset += ssize else: # A single field to unpack name <<= unpack_from(struct_format(field.format), payload, offset)[0] offset += field.size else: # A list of field to unpack these = p.tuple(*fset.names) these <<= unpack_from(struct_format(fset.format), payload, offset) offset += sum(f.size for f in fset) return names return body().as_fun(lambda payload, offset: 1, method.name)
将为amqp方法basic_deliver生成以下代码:
def deliver(payload, offset): ssize = unpack_from('B', payload, offset)[0] offset += 1 consumer_tag = payload[offset:offset + ssize] offset += ssize delivery_tag, redelivered, ssize = unpack_from('QBB', payload, offset) offset += 10 exchange = payload[offset:offset + ssize] offset += ssize ssize = unpack_from('B', payload, offset)[0] offset += 1 routing_key = payload[offset:offset + ssize] offset += ssize return (consumer_tag, delivery_tag, redelivered, exchange, routing_key)
更多的文件。
安装
您可以通过python包索引(pypi)安装 或者来源。
要使用pip安装,请执行以下操作:
$ pip install literal
要使用“简易安装”进行安装,请执行以下操作:
$ easy_install literal
如果你下载了一个源tarball,你可以安装它 执行以下操作:
$ python setup.py build # python setup.py install # as root
错误跟踪程序
如果您有任何建议、错误报告或烦恼,请报告 我们的问题跟踪者在http://github.com/ask/literal.py/issues/
贡献
literal.py的开发发生在github: http://github.com/ask/literal.py
我们非常鼓励您参与开发。如果你不知道 像github(出于某种原因)一样,欢迎您发送常规补丁。
许可证
此软件在新的bsd许可证下获得许可。查看许可证 文件位于顶级分发目录中,以获取完整的许可证文本。