ultimate type-safe code generation for python, only for being productive
Project description
writepy
A library for easing boilerplates in writing Python, with static checking support.
Working with types
- UNQ:
Expr[T] -> T
, anti-quotation - Q:
T -> Expr[T]
, quotation
Code Generation
Q: what does with CG >> seq: stmts...
mean?
A: Generating statically checked stmts...
to variable seq
, where seq
shall have .extend
method.
Example: A Family of Variables with Index-concerned Initialization
from writepy import *
import ast
import ast_compat as astc
def f(base: str):
seq = []
for each in range(5):
lhs = expr_as_is(object, base + str(each))
rhs = expr_from_repr(each)
call = Q[base + 1](lhs, rhs)
with CG >> seq:
UNQ[call]
UNQ[lhs] = (UNQ[rhs], UNQ[expr_from_repr(base)])
return seq
mk_cg(f)
seq_ = f("base")
print(astc.unparse(ast.Module(seq_)))
codegen:
(base + 1)(base0, 0)
base0 = (0, 'base')
(base + 1)(base1, 1)
base1 = (1, 'base')
(base + 1)(base2, 2)
base2 = (2, 'base')
(base + 1)(base3, 3)
base3 = (3, 'base')
(base + 1)(base4, 4)
base4 = (4, 'base')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
writepy-0.1-py3-none-any.whl
(6.0 kB
view details)
File details
Details for the file writepy-0.1-py3-none-any.whl
.
File metadata
- Download URL: writepy-0.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.8.0 tqdm/4.44.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47f03b66288b99bbf70203e7e528bc49e14ff273e829517dda1f654754f881d2 |
|
MD5 | cd44708aa2598a221dbe0c13944165ce |
|
BLAKE2b-256 | 1718e3c80581c0b7b20b3a2e0dff6f8e3ab812f5350dc64ed0137870c2225680 |