Skip to main content

A set of tools for nb handling

Project description

CI codecov

nb_helpers

A simple tool to clean, test and fix notebooks for your repo

Install

You can install from pypi:

pip install nb_helpers

or get latest:

pip install -e .

Usage

This little library gives you command line tools to clean, test and check your jupyter notebooks.

  • Clean: When you call clean_nbs it will strip notebooks from the metadata, this helps prevent git conflicts. You can also pass the flag --clear_outs and also remove cell outputs.
$ nb_helpers.clean_nbs --help                                                                                                                                   tcapelle at MBP14.local (-)(main)
usage: nb_helpers.clean_nbs [-h] [--path PATH] [--clear_outs] [--verbose]

Clean notebooks on `path` from useless metadata

options:
  -h, --help    show this help message and exit
  --path PATH   The path to notebooks (default: .)
  --clear_outs  Remove cell outputs (default: False)
  --verbose     Rnun on verbose mdoe (default: False)

You can run this comman on this repo:

$ nb_helpers.clean_nbs
> 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓                                                                      Notebook Path                                    Status ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│ tests/data/dummy_folder/fail_nb.ipynb            Ok✔    │
│ tests/data/dummy_folder/test_nb2.ipynb           Ok✔    │
│ tests/data/dummy_folder/test_nb_all_slow.ipynb   Ok✔    │
│ tests/data/dummy_folder/test_nb_some_slow.ipynb  Ok✔    │
│ tests/data/features_nb.ipynb                     Ok✔    │
│ tests/data/test_nb.ipynb                         Ok✔    │
└─────────────────────────────────────────────────┴────────┘
  • Run: One can run the notebooks in path and get info about the execution.
$ nb_helpers.run_nbs --help                                                                                                                                     tcapelle at MBP14.local (-)(main)
usage: nb_helpers.run_nbs [-h] [--path PATH] [--verbose] [--flags FLAGS] [--timeout TIMEOUT] [--lib_name LIB_NAME] [--no_run] [--post_issue]

options:
  -h, --help           show this help message and exit
  --path PATH          A path to nb files (default: .)
  --verbose            Print errors along the way (default: False)
  --flags FLAGS        Space separated list of flags
  --timeout TIMEOUT    Max runtime for each notebook, in seconds (default: 600)
  --lib_name LIB_NAME  Python lib names to filter, eg: tensorflow
  --no_run             Do not run any notebook (default: False)
  --post_issue         Post the failure in github (default: False)

You get the following output inside this repo:

$ nb_helpers.run_nbs
CONSOLE.is_terminal(): True
Writing output to run.csv
Notebook Path Status Run Time colab
dev_nbs/search.ipynb Fail 1 s open
tests/data/dummy_folder/fail_nb.ipynb Fail 1 s open
tests/data/dummy_folder/test_nb2.ipynb Ok 0 s open
tests/data/dummy_folder/test_nb_all_slow.ipynb Skipped 0 s open
tests/data/dummy_folder/test_nb_some_slow.ipynb Ok 0 s open
tests/data/features_nb.ipynb Ok 0 s open
tests/data/test_nb.ipynb Ok 0 s open
  • Summary: You can get a summary of the notebooks in your project with the nb_helpers.summary_nbs function.
$ nb_helpers.summary_nbs
CONSOLE.is_terminal(): True
Writing output to /Users/tcapelle/wandb/nb_helpers/logs/summary.csv
Reading 6 notebooks
┌───┬─────────────────────────────────────────────────┬────────────┬────────────────┬────────────────────────────────────────────────┬────────────┬───────┐
│ # │ nb name                                         │ tracker    │ wandb features │ python libs                                    │ colab_cell │ colab │
├───┼─────────────────────────────────────────────────┼────────────┼────────────────┼────────────────────────────────────────────────┼────────────┼───────┤
│ 1  tests/data/dummy_folder/fail_nb.ipynb                                                                                                    open  │
│ 2  tests/data/dummy_folder/test_nb2.ipynb                                                                                                   open  │
│ 3  tests/data/dummy_folder/test_nb_all_slow.ipynb                               time                                                        open  │
│ 4  tests/data/dummy_folder/test_nb_some_slow.ipynb                              time                                                        open  │
│ 5  tests/data/features_nb.ipynb                                                 typing, itertools                                           open  │
│ 6  tests/data/test_nb.ipynb                         0: tracker                  os, sys, logging, pathlib, fastcore, itertools  1           open  │
└───┴─────────────────────────────────────────────────┴────────────┴────────────────┴────────────────────────────────────────────────┴────────────┴───────┘

Python Lib

All this functions can also be used inside python:

from pathlib import Path
from nb_helpers.run import run_nbs

examples_path = Path("examples/colabs")

errors = run_nbs(path=examples_path, verbose=True, timeout=600)

Also the library has many little functions to make your life easier inside the repo you are orchestrating:

from pathlib import Path
from nb_helpers.utils import *
from nb_helpers.colab import *

examples_path = Path("examples/colabs")

# get all nbs in the folder recursevely, filters hidden, non nb stuff
nb_files = find_nbs(example_path)

one_nb_path = nb_files[0]
notebook = read_nb(one_nb_path)

# get all libs imported
libs = detect_imported_libs(notebook)

# get remote github repo
github_repo = git_origin_repo(one_nb_path)

# detect if master is called main or master
master_name = git_main_name(one_nb_path)

# get colab link
colab_url = get_colab_url(one_nb_path, branch=master_name) 

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

nb_helpers-0.1.14.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

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

nb_helpers-0.1.14-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file nb_helpers-0.1.14.tar.gz.

File metadata

  • Download URL: nb_helpers-0.1.14.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for nb_helpers-0.1.14.tar.gz
Algorithm Hash digest
SHA256 6fdf160bf634b2ab3ed70c66d4d0aad57219d283ae4a5f45dd2b37a675b2ddcd
MD5 8802f76ff09b9157aedaf604cced3c35
BLAKE2b-256 cd2ae05b4d6f9b1acf1665da59f984213091a0427fb18b79a6b151ddf379164d

See more details on using hashes here.

File details

Details for the file nb_helpers-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: nb_helpers-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for nb_helpers-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 6a219a664cc1f4438a9930ff6f32cce57925d866d781aad9280a57e35f2a91bd
MD5 9d812f8dee169c729eeaa3bb0cedb9d3
BLAKE2b-256 769fd4de643174f7e98bb143b846541db6da6d30e70e2e79047e7bf368f0de92

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