Skip to main content

Re-run a notebook substituting input parameters in the first cell.

Project description

This is a tool to run notebooks with input values. When you write the notebook, these are defined in the first code cell - or a cell with a ‘parameters’ cell tag - with regular assignments like this:

stock = 'YHOO'
days_back = 600

Nbparameterise handles finding and extracting these parameters, and replacing them with input values. You can then run the notebook with the new values. This can be used for:

  • Batch processing: run the same code on a list of different inputs. See examples/batch.py.

  • Simple user interfaces: build an input form based on the parameters, and run the notebook when the user submits the form. See examples/webapp.py for an implementation of this with an HTML form.

Nbparameterise can identify and replace numbers, strings, booleans (True/False), lists and dicts - the types which can be represented in JSON (apart from None). It’s designed to change parameter values but keep their types, although this isn’t enforced.

Extra information about the parameters, such as names to display in a user interface, can be stored in notebook metadata.

Nbparameterise is written in Python 3, but it can handle notebooks that use Python 2.

Usage:

import nbclient
import nbformat
from nbparameterise import (
    extract_parameters, replace_definitions, parameter_values
)

with open("Stock display.ipynb") as f:
    nb = nbformat.read(f, as_version=4)

# Get a list of Parameter objects
orig_parameters = extract_parameters(nb)

# Update one or more parameters
params = parameter_values(orig_parameters, stock='GOOG')

# Make a notebook object with these definitions
new_nb = replace_definitions(nb, params)

# Execute the notebook with the new parameters
nbclient.execute(new_nb)

If you are interested in using your parameterized Jupyter notebooks through a command line interface, have a look at nbclick.

Changes

0.6

2023-02-28

  • The parameters cell no longer needs to be the first code cell: if you add a cell tag ‘parameters’ to another cell, parameters will be extracted from and replaced in that cell. Capitalisation doesn’t matter. (PR #27).

  • Only the parameter values are replaced: other code in the parameter cell will now be preserved unchanged (PR #19). The comment= parameter now has no effect, and it may be removed in a future version.

  • The execute= parameter for replace_definitions() is now deprecated. Please use nbclient to execute your notebook after substituting parameters.

  • nbparameterise now requires Python 3.8 or above.

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

nbparameterise-0.6.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nbparameterise-0.6-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file nbparameterise-0.6.tar.gz.

File metadata

  • Download URL: nbparameterise-0.6.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for nbparameterise-0.6.tar.gz
Algorithm Hash digest
SHA256 bbdc59c1a3af4071479d34b184374874ae937256cb72be54ecf4f73494355dd4
MD5 e159bf1c98e81ff75cd33363904f12b3
BLAKE2b-256 72fa33c973f9d11b4dfef79b6a1d9963bf4d912f9b790426e67daecd520dc5c1

See more details on using hashes here.

File details

Details for the file nbparameterise-0.6-py3-none-any.whl.

File metadata

  • Download URL: nbparameterise-0.6-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for nbparameterise-0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5d7067ddd9bdfeccf356404ead4abfb374746ed91e53181a80639aa0fa98add4
MD5 668fa508726d5b23a059135f476a2712
BLAKE2b-256 a773d098bc91f8af147bd210432a14c2cd707363849336621b3707c4135ff6ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page