.
Edebi bir Python kodu ile Python kodu üretmek için bir yol oluşturmak için proje ve nbsp; yerine Python kodu dize hazır sahip, onlara yapılan işlemleri hatırlar, ve operasyonların tarihi olduğunu literal.py nesneleri kullanın Elde edilen Python programı.
Bu benim oynamak istediğim sadece bir deneydir; Büyük olasılıkla bu başarısız bir deney olarak atılır olacak daha kanıtlanmış değildir kullanışlılığı ve fazlası var. Yani bakım ve dikkatli kullanın.
Hızlı gözden geçirme
literal ithalat
@ Literal.py
def unpack_octet (x, yük, ofset, unpack_from):
& Nbsp; x <<= unpack_from ('B', yükü, ofset)
& Nbsp; offset + = 1
Baskı (unpack_octet ())
Verir:
x = unpack_from ('B', yükü, ofset)
+ = 1 ofset
Ya da başka bir örnek AMQP protokol için argüman unpackers oluşturmak için kullanılan:
def açmak (yöntem):
& Nbsp; * literal.py
& Nbsp; def vücut (p yük, ofset, unpack_from, argtuple, ssize):
& Nbsp; alanlar = method.fields
& Nbsp; adları = p.tuple (* self.field_names)
& Nbsp; i için, numaralandırmak (alanlar) olarak FSet:
& Nbsp; len ise (FSet) == 1:
& Nbsp; FSet alan için:
& Nbsp; name = p.var (field.name)
& Nbsp; eğer field.format == '*':
& Nbsp; # Bu bir dize yük olduğunu,
& Nbsp; # açmak zorunda değilsiniz
& Nbsp; adı <<= yük [ofset: + ssize ofset]
& Nbsp; ofset + = ssize
& Nbsp; else:
& Nbsp; # Tek bir alan açmak için
& Nbsp; adı <<= unpack_from (struct_format (field.format),
& Nbsp; yükü, ofset) [0]
& Nbsp + = field.size ofset
& Nbsp; else:
& Nbsp; alanının içinde bir listesi açmak için
& Nbsp; bu = p.tuple (* fset.names)
& Nbsp; bu <<= unpack_from (struct_format (fset.format),
& Nbsp; yükü,) ofset
& Nbsp; (FSet f için f.size) + = toplamı ofset
& Nbsp; adlarını iade
. & Nbsp; dönüş gövdesi () as_fun (lambda yükü, ofset: 1,
& Nbsp; method.name)
AMQP yöntem basic_deliver için aşağıdaki kodu oluşturmak istiyorum:
def teslim (yük, ofset):
& Nbsp; ssize = unpack_from ('B', yükü, ofset) [0]
& Nbsp; offset + = 1
& Nbsp; consumer_tag = yük [ofset: + ssize ofset]
& Nbsp; ofset + = ssize
& Nbsp; delivery_tag, redelivered, ssize = unpack_from ('QBB', yükü, ofset)
& Nbsp; ofset + = 10
& Nbsp; değişimi = yük [ofset: + ssize ofset]
& Nbsp; ofset + = ssize
& Nbsp; ssize = unpack_from ('B', yükü, ofset) [0]
& Nbsp; offset + = 1
& Nbsp; routing_key = yük [ofset: + ssize ofset]
& Nbsp; ofset + = ssize
& Nbsp; dönüş (consumer_tag, delivery_tag, redelivered
& Nbsp; değişimi, routing_key)
Daha dokümantasyon gelmek.
Kurulum
Ya Python Paketi Endeksi (PyPI) üzerinden veya kaynaktan değişmez yükleyebilirsiniz.
Pip kullanarak yüklemek için:
literal yüklemek pip
Easy_install kullanarak yüklemek için:
& Nbsp; easy_install değişmez
Bir kaynak arşivini indirilen varsa aşağıdakileri yaparak yükleyebilirsiniz:
& Nbsp; piton setup.py inşa
# Python root olarak # setup.py install
Hata izci
Eğer herhangi bir öneriniz, hata raporları veya sıkıntılar varsa http://github.com/ask/literal.py/issues/ bizim sorunu izci bunları rapor edin
katkıda
Literal.py Geliştirme Github ne olur: http://github.com/ask/literal.py
Sen çok gelişme katılmaya teşvik edilmektedir. . Eğer düzenli yamaları göndermek için buyrun (nedense) GitHub beğenmezseniz
Gereksinimler :
- Python
Yorum Bulunamadı