Literal é um projeto para criar uma forma de gerar código Python com código Python & nbsp;. Em vez de ter strings literais de código Python, você usa objetos literal.py que lembra as operações feitas a eles, e o histórico de operações é o programa Python resultante.
Este é apenas um experimento que eu queria jogar com; É utilidade não é comprovada, e mais do que provável que isso vai ser jogado fora como uma experiência fracassada. Portanto, use com cuidado e prudência.
Resumo Quick
importação literal
@ Literal.py
unpack_octet def (x, carga útil, offset, unpack_from):
& Nbsp; x <<= unpack_from ('B', carga útil, offset)
& Nbsp; compensado + = 1
print (unpack_octet ())
Dá:
x = unpack_from ('B', carga útil, offset)
compensada + = 1
Ou outro exemplo usado para criar argumentos unpackers para o protocolo AMQP:
descompactar def (método):
& Nbsp; @ literal.py
& Nbsp; def corpo (p, payload, offset, unpack_from, argtuple, ssize):
& nbsp; fields = method.fields
& Nbsp; names = p.tuple (* self.field_names)
& Nbsp; para i, fset em Enumerar (campos):
& Nbsp; if len (fset) == 1:
& Nbsp; para o campo em fset:
& Nbsp; name = p.var (field.name)
& Nbsp; se field.format == '*':
& Nbsp; # Este é um payload corda,
& Nbsp; # não tem que descompactar
& Nbsp; nome <<= carga útil [offset: offset + ssize]
& Nbsp; compensado + = ssize
& Nbsp; mais:
& Nbsp; # um único campo para descompactar
& Nbsp; nome <<= unpack_from (struct_format (field.format),
& Nbsp; payload, offset) [0]
& Nbsp; compensado + = field.size
& Nbsp; mais:
& Nbsp; # A lista de campo para descompactar
& Nbsp; estes = p.tuple (* fset.names)
& Nbsp; estes <<= unpack_from (struct_format (fset.format),
& Nbsp; payload, offset)
& Nbsp; compensado + = sum (f.size para f em fset)
& Nbsp; retornar nomes
. & Nbsp; corpo return () as_fun (lambda payload, offset: 1,
& Nbsp; method.name)
Geraria o seguinte código para o método basic_deliver AMQP:
def entregar (payload, offset):
& Nbsp; ssize = unpack_from ('B', carga útil, offset) [0]
& Nbsp; compensado + = 1
& Nbsp; consumer_tag = carga útil [offset: offset + ssize]
& Nbsp; compensado + = ssize
& Nbsp; delivery_tag, redelivered, ssize = unpack_from ('QBB', carga útil, offset)
& Nbsp; compensado + = 10
& Nbsp; de câmbio = carga útil [offset: offset + ssize]
& Nbsp; compensado + = ssize
& Nbsp; ssize = unpack_from ('B', carga útil, offset) [0]
& Nbsp; compensado + = 1
& Nbsp; routing_key = carga útil [offset: offset + ssize]
& Nbsp; compensado + = ssize
& Nbsp; retorno (consumer_tag, delivery_tag, redelivered,
& Nbsp; de câmbio, routing_key)
Mais documentação para vir.
Instalação
Você pode instalar literal quer através do Python Package Index (PyPI) ou de fonte.
Para instalar usando pip:
pip instalar literal
Para instalar usando easy_install:
& Nbsp; easy_install literal
Se você tiver baixado um pacote de código que você pode instalá-lo, fazendo o seguinte:
& Nbsp; de compilação python setup.py
# Python setup.py instalar como root #
Bug Tracker
Se você tem alguma sugestão, relatórios de bugs ou aborrecimentos por favor relatá-los ao nosso issue tracker em http://github.com/ask/literal.py/issues/
Contribuindo
Desenvolvimento de literal.py acontece no Github: http://github.com/ask/literal.py
Você é altamente incentivados a participar no desenvolvimento. . Se você não gosta de Github (por alguma razão) você é bem-vindo para enviar correções regulares
Requisitos :
- Python
Comentários não encontrado