Skip to main content

A simple code generator

Project description

ghost_writer

CI codecov DOI PyPI PyPI - Downloads

A simple package that allows you to build a class to parameterize scripts via code generation.

A cmdline utility is add to convert python scripts into generators which can later be modified.

Installation

pip install pyghost-writer

Usage

Say you have a simple script that you want to parameterize for code generation.

import os


for i in range(10):
    for j in range(20):
        pass

In the terminal run the scriptify_py command on the script

scriptify_py script.py

Now you will have a new file called generated_script.py which contains a class that can generate that script which can be run:

from ghost_writer import ScriptGenerator


class NewGenerator(ScriptGenerator):
    def __init__(self, file_name: str) -> None:
        super().__init__(file_name)

    def _build_script(self) -> None:
        self._add_line('import os')
        self._end_line()
        self._end_line()
        self._add_line('for i in range(10):')
        self._add_line('for j in range(20):', indent_level=1)
        self._add_line('pass', indent_level=2)

We can now modify the class to be parameterized:

from ghost_writer import ScriptGenerator


class MyGenerator(ScriptGenerator):
    def __init__(self, file_name: str, parameter: int) -> None:

        self._parameter = parameter

		super().__init__(file_name)

    def _build_script(self) -> None:
        self._add_line('import os')
        self._end_line()
        self._end_line()
        self._add_line('for i in range(10):')
        self._add_line('for j in range(20):', indent_level=1)
        self._add_line(f'print({parameter})', indent_level=2)

Now in python, we can import our class and run it:

generator = MyGenerator("new_script.py", 4)

generator.write()

And now we have a generated script called new_script.py

import os


for i in range(10):
    for j in range(20):
        print(4)
  • Free software: GNU General Public License v3

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

pyghost_writer-0.1.2.tar.gz (25.4 kB view hashes)

Uploaded Source

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