буквеній є проект створення спосіб створення Python код з Python коду і NBSP ;. Замість того, рядкові літерали Python коду, можна використовувати literal.py об'єкти, які пам'ятає операції зробили для них, і історія операцій в результаті програма Python.
Це просто експеримент, який я хотів грати с; Це корисність не доведена, і, швидше за все, це буде кинуто геть, як невдалий експеримент. Так що використовуйте з обережністю і обережністю.
Короткий огляд
імпорт буквальне
@ Literal.py
Def unpack_octet (х, корисне навантаження, зміщення, unpack_from):
І NBSP; х << = unpack_from ('B', корисне навантаження, зсув)
І NBSP; зсув + = 1
друку (unpack_octet ())
Дає:
х = unpack_from ('B', корисне навантаження, зсув)
зсув + = 1
Або інший приклад використовується для створення аргументів розпаковують для AMQP протоколу:
Def розпакувати (метод):
І NBSP; @ literal.py
І NBSP; Def тіла (р, корисне навантаження, зміщення, unpack_from, argtuple, ssize):
і NBSP; Fields = method.fields
І NBSP; імена = p.tuple (* self.field_names)
І NBSP; бо Я FSet в Перераховувати (поля):
І NBSP; If Len (FSet) == 1:
І NBSP; для поля в FSet:
І NBSP; ім'я = p.var (field.name)
І NBSP; якщо field.format == '*':
І NBSP; # Це рядок корисного навантаження,
І NBSP; # не потрібно розпакувати
І NBSP; ім'я << = навантаження [зсув: зсув + ssize]
І NBSP; зсув + = ssize
І NBSP; інше:
І NBSP; # одне поле для розпакування
І NBSP; ім'я << = unpack_from (struct_format (field.format),
І NBSP; корисне навантаження, зсув) [0]
І NBSP; зсув + = field.size
І NBSP; інше:
І NBSP; # список поля, щоб розпакувати
І NBSP; це = p.tuple (* fset.names)
І NBSP; вони << = unpack_from (struct_format (fset.format),
І NBSP; корисне навантаження, зсув)
І NBSP; зсув + = сума (f.size для F в FSet)
І NBSP; повертати імена
. & NBSP; повернення тіла () as_fun (лямбда корисного навантаження, зміщення: 1,
І NBSP; method.name)
Буде генерувати наступний код для AMQP методу basic_deliver:
Def Deliver (корисного навантаження, зсув):
І NBSP; ssize = unpack_from ('B', корисне навантаження, зсув) [0]
І NBSP; зсув + = 1
І NBSP; consumer_tag = навантаження [зсув: зсув + ssize]
І NBSP; зсув + = ssize
І NBSP; delivery_tag, повторно доставлена, ssize = unpack_from ('QBB', корисне навантаження, зсув)
І NBSP; зсув + = 10
І NBSP; обмін = навантаження [зсув: зсув + ssize]
І NBSP; зсув + = ssize
І NBSP; ssize = unpack_from ('B', корисне навантаження, зсув) [0]
І NBSP; зсув + = 1
І NBSP; routing_key = навантаження [зсув: зсув + ssize]
І NBSP; зсув + = ssize
І NBSP; повернення (consumer_tag, delivery_tag, повторно доставлена,
І NBSP; обмін, routing_key)
Більше документації попереду.
Установка
Ви можете встановити буквальне або через каталог програмних пакетів Python (PyPi) або з джерела.
Для установки за допомогою PIP:
пункт встановити буквальне
Для установки за допомогою easy_install:
І NBSP; easy_install буквальне
Якщо ви завантажили архів з вихідним кодом ви можете встановити його, виконавши наступні дії:
І NBSP; пітон setup.py збірки
# Пітон setup.py встановити # в якості кореня
Bug Tracker
Якщо у вас є пропозиції, повідомлення про помилки або неприємності, будь ласка, повідомте про них у нашій системі відстеження проблем в http://github.com/ask/literal.py/issues/
внесок
Розробка literal.py відбувається на Github: http://github.com/ask/literal.py
Ми настійно пропонується взяти участь у розвитку. . Якщо вам не подобається Github (з деяких причин) ви можете відправити звичайні патчі
Вимоги
- Python
Коментар не знайдено