Skip to content

Repository files navigation

Expr Simplifier

🍋‍🟩 A tool for simplifying Python expressions that don't contain side effects, mainly for generated code

PyPI - Python VersionpypiPyPI - DownloadsLICENSE
uvruffGitmoji

Usage

Quick start in CLI

We recommend using the tool uv to try it without manually installing the package:

$ uvx expr_simplifier cse "a * 4 + (a * 4)"(___t_0 := (a * 4)) + ___t_0
$ uvx expr_simplifier constant_folding "(___x := 1 + 1) + ___x" --max-iter=1(___x := 2) + ___x
$ uvx expr_simplifier constant_folding "(___x := 1 + 1) + ___x" --max-iter=24
# uvx expr_simplifier logical_simplification "a and b and a"a and b

As a library

$ uv add expr-simplifier
from __future__ importannotationsimportastfromexpr_simplifierimportauto_simplifycode="a[1 + 1].b + a[3 - 1].b.c + (___x := 2) + (a[2].b and (___x == 2) and a[2].b)"tree=ast.parse(code, mode="eval")
simplified_tree=auto_simplify(tree)
print(ast.unparse(simplified_tree))
# (___t_1 := a[2].b) + ___t_1.c + 2 + ___t_1

TODOs

  • Automatically generate test cases

About

🍋‍🟩 A tool for simplifying Python expressions that don't contain side effects, mainly for generated code

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages