Automatically reload modified Python modules in notebooks and scripts.
Project description
Overview
LiveImport reliably and automatically reloads Python modules in Jupyter notebooks. Unlike IPython's autoreload extension, LiveImport reloads are well-defined, deterministic operations that follow the semantics of a developer's import statements exactly. It maintains consistency between modules by automatically reloading dependent modules as needed, ensuring up-to-date references across a notebook and its modules.
LiveImport is designed for developers who interactively build Jupyter notebooks together with external Python code, and who want predictable reloading with minimal mystery.
Given a cell like
%%liveimport
from common import *
from nets import ConvNet, ResidualNet as ResNet
import hyperparam as hp
LiveImport will execute the import statements, then automatically reload
common, nets, or hyperparam whenever their source files change.
When LiveImport reloads, it will rebind symbols in the notebook as described by
the import statements. If nets imports from hyperparam, then when
hyperparam is modified, LiveImport will automatically reload nets after
hyperparam.
To make the cell above transparent to IDEs like Visual Studio Code, you can hide the cell magic:
#_%%liveimport
from common import *
from nets import ConvNet, ResidualNet as ResNet
import hyperparam as hp
Hidden cell magic is a user experience feature tailored for modern notebook development. Others include protection against reloading in the middle of multi-cell runs and optional reload notification.
If you currently use autoreload, you might consider comparing LiveImport to autoreload.
Documentation
See liveimport.readthedocs.io for a user guide and an API reference.
Installation
You can install LiveImport from PyPI with
$ pip install liveimport
You can also clone the repository and install it directly.
$ git clone https://github.com/escreven/liveimport.git
$ cd liveimport
$ pip install .
LiveImport requires Python 3.10 or greater and IPython 7.23.1 or greater.
Reliability
LiveImport includes automated tests with 100% code coverage, which are run on MacOS, Linux, and Windows with Python 3.10, 3.11, 3.12, 3.13, and 3.14 using both the oldest supported and latest versions of IPython. Notebook integration features are tested using notebook 5.7.0 and notebook latest. See the GitHub workflow for details.
If you have a copy of the source, you can run the tests yourself with
$ python test/main.py
Questions or Issues
If you have any questions or encounter any issues, please submit them on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file liveimport-1.1.0.tar.gz.
File metadata
- Download URL: liveimport-1.1.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f40488a0d8bf6d7c5c536ec9e4f35607936783f2287e13041721afd840592d9
|
|
| MD5 |
14bbe74b45804c68e8c05f0d4b8e1a9b
|
|
| BLAKE2b-256 |
4f9ae0331fa3f63122143e4e006ba1aae5b0ccbb805aad49b49f5829ae748838
|
File details
Details for the file liveimport-1.1.0-py3-none-any.whl.
File metadata
- Download URL: liveimport-1.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fd7884d99a4e8e70e4f64af9867530f09e5439565aa00218a98348362185f65
|
|
| MD5 |
daa2615bdd072816679b0f8b189d3d18
|
|
| BLAKE2b-256 |
d82975f05ea976e3eb5cc434bcbfc5735b0b369b80008ae3ed80b43a850d7dfe
|