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许可证下获得许可。查看许可证 文件位于顶级分发目录中,以获取完整的许可证文本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序