PySExpr of Python-Compiler-Tools
A general-purpose package for gaining expression-first capability in Python world. Currently implemented by taking advantage of Python bytecode, and available since Python 3.5, i.e., by using PySExpr as a cross-version compiler, you don't have to worry about the Python version.
See documentation.
All constructors of PySExpr are documented here.
Installation
pip install pysexpr
What PySExpr is & is not?
PySExpr is a framework for better(cross-version, efficient, expressiveness) metaprogramming in Python.
PySExpr is not a programming language, but a code generation back end good to be targeted.
PySExpr is a killer tool when it comes to programmable programming in Python. Comparing to using Python ASTs, we have perfect compatibility; in terms of generating Python code, PySExpr directly uses Python bytecode and produces faster code, at the same time you can have block expressions, assignment expressions or multiline-lambdas even in Python 3.5.
As this library is so useful, certainly there're many other scenarios for it to stand out. For example, we can backport Python3.8/PEP572's assignment expressions to Python 3.5+, by composing this library with the mechanisms proposed by future-strings.
Preview
from py_sexpr.terms import *
from py_sexpr.stack_vm.emit import module_code
xs = []
main = block(
assign_star("a", None),
for_range("a", 1, 10, call(var("print"), var("a"))),
)
exec(module_code(main), dict(print=xs.append))
assert xs == [1, 2, 3, 4, 5, 6, 7, 8, 9]
Metadata
Release files for pysexpr 0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysexpr-0.6-py3-none-any.whl | Python 3 | none | any | Details |
Release files / pysexpr-0.6-py3-none-any.whl
| Download URL | pysexpr-0.6-py3-none-any.whl |
|---|---|
| Size | 14.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
20c05c004dc34ab22939b0029b40bda6c69597cbfa8b84441d09e6f248cc5db1
|
|
BLAKE2b-256 checksum How to use checksums |
f6f3d0335cb543adea89df76cb1a8d42b7b7560841a8eeb8829171341f7cb1c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
|