No project description provided
Project description
Introduction
pysource_codegen
is able to generate random python code which can be compiled.
The compiled code should not be executed.
This is still a very early version, but it does its job. It is general useful to test tools like formatters, linters or anything which operates on python code.
Install:
pip install pysource-codegen
Usage:
The tool can be used over the CLI:
pysource-codegen --seed 42
or as a library:
from pysource_codegen import generate
seed = 42
print(generate(seed))
You might find pysource-minimize also useful to reduce the generated code which triggers your bug down to a minimal code snipped, which can be used to fix the issue.
from pysource_codegen import generate
from pysource_minimize import minimize
def contains_bug(code):
"""
returns True if the code triggers a bug and False otherwise
"""
try:
test_something_with(code) # might throw
if "bug" in code: # maybe other checks
return True
except:
return True
return False
def find_issue():
for seed in range(0, 10000):
code = generate(seed)
if contains_bug(code):
new_code = minimize(code, contains_bug)
print("the following code triggers a bug")
print(new_code)
return
find_issue()
Bugs found in other projects:
black
- https://github.com/psf/black/issues/3676
- https://github.com/psf/black/issues/3678
- https://github.com/psf/black/issues/3677
cpython
- https://github.com/python/cpython/issues/109219
- https://github.com/python/cpython/issues/109823
- https://github.com/python/cpython/issues/109719
- https://github.com/python/cpython/issues/109627
- https://github.com/python/cpython/issues/109219
- https://github.com/python/cpython/issues/109118
- https://github.com/python/cpython/issues/109114
Todo:
- refactor the existing code
- use probabilities for the ast-nodes from existing python code (use markov chains)
- support older python versions
- allow to customize the probabilities to generate code to test specific language features
- hypothesis support
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 Distribution
pysource_codegen-0.5.2.tar.gz
(17.0 kB
view hashes)
Built Distribution
Close
Hashes for pysource_codegen-0.5.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3589905c1614dc660bc4131a9338fbc8c4907394113e6e692f2d3271e4eb6da8 |
|
MD5 | 2282c11714fecb56146837a30553f4d6 |
|
BLAKE2b-256 | 1a53fdee4eb2840adbdba98e67f537470937723d78b044dd519b1fbd1f57e145 |