Literal ist ein Projekt, einen Weg zu Python-Code mit Python-Code zu generieren. & Nbsp; Anstatt Zeichenfolgenliteralen von Python-Code, literal.py Objekte verwenden Sie, dass die Operationen mit ihnen gemacht, erinnert, und die Geschichte der Operationen ist die resultierende Python-Programm.
Dies ist nur ein Experiment, das ich mit spielen wollte; Es ist Nutzen nicht bewiesen ist, und mehr als wahrscheinlich, wird diese entfernt als gescheitertes Experiment geworfen werden. So verwenden mit Sorgfalt und Vorsicht.
Schneller Überblick
Import wörtliche
@ Literal.py
def unpack_octet (x, Nutzlast, Offset, unpack_from):
& Nbsp; x <<= unpack_from ('B', Nutzlast, Offset)
& Nbsp; Offset + = 1
print (unpack_octet ())
Ermöglicht:
x = unpack_from ('B', Nutzlast, Offset)
Offset + = 1
Oder ein anderes Beispiel verwendet werden, um Argument Entpacker für den AMQP-Protokoll zu erstellen:
def auspacken (Methode):
& Nbsp; @ literal.py
& Nbsp; def Körper (p, Nutzlast, Offset, unpack_from, argtuple, ssize):
& Nbsp; Felder = method.fields
& Nbsp; names = p.tuple (* self.field_names)
& Nbsp; für i, fset in enumerate (Felder):
& Nbsp; wenn len (fset) == 1:
& Nbsp; für Feld in fset:
& Nbsp; name = p.var (field.name)
& Nbsp; wenn field.format == '*':
& Nbsp; # Dies ist ein String-Nutzlast,
& Nbsp; # müssen nicht entpacken
& Nbsp; Namen <<= Nutzlast [Offset: Offset + ssize]
& Nbsp; Offset + = ssize
& Nbsp; sonst:
& Nbsp; # Ein einzelnes Feld zu entpacken
& Nbsp; Namen <<= unpack_from (struct_format (field.format)
& Nbsp; Nutzlast, Offset) [0]
& Nbsp; Offset + = field.size
& Nbsp; sonst:
& Nbsp; # Eine Liste von Feld zu entpacken
& Nbsp; Diese = p.tuple (* fset.names)
& Nbsp; Diese <<= unpack_from (struct_format (fset.format)
& Nbsp; Nutzlast, Offset)
& Nbsp; Offset + = Summe (f.size für f in fset)
& Nbsp; zurück Namen
. & Nbsp; Rück Körper () as_fun (Lambda Nutzlast, Offset: 1,
& Nbsp; method.name)
Möchten Sie den folgenden Code für das AMQP Verfahren basic_deliver erzeugen:
def liefern (Nutzlast, Offset):
& Nbsp; ssize = unpack_from ('B', Nutzlast, Offset) [0]
& Nbsp; Offset + = 1
& Nbsp; consumer_tag = Nutzlast [Offset: Offset + ssize]
& Nbsp; Offset + = ssize
& Nbsp; delivery_tag, zurückgeliefert, ssize = unpack_from ('QBB', Nutzlast, Offset)
& Nbsp; Offset = 10 +
& Nbsp; Austausch = Nutzlast [Offset: Offset + ssize]
& Nbsp; Offset + = ssize
& Nbsp; ssize = unpack_from ('B', Nutzlast, Offset) [0]
& Nbsp; Offset + = 1
& Nbsp; routing_key = Nutzlast [Offset: Offset + ssize]
& Nbsp; Offset + = ssize
& Nbsp; return (consumer_tag, delivery_tag, zurückgeliefert,
& Nbsp; Austausch, routing_key)
Weitere Dokumentation zu kommen.
Installation
Sie können entweder über die Python Package Index (PyPI) oder von der Quelle wörtliche installieren.
So installieren Sie mit pip:
pip installieren wörtliche
So installieren Sie über easy_install:
& Nbsp; easy_install wörtliche
Wenn Sie ein Quell-Tarball heruntergeladen haben, können Sie, indem Sie folgendermaßen installieren:
& Nbsp; python setup.py build
# Python setup.py als root installieren #
Bug tracker
Wenn Sie Anregungen, Fehlermeldungen oder Störungen haben melden Sie diese bitte an unseren Bugtracker bei http://github.com/ask/literal.py/issues/
Beitrag
Entwicklung literal.py geschieht auf Github: http://github.com/ask/literal.py
Sie sind sehr ermutigt, sich an der Entwicklung zu beteiligen. . Wenn Sie nicht wie Github (aus irgendeinem Grund) können Sie gerne regelmäßig Patches senden
Anforderungen :
- Python
Kommentare nicht gefunden