Skip to main content

Execute python scripts cell by cell

Project description

csc - Execute python scripts cell by cell

Install with

pip install csc

Usage

Consider the following training script

#: parameters
...

#: setup
...

#: train
...

#: save
...

To run the the script cell by cell, use:

script = csc.Script("experiment.py")
script.run("parameters")
script.run("setup")
script.run("train")
script.run("save")

Splicing scripts

Different scripts can be "spliced" together by specifying multiple scripts. The first script acts as the base script and defines the available cells. Subsequent scripts, or spliced scripts, can extend the cells of the base script. All scripts share a single scope. For each cell, first the code of the base script is executed and then the code of the spliced scripts.

# file: parameters.py
#: parameters
batch_size = ...
scripts = csc.Script(["experiment.py", "parameters.py"])

# executes first the 'parameters' cell of 'experiment.py', then the
# 'parameters' cell of 'parameters.py'
scripts.run("parameters")

Command line usage

csc include a command line script splice and execute scripts. Usage:

$ python -m csc base_script.py spliced_script_1.py spliced_script_2.py

To splice in parameters, csc offers a shortcut: arguments specified via -p STATEMENT are concatenated into a script with a single 'parameters' cell that executes the given statements.

# this call
$ python -m csc base_script.py -p batch_size=100 -p learning_rate=3e-4

# is equivalent to
$ python -m csc base_script.py parameters.py
$ cat parameters.py
#: parameters
batch_size=100
learning_rate=3e-4

API Reference

csc.Script(base_script: Union[str, pathlib.Path, FileSource, InlineSource], /, *spliced_scripts, cell_marker: str = '#:', register: bool = False)

A Python script that can be executed cell by cell

Cells are defined via comments (per default '#: {CELL_NAME}').

csc.Script.list(self) -> list[str]

List all cells of the script

Only cells of the base script are considered.

csc.Script.run(self, *cell_names) -> None

Run cells of the script by name

csc.Script.eval(self, expr: str) -> Any

Evaluate an expression the scope of the script

csc.FileSource(path: pathlib.Path, *, cell_marker: str)

Define a script via a file

csc.InlineSource(text: str, *, cell_marker: str)

Define a script via its source

License

This package is licensed under the MIT License. See LICENSE for details.

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

csc-24.2.0.tar.gz (6.0 kB view hashes)

Uploaded Source

Built Distribution

csc-24.2.0-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

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