Skip to main content

No project description provided

Project description

pypi version Python Versions PyPI - Downloads GitHub Sponsors

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

cpython

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


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.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

pysource_codegen-0.5.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file pysource_codegen-0.5.0.tar.gz.

File metadata

  • Download URL: pysource_codegen-0.5.0.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.0 Linux/6.1.0-13-amd64

File hashes

Hashes for pysource_codegen-0.5.0.tar.gz
Algorithm Hash digest
SHA256 20f8f4b7d9919d839593e6c7b1189f68b954695fb5f65c9b58134ecf11de8832
MD5 a5048232bf6c39b4b89b7241e4ce0939
BLAKE2b-256 5615d1242bef96a2fad410eebed0d3a22a10c4e5b8acc399ed556dcc5842363e

See more details on using hashes here.

File details

Details for the file pysource_codegen-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pysource_codegen-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.0 Linux/6.1.0-13-amd64

File hashes

Hashes for pysource_codegen-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b252aed0315a72458a22a405e4966bb468f408e1e96c2eda3a0866feb38a82d8
MD5 024d01e774c4bcbdcd18f878748f2cce
BLAKE2b-256 1f2b55a1a6de523a6eb935bec78381cdc0e2bf5c5c04f60308c366c92fb212be

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