[build-system] requires = ["hatchling>=1.11", "jupyterlab>=4.0.0rc0,<5"] build-backend = "hatchling.build" [project] name = "notebook" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" readme = "README.md" license = { file = "LICENSE" } requires-python = ">=3.8" authors = [ { name = "Jupyter Development Team", email = "jupyter@googlegroups.com" }, ] keywords = [ "Jupyter", "JupyterLab", "Notebook", ] classifiers = [ "Framework :: Jupyter", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Typing :: Typed", ] dependencies = [ "jupyter_server>=2.4.0,<3", "importlib-resources>=5.0;python_version<\"3.9\"", "jupyterlab>=4.0.0rc0,<5", "jupyterlab_server>=2.22.1,<3", "notebook_shim>=0.2,<0.3", "tornado>=6.2.0", ] dynamic = ["version"] [project.scripts] jupyter-notebook = "notebook.app:main" [project.urls] Documentation = "https://jupyter-notebook.readthedocs.io/" Homepage = "https://github.com/jupyter/notebook" Source = "https://github.com/jupyter/notebook" Tracker = "https://github.com/jupyter/notebook/issues" [project.optional-dependencies] test = [ "nbval", "pytest>=7.0", "requests", "pytest-tornasync", "pytest-timeout", "pytest-console-scripts", "ipykernel", "jupyter_server[test]>=2.4.0,<3", "jupyterlab_server[test]>=2.22.1,<3", ] docs = [ "myst_parser", "nbsphinx", "pydata-sphinx-theme", "sphinx>=1.3.6", "sphinxcontrib_github_alt", "sphinxcontrib_spelling" ] dev = [ "pre-commit", "hatch" ] [tool.hatch.version] path = "notebook/_version.py" validate-bump = false [tool.hatch.build.targets.wheel.shared-data] "notebook/labextension" = "share/jupyter/labextensions/@jupyter-notebook/lab-extension" "notebook/schemas/@jupyter-notebook" = "share/jupyter/lab/schemas/@jupyter-notebook" "jupyter-config/jupyter_server_config.d" = "etc/jupyter/jupyter_server_config.d" "notebook.svg" = "share/icons/hicolor/scalable/apps/notebook.svg" "jupyter-notebook.desktop" = "share/applications/jupyter-notebook.desktop" [tool.hatch.build.targets.sdist] artifacts = [ "notebook/labextension", "notebook/static", "notebook/schemas/@jupyter-notebook", "notebook/templates", "notebook.svg", "jupyter-notebook.desktop", ] include = [ "/jupyter-config", "/notebook", "/tests", "/package.json", "/install.json", "/ts*.json", "/*.md" ] [tool.hatch.build.targets.wheel] artifacts = [ "notebook/static", "notebook/templates", ] include = ["/notebook"] [tool.hatch.envs.docs] features = ["docs"] [tool.hatch.envs.docs.scripts] build = "make -C docs html SPHINXOPTS='-W'" serve = "cd docs/build/html && python -m http.server" [tool.hatch.envs.default.scripts] npm_pack = "jlpm lerna exec -- npm pack" js_test = "jlpm run build:test && jlpm run test" [tool.hatch.envs.test] features = ["test"] [tool.hatch.envs.test.scripts] test = "python -m pytest -vv {args}" nowarn = "test -W default {args}" [tool.hatch.envs.cov] features = ["test"] dependencies = ["coverage[toml]", "pytest-cov"] [tool.hatch.envs.cov.scripts] test = "python -m pytest -vv --cov notebook --cov-branch --cov-report term-missing:skip-covered {args}" nowarn = "test -W default {args}" [tool.hatch.envs.typing] features = ["test"] dependencies = ["mypy>=0.990"] [tool.hatch.envs.typing.scripts] test = "mypy --install-types --non-interactive {args:notebook tests}" [tool.hatch.envs.lint] dependencies = [ "black[jupyter]==22.10.0", "mdformat>0.7", "mdformat-gfm>=0.3.5", "ruff==0.0.254" ] detached = true [tool.hatch.envs.lint.scripts] style = [ "ruff {args:.}", "black --check --diff {args:.}", "mdformat --check {args:CHANGELOG.md}" ] fmt = [ "black {args:.}", "ruff --fix {args:.}", "mdformat {args:CHANGELOG.md}" ] [tool.hatch.build.hooks.jupyter-builder] dependencies = ["hatch-jupyter-builder>=0.2"] build-function = "hatch_jupyter_builder.npm_builder" ensured-targets = [ "notebook/labextension/static/style.js", "notebook/static/bundle.js" ] install-pre-commit-hook = true [tool.hatch.build.hooks.jupyter-builder.build-kwargs] build_cmd = "build:prod" editable_build_cmd = "build" source_dir = "packages" build_dir = "notebook/static" npm = "jlpm" [tool.jupyter-releaser.options] version-cmd = "jlpm run release:bump --force --skip-commit" [tool.jupyter-releaser.hooks] before-bump-version = [ "python -m pip install --pre -U jupyterlab", "jlpm", "jlpm run build:utils", "python -m pip install hatch" ] before-build-npm = [ "jlpm clean", "jlpm build:prod" ] before-build-python = [ "jlpm clean" ] [tool.pytest.ini_options] addopts = "-raXs --durations 10 --color=yes --doctest-modules" testpaths = [ "tests/", ] timeout = 300 filterwarnings = [ "error", "ignore:There is no current event loop:DeprecationWarning", "ignore:make_current is deprecated; start the event loop first", "ignore:clear_current is deprecated" ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\bProtocol\\):", "@(abc\\.)?abstractmethod", ] [tool.coverage.run] relative_files = true source = ["notebook"] [tool.mypy] check_untyped_defs = true disallow_incomplete_defs = true no_implicit_optional = true pretty = true show_error_context = true show_error_codes = true strict_equality = true strict_optional = true warn_no_return = true warn_return_any = true warn_unused_configs = true warn_unused_ignores = true warn_redundant_casts = true [[tool.mypy.overrides]] module = [ "ruamel", ] ignore_missing_imports = true [tool.black] line-length = 100 target-version = ["py37"] skip-string-normalization = true [tool.ruff] target-version = "py37" line-length = 100 select = [ "A", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "ISC", "N", "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "SIM", "T", "TID", "UP", "W", "YTT", ] ignore = [ # Q000 Single quotes found but double quotes preferred "Q000", # FBT001 Boolean positional arg in function definition "FBT001", "FBT002", "FBT003", # C408 Unnecessary `dict` call (rewrite as a literal) "C408", "C416", ] [tool.ruff.per-file-ignores] # S101 Use of `assert` detected # F841 Local variable `foo` is assigned to but never used # PLR2004 Magic value used in comparison "tests/*" = ["S101", "F841", "PLR2004"] # undefined name 'c' "ui-tests/test/jupyter_server_config.py" = ["F821"] [tool.interrogate] ignore-init-module=true ignore-private=true ignore-semiprivate=true ignore-property-decorators=true ignore-nested-functions=true ignore-nested-classes=true fail-under=100 exclude = ["tests", "ui-tests", "docs", "node_modules", "setup.py"]