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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.