Python代码生成工具。
项目描述
- 版本:
- 1.0.0
概述
文字是一个有趣的周末项目,旨在通过Python代码生成Python代码。而不是使用Python代码的字符串字面量,你使用文字.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安装,
$ easy_install literal
如果您已下载源代码包,可以通过以下方式安装它,
$ python setup.py build # python setup.py install # as root
错误跟踪器
如果您有任何建议、错误报告或烦恼,请向我们的问题跟踪器报告,链接为http://github.com/ask/literal.py/issues/
贡献
文字.py的开发发生在Github上:http://github.com/ask/literal.py
您被鼓励参与开发。如果您不喜欢GitHub(出于某种原因),您也可以发送常规补丁。
许可证
此软件根据新BSD许可证许可。请参阅顶层分发目录中的LICENSE文件以获取完整的许可证文本。
项目详情
关闭
literal-1.0.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 68e5502d66eb8ccb46159235441dd0b65bcd5ab2ac57075101860c35d1b7208d |
|
| MD5 | 30f766764916eb75445c83c63a68b94f |
|
| BLAKE2b-256 | fd416b7c7cd9a1e51cd1a8751353bfe004d00c9f9a33bd3e4410b6e70b28ea5b |