A notebook-driven development platform that creates high-quality documentation, tests, CI, and packaging from Jupyter notebooks.
nbdev is a notebook-driven development platform that allows developers to create software using Jupyter Notebooks. It automatically generates high-quality documentation, runs tests, sets up continuous integration, and handles packaging from notebooks. The tool solves the problem of fragmented development workflows by integrating documentation, testing, and deployment directly into the notebook environment.
Python developers and data scientists who use Jupyter Notebooks for prototyping and want to turn their notebooks into production-ready software with proper documentation, testing, and packaging.
Developers choose nbdev because it provides a seamless workflow from notebook experimentation to professional software, with automatic documentation generation, robust two-way sync between notebooks and source code, and built-in CI/CD. Its unique selling point is making Jupyter Notebooks a viable environment for serious software development while enforcing best practices.
Create delightful software with Jupyter Notebooks
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates searchable, hyperlinked documentation using Quarto and hosts it on GitHub Pages with LaTeX support, streamlining doc creation as per the README.
Runs tests written in notebook cells in parallel with a single command, making testing efficient and integrated into the development workflow.
Includes Jupyter/Git hooks to clean metadata and render merge conflicts in a readable format, improving version control usability for notebooks.
Automates publishing to PyPI and conda while enforcing Python best practices like proper __all__ exports, simplifying distribution.
Only works on Windows under WSL, not native cmd or Powershell, restricting users on standard Windows setups, as noted in the Install section.
Requires Quarto installation that may need root access, with manual steps for non-root users, adding setup overhead as detailed in the FAQ.
Enforces strict cell separation, such as no mixing imports with computations, which can disrupt natural coding flows and requires adherence to specific rules.