Skip to main content

PySExpr of Python-Compiler-Tools

PyPI version Build Status codecov MIT License

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)

Table of built distributions (wheels) for pysexpr 0.6
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.6 This release

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page