Skip to main content

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.

Metadata

Release files for csc 24.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for csc 24.2.0
File Size Uploaded Provenance Actions
csc-24.2.0.tar.gz 6.0 kB Without provenance Details for csc-24.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for csc 24.2.0
File Interpreter ABI Platform Actions
csc-24.2.0-py3-none-any.whl Python 3 none any Details for csc-24.2.0-py3-none-any.whl

Total release size: 13.0 kB

Release files / csc-24.2.0.tar.gz

Download URL csc-24.2.0.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f2bacd05a6863ecdc8a2d424801afa8e1acf92eb0664e1a8d7a171e212af980e
BLAKE2b-256 checksum
How to use checksums
755856df12002f778dd866ab0b2aaedb8ba80d92bfca7c86df072f3221178730
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Release files / csc-24.2.0-py3-none-any.whl

Download URL csc-24.2.0-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c32d3bff9162d5a86edc068d0eff31cfcab8b073f5cd11a1f710774ff5a78aca
BLAKE2b-256 checksum
How to use checksums
d3ae33397bef2a5472b8dbcc425ce9116e31946418709b2b96fd4b0bf7503110
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Security for csc 24.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page