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

Uploaded Source

File details

Details for the file pyghost_writer-0.1.1.tar.gz.

File metadata

  • Download URL: pyghost_writer-0.1.1.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pyghost_writer-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3b5c6f3f956e348cf7846a4d2c9247e55ec9391bdea4f93b5d433d7245ca5579
MD5 f7887127faaa4266715def0ac136c916
BLAKE2b-256 83c761c273b6c6f759a6d9457595f3f56eea87f5873c745ae34ce2cfb687a75f

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