Papermill is a tool for parameterizing, executing, and analyzing Jupyter Notebooks.
Papermill solves the problem of running notebooks with different inputs and orchestrating them into data pipelines. It works by designating a cell with the `parameters` tag as a template for default values, then injecting a new `injected-parameters` cell at execution time to override those defaults with supplied values. This approach lets you run the same notebook multiple times with different parameters without manual editing, and enables programmatic workflow execution where one notebook's results can determine which notebook runs next. The tool takes an opinionated stance on parameterization based on experience using notebooks at scale in production data pipelines.
Papermill suits teams running notebooks as scheduled jobs or pipeline stages in data engineering and analytics workflows. It works well for scenarios like financial reports that need to run with different date ranges or parameter sets, or for building conditional workflows where downstream notebook selection depends on upstream results. The tool supports multiple execution methods through both a Python API and command-line interface, and can read parameters from command-line flags or YAML files. It handles storage across local filesystems and cloud platforms including Amazon S3 and Azure.
The project maintains active engagement with its codebase through regular updates and responsiveness to issues. Development shows consistent attention to both new features and maintenance of existing functionality. The tool supports execution across multiple notebook environments including Python, R, Julia, and Scala, reflecting ongoing investment in cross-language compatibility.