Skip to main content

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

This version

0.1

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)

Uploaded Python 3

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

Hashes for writepy-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47f03b66288b99bbf70203e7e528bc49e14ff273e829517dda1f654754f881d2
MD5 cd44708aa2598a221dbe0c13944165ce
BLAKE2b-256 1718e3c80581c0b7b20b3a2e0dff6f8e3ab812f5350dc64ed0137870c2225680

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page