Literal là một dự án để tạo ra một cách để tạo ra Python mã với mã Python & nbsp;. Thay vì có các chuỗi mã Python, bạn sử dụng các đối tượng literal.py mà nhớ lại các hoạt động làm cho họ, và lịch sử của hoạt động này là các chương trình Python quả.
Đây chỉ là một thử nghiệm mà tôi muốn chơi với; Nó hữu dụng chưa được chứng minh, và nhiều hơn khả năng này sẽ được ném đi như một thí nghiệm thất bại. Vì vậy, sử dụng cẩn thận và thận trọng.
Nhanh chóng tổng quan
nhập khẩu theo nghĩa đen
@ Literal.py
def unpack_octet (x, tải trọng, bù đắp, unpack_from):
& Nbsp; x <<= unpack_from ('B', tải trọng, bù đắp)
& Nbsp; bù đắp + = 1
print (unpack_octet ())
Cung cấp cho:
x = unpack_from ('B', tải trọng, bù đắp)
bù đắp + = 1
Hoặc một ví dụ khác được sử dụng để tạo ra unpackers đối số cho các giao thức AMQP:
def giải nén (phương pháp):
& Nbsp; @ literal.py
& Nbsp; def cơ thể (p, tải trọng, bù đắp, unpack_from, argtuple, ssize):
& Nbsp; các lĩnh vực = method.fields
& Nbsp; tên = p.tuple (* self.field_names)
& Nbsp; cho tôi, fset trong enumerate (lĩnh vực):
& Nbsp; nếu len (fset) == 1:
& Nbsp; cho lĩnh vực trong fset:
& Nbsp; name = p.var (field.name)
& Nbsp; nếu field.format == '*':
& Nbsp; # Đây là một chuỗi tải trọng,
& Nbsp; # không cần phải giải nén
& Nbsp; tên <<= tải trọng [offset: bù đắp + ssize]
& Nbsp; bù đắp + = ssize
& Nbsp; khác:
& Nbsp; # Một trường duy nhất để giải nén
& Nbsp; tên <<= unpack_from (struct_format (field.format),
& Nbsp; tải trọng, offset) [0]
& Nbsp; bù đắp + = field.size
& Nbsp; khác:
& Nbsp; # Một danh sách các lĩnh vực để giải nén
& Nbsp; này = p.tuple (* fset.names)
& Nbsp; các <<= unpack_from (struct_format (fset.format),
& Nbsp; tải trọng, bù đắp)
& Nbsp; bù đắp + = sum (f.size cho f trong fset)
& Nbsp; return tên
. & Nbsp; cơ thể trở lại () as_fun (lambda tải trọng, offset: 1,
& Nbsp; method.name)
Sẽ tạo ra các mã sau đây cho các phương pháp basic_deliver AMQP:
def cung cấp (tải trọng, bù đắp):
& Nbsp; ssize = unpack_from ('B', tải trọng, offset) [0]
& Nbsp; bù đắp + = 1
& Nbsp; consumer_tag = tải trọng [offset: bù đắp + ssize]
& Nbsp; bù đắp + = ssize
& Nbsp; delivery_tag, redelivered, ssize = unpack_from ('QBB, tải trọng, bù đắp)
& Nbsp; bù đắp + = 10
& Nbsp; tải trọng giao lưu = [offset: bù đắp + ssize]
& Nbsp; bù đắp + = ssize
& Nbsp; ssize = unpack_from ('B', tải trọng, offset) [0]
& Nbsp; bù đắp + = 1
& Nbsp; routing_key = tải trọng [offset: bù đắp + ssize]
& Nbsp; bù đắp + = ssize
& Nbsp; return (consumer_tag, delivery_tag, redelivered,
& Nbsp; trao đổi, routing_key)
Thêm tài liệu hướng tới.
Cài đặt
Bạn có thể cài đặt theo nghĩa đen hoặc thông qua các gói Python Index (PyPI) hoặc từ nguồn.
Để cài đặt sử dụng pip:
pips cài đặt chữ
Để cài đặt sử dụng easy_install:
& Nbsp; easy_install đen
Nếu bạn đã tải về một tarball nguồn bạn có thể cài đặt nó bằng cách làm như sau:
& Nbsp; python setup.py xây dựng
# Python setup.py cài đặt # root
Bug tracker
Nếu bạn có bất cứ đề nghị, báo cáo lỗi hoặc phiền toái xin vui lòng báo cáo để theo dõi vấn đề của chúng tôi tại http://github.com/ask/literal.py/issues/
Đóng góp
Phát triển literal.py xảy ra tại Github: http://github.com/ask/literal.py
Bạn được khuyến khích tham gia vào sự phát triển. . Nếu bạn không thích Github (đối với một số lý do nào) bạn đang chào đón để gửi các bản vá lỗi thường xuyên
Yêu cầu :
- Python
Bình luận không