{"id":21513846,"url":"https://github.com/answerdotai/nbdev","last_synced_at":"2026-04-10T03:20:52.639Z","repository":{"id":37692366,"uuid":"222507066","full_name":"AnswerDotAI/nbdev","owner":"AnswerDotAI","description":"Create delightful software with Jupyter Notebooks","archived":false,"fork":false,"pushed_at":"2025-04-13T22:55:24.000Z","size":16707,"stargazers_count":5080,"open_issues_count":176,"forks_count":510,"subscribers_count":49,"default_branch":"main","last_synced_at":"2025-05-06T02:55:58.841Z","etag":null,"topics":["conda","developer-tools","documentation-generator","documentation-tool","fastai","jupyter","jupyter-notebooks","literate-programming","nbdev","pypi","python","python-modules"],"latest_commit_sha":null,"homepage":"https://nbdev.fast.ai/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnswerDotAI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-11-18T17:37:35.000Z","updated_at":"2025-05-04T18:08:54.000Z","dependencies_parsed_at":"2023-11-16T01:09:48.350Z","dependency_job_id":"d4f24463-c397-404b-a7c1-67fcdd50b217","html_url":"https://github.com/AnswerDotAI/nbdev","commit_stats":{"total_commits":1459,"total_committers":59,"mean_commits":"24.728813559322035","dds":0.6250856751199452,"last_synced_commit":"1e47cbd5414d4f198f42c072b4649b43f4d6884e"},"previous_names":["answerdotai/nbdev","fastai/nbdev"],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fnbdev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fnbdev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fnbdev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fnbdev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnswerDotAI","download_url":"https://codeload.github.com/AnswerDotAI/nbdev/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252612465,"owners_count":21776254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conda","developer-tools","documentation-generator","documentation-tool","fastai","jupyter","jupyter-notebooks","literate-programming","nbdev","pypi","python","python-modules"],"created_at":"2024-11-23T23:18:35.289Z","updated_at":"2026-02-14T05:19:02.651Z","avatar_url":"https://github.com/AnswerDotAI.png","language":"Jupyter Notebook","readme":"# Getting Started\n\n\n\u003c!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! --\u003e\n\n![CI](https://github.com/fastai/nbdev/actions/workflows/test.yaml/badge.svg)\n\n## 🛑**Jan 2026 Major Version Update – Breaking Change**🛑\n\n**nbdev3 is here!** As many of you have been requesting, configuration\nhas moved from `settings.ini` to `pyproject.toml`, following modern\nPython packaging standards ([PEP\n621](https://peps.python.org/pep-0621/)). Your project metadata now\nlives in the standard `[project]` section, while nbdev-specific settings\ngo in `[tool.nbdev]`.\n\n**Migrating from nbdev2:** Run `nbdev-migrate-config` in your project\nroot to automatically convert your `settings.ini` to `pyproject.toml`\nand update your GitHub Actions workflows to use nbdev3-compatible\nversions. Your existing notebooks and code don’t need any changes.\n\n`nbdev` is a notebook-driven development platform. Simply write\nnotebooks with lightweight markup and get high-quality documentation,\ntests, continuous integration, and packaging for free!\n\n`nbdev` makes debugging and refactoring your code much easier than in\ntraditional programming environments since you always have live objects\nat your fingertips. `nbdev` also promotes software engineering best\npractices because tests and documentation are first class.\n\n- **Documentation** is automatically generated using\n  [Quarto](https://quarto.org/) and hosted on [GitHub\n  Pages](https://pages.github.com/). Docs support LaTeX, are searchable,\n  and are automatically hyperlinked (including out-of-the-box support\n  for many packages via\n  [`nbdev-index`](https://github.com/fastai/nbdev-index))\n- **Publish packages to PyPI and conda** as well as tools to simplify\n  package releases. Python best practices are automatically followed,\n  for example, only exported objects are included in `__all__`\n- **Two-way sync between notebooks and plaintext source code** allowing\n  you to use your IDE for code navigation or quick edits. Sync is\n  robust: each exported cell is tagged with its unique notebook cell ID,\n  so `nbdev-update` always updates the correct cell\n- **Tests** written as ordinary notebook cells are run in parallel with\n  a single command\n- **Continuous integration** out-of-the-box with [GitHub\n  Actions](https://github.com/features/actions) that run your tests and\n  rebuild your docs\n- **Git-friendly notebooks** with [Jupyter/Git\n  hooks](https://nbdev.fast.ai/tutorials/git_friendly_jupyter.html) that\n  clean unwanted metadata and render merge conflicts in a human-readable\n  format\n- … and much more!\n\n## Install\n\nnbdev works on macOS, Linux, and most Unix-style operating systems. It\nworks on Windows under WSL, but not under cmd or Powershell.\n\nYou can install nbdev with pip:\n\n``` sh\npip install nbdev\n```\n\nNote that `nbdev` must be installed into the same Python environment\nthat you use for both Jupyter and your project.\n\n## How to use nbdev\n\nThe best way to learn how to use nbdev is to complete either the\n[written walkthrough](https://nbdev.fast.ai/tutorials/tutorial.html) or\nvideo walkthrough:\n\n\u003ca href=\"http://www.youtube.com/watch?v=l7zS8Ld4_iA\" target=\"_blank\"\ntitle=\"nbdev walkthrough\"\u003e\u003cimg\nsrc=\"https://github.com/fastai/logos/raw/main/nbdev_walkthrough.png\"\nstyle=\"border-radius: 10px\" width=\"560\" height=\"315\" /\u003e\u003c/a\u003e\n\nAlternatively, there’s a [shortened version of the video\nwalkthrough](https://youtu.be/67FdzLSt4aA) with coding sections sped up\nusing the `unsilence` Python library – it’s 27 minutes faster, but a bit\nharder to follow.\n\nYou can also run `nbdev-help` from the terminal to see the full list of\navailable commands:\n\n``` python\n!nbdev-help\n```\n\n    nb-export                 Export a single nbdev notebook to a python script.\n    nbdev-bump-version        Increment version in __init__.py by one\n    nbdev-changelog           Create a CHANGELOG.md file from closed and labeled GitHub issues\n    nbdev-clean               Clean all notebooks in `fname` to avoid merge conflicts\n    nbdev-conda               Create a `meta.yaml` file ready to be built into a package, and optionally build and upload it\n    nbdev-contributing        Create CONTRIBUTING.md from contributing_nb (defaults to 'contributing.ipynb' if present). Skips if the file doesn't exist.\n    nbdev-create-config       Create a pyproject.toml config file.\n    nbdev-docs                Create Quarto docs and README.md\n    nbdev-export              Export notebooks in `path` to Python modules\n    nbdev-filter              A notebook filter for Quarto\n    nbdev-fix                 Create working notebook from conflicted notebook `nbname`\n    nbdev-help                Show help for all console scripts\n    nbdev-install             Install Quarto and the current library\n    nbdev-install-hooks       Install Jupyter and git hooks to automatically clean, trust, and fix merge conflicts in notebooks\n    nbdev-install-quarto      Install latest Quarto on macOS or Linux, prints instructions for Windows\n    nbdev-merge               Git merge driver for notebooks\n    nbdev-migrate             Convert all markdown and notebook files in `path` from v1 to v2\n    nbdev-migrate-config      Migrate settings.ini to pyproject.toml\n    nbdev-new                 Create an nbdev project.\n    nbdev-prepare             Export, test, and clean notebooks, and render README if needed\n    nbdev-preview             Preview docs locally\n    nbdev-proc-nbs            Process notebooks in `path` for docs rendering\n    nbdev-pypi                Create and upload Python package to PyPI\n    nbdev-readme              Create README.md from readme_nb (index.ipynb by default)\n    nbdev-release-both        Release both conda and PyPI packages\n    nbdev-release-gh          Calls `nbdev_changelog`, lets you edit the result, then pushes to git and calls `nbdev_release_git`\n    nbdev-release-git         Tag and create a release in GitHub for the current version\n    nbdev-requirements        Writes a `requirements.txt` file to `directory` based on pyproject.toml.\n    nbdev-sidebar             Create sidebar.yml\n    nbdev-test                Test in parallel notebooks matching `path`, passing along `flags`\n    nbdev-trust               Trust notebooks matching `fname`.\n    nbdev-update              Propagate change in modules matching `fname` to notebooks that created them\n    nbdev-update-license      Allows you to update the license of your project.\n    watch-export              Use `nb_export` on ipynb files in `nbs` directory on changes using nbdev config if available\n\n## FAQ\n\n### Q: What is the warning “Found a cell containing mix of imports and computations. Please use separate cells”?\n\nA: You should not have cells that are not exported, *and* contain a mix\nof `import` statements along with other code. For instance, don’t do\nthis in a single cell:\n\n``` python\nimport some_module\nsome_module.something()\n```\n\nInstead, split this into two cells, one which does `import some_module`,\nand the other which does `some_module.something()`.\n\nThe reason for this is that when we create your documentation website,\nwe ensure that all of the signatures for functions you document are up\nto date, by running the imports, exported cells, and\n[`show_doc`](https://nbdev.fast.ai/api/showdoc.html#show_doc) functions\nin your notebooks. When you mix imports with other code, that other code\nwill be run too, which can cause errors (or at least slowdowns) when\ncreating your website.\n\n### Q: Why is nbdev asking for root access? How do I install Quarto without root access?\n\nA: When you setup your first project, nbdev will attempt to\nautomatically download and install [Quarto](https://quarto.org/) for\nyou. This is the program that we use to create your documentation\nwebsite.\n\nQuarto’s standard installation process requires root access, and nbdev\nwill therefore ask for your root password during installation. For most\npeople, this will work fine and everything will be handled automatically\n– if so, you can skip over the rest of this section, which talks about\ninstalling without root access.\n\nIf you need to install Quarto without root access on Linux, first `cd`\nto wherever you want to store it, then [download\nQuarto](https://quarto.org/docs/get-started/), and type:\n\n``` bash\ndpkg -x quarto*.deb .\nmv opt/quarto ./\nrmdir opt\nmkdir -p ~/.local/bin\nln -s \"$(pwd)\"/quarto/bin/quarto ~/.local/bin\n```\n\nTo use this non-root version of Quarto, you’ll need `~/.local/bin` in\nyour [`PATH` environment\nvariable](https://linuxize.com/post/how-to-add-directory-to-path-in-linux/).\n(Alternatively, change the `ln -s` step to place the symlink somewhere\nelse in your path.)\n\n### Q: Someone told me not to use notebooks for “serious” software development!\n\nA: [Watch this video](https://youtu.be/9Q6sLbz37gk). Don’t worry, we\nstill get this too, despite having used `nbdev` for a wide range of\n“very serious” software projects over the last three years, including\n[deep learning libraries](https://github.com/fastai/fastai), [API\nclients](https://github.com/fastai/ghapi), [Python language\nextensions](https://github.com/fastai/fastcore), [terminal user\ninterfaces](https://github.com/nat/ghtop), and more!\n\n## Contributing\n\nIf you want to contribute to `nbdev`, be sure to review the\n[contributions\nguidelines](https://github.com/fastai/nbdev/blob/master/CONTRIBUTING.md).\nThis project adheres to fastai’s [code of\nconduct](https://github.com/fastai/nbdev/blob/master/CODE_OF_CONDUCT.md).\nBy participating, you are expected to uphold this code. In general, we\nstrive to abide by generally accepted best practices in open-source\nsoftware development.\n\nMake sure you have `nbdev`’s git hooks installed by running\n`nbdev-install-hooks` in the cloned repository.\n\n## Copyright\n\nCopyright © 2019 onward fast.ai, Inc. Licensed under the Apache License,\nVersion 2.0 (the “License”); you may not use this project’s files except\nin compliance with the License. A copy of the License is provided in the\nLICENSE file in this repository.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanswerdotai%2Fnbdev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanswerdotai%2Fnbdev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanswerdotai%2Fnbdev/lists"}