Skip to main content

A set of tools for nb handling

Project description

CI

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.11.tar.gz (15.7 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.11-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nb_helpers-0.1.11.tar.gz
  • Upload date:
  • Size: 15.7 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.11.tar.gz
Algorithm Hash digest
SHA256 4d35aaf1edfade35d338b32dfafbbc667638e930b2231b27857de5c2e7433294
MD5 e95767d5bd505d03ca3cb53093f7f3f1
BLAKE2b-256 816709f256a320297f9406f44ad7408596a91cb6880afca016f43f9c40a2b71a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nb_helpers-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 16.6 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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 0d7d39fd4547a27e32f15e540af15a5e48d1948e0ce832585051938f4f22eaf3
MD5 9a57fecaec8f362770af7416d49c0c4a
BLAKE2b-256 30994349b74c47c042a1ec30cc93b4102f7c542e62860290e81dc97189e8aa58

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