https://github.com/ayasyrev/nbmetaclean
Cl app / pre-commit hook to clean Jupyter Notebooks metadata, execution_count and optionally output.
https://github.com/ayasyrev/nbmetaclean
notebooks pre-commit-hook
Last synced: about 1 year ago
JSON representation
Cl app / pre-commit hook to clean Jupyter Notebooks metadata, execution_count and optionally output.
- Host: GitHub
- URL: https://github.com/ayasyrev/nbmetaclean
- Owner: ayasyrev
- License: apache-2.0
- Created: 2023-10-23T08:00:42.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-03T08:26:00.000Z (about 1 year ago)
- Last Synced: 2025-04-12T01:16:51.823Z (about 1 year ago)
- Topics: notebooks, pre-commit-hook
- Language: Python
- Homepage: https://ayasyrev.github.io/nbmetaclean/
- Size: 749 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nbmetaclean
Collections of python scripts for checking and cleaning Jupyter Notebooks metadata, execution_count and optionally output.
Can be used as command line tool or pre-commit hook.
Pure Python, no dependencies.
Can be used as a pre-commit hook or as a command line tool.
[](https://pypi.org/project/nbmetaclean/)
[](https://badge.fury.io/py/nbmetaclean)
[](https://github.com/ayasyrev/nbmetaclean/actions?workflow=Tests)
[](https://codecov.io/gh/ayasyrev/nbmetaclean)
## nbmetaclean
Clean Jupyter Notebooks metadata, execution_count and optionally output.
## nbcheck
Check Jupyter Notebooks for errors and (or) warnings in outputs.
## Base usage
### Pre-commit hook
Nbmetaclean can be used as a pre-commit hook, with [pre-commit](https://pre-commit.com/pre-commit)
You do not need to install nbmetaclean, it will be installed automatically.
add to `.pre-commit-config.yaml`:
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbmetaclean
- id: nbcheck
args: [ --ec, --err, --warn ]
```
### Command line tool
#### Without install:
If you use [uv](https://github.com/astral-sh/uv) package manager, you can nbmetaclean without install.
To clean notebooks:
```bash
uvx nbmetaclean
```
To check notebooks:
```bash
uvx --from nbmetaclean nbcheck --ec --err --warn
```
#### Install:
```bash
pip install nbmetaclean
```
Usage:
run `nbmetaclean` or `nbcheck` command with `path` to notebook or folder with notebooks.
If no `path` is provided, current directory will be used as `path`.
It is possible to use `nbclean` command instead of `nbmetaclean`.
`nbmetaclean` will be used by defaults in favour of usage with `uvx`
```bash
nbmetaclean
```
`nbcheck` should be run with flags:
- `--ec` for execution_count check
- `--err` for check errors in outputs
- `--warn` for check warnings in outputs
```bash
nbcheck --ec --err --warn
```
## Nbmetaclean
### Default settings
By default, the following settings are used:
- Clean notebook metadata, except `authors` and `language_info / name`.
- Clean cells execution_count.
- Preserve metadata at cells.
- Preserve cells outputs.
- After cleaning notebook, timestamp for file will be set to previous values.
### Arguments
Check available arguments:
```bash
nbmetaclean -h
usage: nbmetaclean [-h] [-s] [--not_ec] [--not-pt] [--dont_clear_nb_metadata] [--clear_cell_metadata] [--clear_outputs]
[--nb_metadata_preserve_mask NB_METADATA_PRESERVE_MASK [NB_METADATA_PRESERVE_MASK ...]]
[--cell_metadata_preserve_mask CELL_METADATA_PRESERVE_MASK [CELL_METADATA_PRESERVE_MASK ...]] [--dont_merge_masks] [--clean_hidden_nbs] [-D] [-V]
[path ...]
Clean metadata and execution_count from Jupyter notebooks.
positional arguments:
path Path for nb or folder with notebooks.
options:
-h, --help show this help message and exit
-s, --silent Silent mode.
--not_ec Do not clear execution_count.
--not-pt Do not preserve timestamp.
--dont_clear_nb_metadata
Do not clear notebook metadata.
--clear_cell_metadata
Clear cell metadata.
--clear_outputs Clear outputs.
--nb_metadata_preserve_mask NB_METADATA_PRESERVE_MASK [NB_METADATA_PRESERVE_MASK ...]
Preserve mask for notebook metadata.
--cell_metadata_preserve_mask CELL_METADATA_PRESERVE_MASK [CELL_METADATA_PRESERVE_MASK ...]
Preserve mask for cell metadata.
--dont_merge_masks Do not merge masks.
--clean_hidden_nbs Clean hidden notebooks.
-D, --dry_run perform a trial run, don't write results
-V, --verbose Verbose mode. Print extra information.
```
### Execution_count
If you want to leave execution_count add `--not_ec` flag at command line or `args: [--not_ec]` line to `.pre-commit-config.yaml`.
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbmetaclean
args: [ --not_ec ]
```
```bash
nbmetaclean --not_ec
```
### Clear outputs
If you want to clear outputs, add `--clear_outputs` at command line or `[ --clean_outputs ]` line to `.pre-commit-config.yaml`.
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbmetaclean
args: [ --clean_outputs ]
```
```bash
nbmetaclean --clean_outputs
```
## Nbcheck
Check Jupyter Notebooks for correct execution_count, errors and (or) warnings in outputs.
### Execution_count
Check that all code cells executed one after another.
#### Strict mode
By default, execution_count check in `strict` mode.
All cells must be executed, one after another.
pre-commit config example:
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbcheck
args: [ --ec ]
```
command line example:
```bash
nbcheck --ec
```
#### Not strict mode
`--not_strict` flag can be used to check that next cell executed after previous one, but execution number can be more than `+1`.
pre-commit config example:
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbcheck
args: [ --ec, --not_strict ]
```
command line example:
```bash
nbcheck --ec --not_strict
```
#### Allow notebooks with no execution_count
`--no_exec` flag allows notebooks with all cells without execution_count.
If notebook has cells with execution_count and without execution_count, pre-commit will return error.
pre-commit config example:
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
- id: nbcheck
args: [ --ec, --no_exec ]
```
command line example:
```bash
nbcheck --ec --no_exec
```
### Errors and Warnings
`--err` and `--warn` flags can be used to check for errors and warnings in outputs.
pre-commit config example:
```yaml
repos:
- repo: https://github.com/ayasyrev/nbmetaclean
rev: 0.1.1
hooks:
- id: nbcheck
args: [ --err, --warn ]
```
command line example:
```bash
nbcheck --err --warn
```