Dosłowne to projekt, aby stworzyć drogę do generowania kodu Pythona z kodu Pythona. & Nbsp; Zamiast literały ciągów znaków kodu Pythona, używasz literal.py obiekty, które pamięta wykonywane prace do nich, i historii operacji jest Powstały Program Python.
To tylko eksperyment, który chciałem grać; To użyteczność nie jest udowodnione, a bardziej niż prawdopodobne, zostanie wyrzucony jak nieudanego eksperymentu. Tak więc korzystać z rozwagą i ostrożnością.
Szybki przegląd
Import dosłowne
@ Literal.py
unpack_octet def (x, ładowność, offset, unpack_from):
& Nbsp; x <<= unpack_from ("B", ładowność, offset)
& Nbsp; przesunięcie + = 1
wydruku (unpack_octet ())
Daje:
x = unpack_from ("B", ładowność, offset)
przesunięcie + = 1
Albo inny przykład wykorzystywane do tworzenia dekompresorów argumentem dla AMQP protokołu:
rozpakować def (metoda):
& Nbsp; @ literal.py
& Nbsp; def ciała (p, ładowność, offset, unpack_from, argtuple, ssize):
& nbsp; pola = method.fields
& Nbsp; nazwy = p.tuple (* self.field_names)
& Nbsp; i, fset w wyliczyć (pola):
& Nbsp; len (fset) == 1:
& Nbsp; na polu w fset:
& Nbsp; name = p.var (field.name)
& Nbsp; field.format == '*':
& Nbsp; # To jest ładunek ciąg,
& Nbsp; # nie trzeba rozpakować
& Nbsp; nazwa <<= ładowność [offset: offset + ssize]
& Nbsp; przesunięcie + = ssize
& Nbsp; indziej:
& Nbsp; # pojedyncze pole do rozpakowania
& Nbsp; nazwa <<= unpack_from (struct_format (field.format),
& Nbsp; ładowność, offset) [0]
& Nbsp; przesunięcie + = field.size
& Nbsp; indziej:
& Nbsp; # lista dziedzinie rozpakować
& Nbsp; to = p.tuple (* fset.names)
& Nbsp; to <<= unpack_from (struct_format (fset.format),
& Nbsp; ładowność, offset)
& Nbsp; przesunięcie + = suma (f.size dla f w fset)
& Nbsp; nazwy powrót
. & Nbsp; ciało powrotu () as_fun (lambda ładowność, offset: 1,
& Nbsp; method.name)
Wygeneruje następujący kod do metody basic_deliver AMQP:
def dostarczyć (ładowność, offset):
& Nbsp; ssize = unpack_from ("B", ładowność, offset) [0]
& Nbsp; przesunięcie + = 1
& Nbsp; consumer_tag = ładowność [offset: offset + ssize]
& Nbsp; przesunięcie + = ssize
& Nbsp; delivery_tag, redelivered, ssize = unpack_from ("QBB", ładowność, offset)
& Nbsp; przesunięcie + = 10
& Nbsp; wymiana = ładowność [offset: offset + ssize]
& Nbsp; przesunięcie + = ssize
& Nbsp; ssize = unpack_from ("B", ładowność, offset) [0]
& Nbsp; przesunięcie + = 1
& Nbsp; routing_key = ładowność [offset: offset + ssize]
& Nbsp; przesunięcie + = ssize
& Nbsp; return (consumer_tag, delivery_tag, redelivered,
& Nbsp; wymiana, routing_key)
Więcej dokumentacji przyjść.
instalacji
Można zainstalować dosłowne albo poprzez pakietu Python (PyPI Index) lub źródeł.
Aby zainstalować przy użyciu pip:
pip install dosłowne
Aby zainstalować za pomocą easy_install:
& Nbsp; easy_install dosłowne
Jeśli po pobraniu archiwum źródłowe można zainstalować go w następujący sposób:
& Nbsp; python setup.py build
# Python setup.py install # jako root
tracker Bug
Jeśli masz jakieś sugestie, raporty o błędach lub przykrości zgłoś je do naszego trackera emisyjnej w http://github.com/ask/literal.py/issues/
Wkład
Rozwój literal.py dzieje się Github: http://github.com/ask/literal.py
Jesteś bardzo zachęcane do udziału w rozwoju. . Jeśli nie lubisz GitHub (z jakiegoś powodu), to serdecznie zapraszamy do wysyłania regularne poprawki
Wymagania :
- Python
Komentarze nie znaleziono