From e1a2ea092536816df822062a22407ec854d03c42 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 14:09:38 -0600 Subject: [PATCH 01/10] ci cleanup --- .github/workflows/build.yml | 86 ++++++++++++++++++++++++++----------- .github/workflows/docs.yml | 38 ---------------- .pre-commit-config.yaml | 9 +--- .readthedocs.yaml | 11 +++-- codecov.yml | 2 +- docs/doc-requirements.txt | 5 --- docs/environment.yml | 20 --------- pyproject.toml | 38 ++++++++++++++++ 8 files changed, 110 insertions(+), 99 deletions(-) delete mode 100644 .github/workflows/docs.yml delete mode 100644 docs/doc-requirements.txt delete mode 100644 docs/environment.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f652d4a2..6f40489e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,46 +40,63 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 with: - python_version: "3.11" + python_version: "3.12" - - name: Install the package + - name: Test the package run: | - python -m pip install ".[dev,test]" - jlpm run build:test + hatch run cov:test - - name: Unit tests + - name: JavaScript tests run: | + pip install jupyterlab + jlpm run build:test jlpm run test - pytest -vv || pytest -vv --lf - name: Integration Tests run: | + pip install . + cd jupyter labextension list 2>&1 | grep -ie "@jupyter-notebook/lab-extension.*enabled.*ok" - jupyter server extension list 2>&1 | grep -ie "notebook.*enabled" - python -m jupyterlab.browser_check - test_prerelease: + test_docs: + name: Test Docs runs-on: ubuntu-latest - timeout-minutes: 10 steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - with: - python_version: "3.10" + - uses: actions/checkout@v3 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - run: hatch run docs:build - - name: Install the Python dependencies - run: | - pip install --no-deps . - pip install --pre --upgrade ".[dev,test]" - python -m pip install ".[dev,test]" - jlpm run build:test + test_minimum_versions: + name: Test Minimum Versions + timeout-minutes: 20 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + with: + python_version: "3.8" + - uses: jupyterlab/maintainer-tools/.github/actions/install-minimums@v1 + with: + only_create_file: 1 + - name: Run the unit tests + run: | + export PIP_CONSTRAINT="./contraints_file.txt" + hatch run test:nowarn || hatch run test:nowarn --lf - - name: Python Unit tests - run: | - pytest -vv || pytest -vv --lf + test_prereleases: + name: Test Prereleases + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v3 + - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + with: + python_version: "3.11" + - name: Run the tests + run: | + PIP_PRE=1 hatch run test:nowarn || hatch run test:nowarn --lf install: needs: [build] @@ -131,7 +148,7 @@ jobs: jupyter notebook --version jupyter notebook --help - link_check: + check_linkts: runs-on: ubuntu-latest timeout-minutes: 10 steps: @@ -149,3 +166,22 @@ jobs: - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - run: pip install -e . - uses: jupyterlab/maintainer-tools/.github/actions/pre-commit@v1 + + + python_tests_check: # This job does nothing and is only used for the branch protection + if: always() + needs: + - test + - install + - pre_commit + - test_docs + - test_minimum_versions + - test_prereleases + - check_links + - test_sdist + runs-on: ubuntu-latest + steps: + - name: Decide whether the needed jobs succeeded or failed + uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 0d4bd5d01..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Docs Tests -on: - push: - branches: ['main'] - pull_request: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - with: - python_version: '3.7' - - name: Install the Python dependencies - run: | - pip install -e .[dev,test] codecov - pip install -r docs/doc-requirements.txt - wget https://github.com/jgm/pandoc/releases/download/1.19.1/pandoc-1.19.1-1-amd64.deb && sudo dpkg -i pandoc-1.19.1-1-amd64.deb - - name: List installed packages - run: | - pip freeze - pip check - - name: Run tests on documentation - run: | - EXIT_STATUS=0 - make -C docs/ html SPHINXOPTS="-W" || EXIT_STATUS=$? - # Ignore warnings to work around - # # https://github.com/computationalmodelling/nbval/issues/180 - pytest --nbval --current-env -W default docs || EXIT_STATUS=$? - exit $EXIT_STATUS diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 03daef05e..f393decd0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -56,15 +56,10 @@ repos: ["flake8-bugbear==22.6.22", "flake8-implicit-str-concat==0.2.0"] stages: [manual] - - repo: https://github.com/sirosen/check-jsonschema + - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.19.1 hooks: - - id: check-jsonschema - name: 'Check GitHub Workflows' - files: ^\.github/workflows/ - types: [yaml] - args: ['--schemafile', 'https://json.schemastore.org/github-workflow'] - stages: [manual] + - id: check-github-workflows - repo: local hooks: diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b9eadb806..1e1be498e 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,4 +1,9 @@ -conda: - file: docs/environment.yml +version: 2 +sphinx: + configuration: docs/source/conf.py python: - version: 3 + version: 3.8 + install: + # install notebook itself + - method: pip + path: ".[docs]" diff --git a/codecov.yml b/codecov.yml index eb9b9dff3..b75c3e2db 100644 --- a/codecov.yml +++ b/codecov.yml @@ -3,7 +3,7 @@ coverage: project: default: target: auto - threshold: 10 + threshold: 1 patch: default: target: 0% diff --git a/docs/doc-requirements.txt b/docs/doc-requirements.txt deleted file mode 100644 index be686e558..000000000 --- a/docs/doc-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -myst_parser -nbsphinx -pydata-sphinx-theme -sphinx>=1.3.6 -sphinxcontrib_github_alt diff --git a/docs/environment.yml b/docs/environment.yml deleted file mode 100644 index 5681ebe12..000000000 --- a/docs/environment.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: notebook_docs -channels: - - conda-forge -dependencies: -- python=3.8 -- pydata-sphinx-theme -- jinja2 -- tornado -- nbformat -- jupyter_client -- ipykernel -- pip -- sphinx -- terminado -- myst-parser -- pip: - - nbsphinx - - Send2Trash - - prometheus_client - - sphinxcontrib_github_alt diff --git a/pyproject.toml b/pyproject.toml index 752e490d5..1bebf8ef2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,6 +60,13 @@ test = [ "ipykernel", "jupyterlab_server[test]>=2.13,<3", ] +docs = [ + "myst_parser", + "nbsphinx", + "pydata-sphinx-theme", + "sphinx>=1.3.6", + "sphinxcontrib_github_alt", +] dev = [ "pre-commit", "hatch" @@ -98,6 +105,23 @@ artifacts = [ ] include = ["/notebook"] +[tool.hatch.envs.docs] +features = ["docs"] +[tool.hatch.envs.docs.scripts] +build = "make -C docs html SPHINXOPTS='-W'" + +[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", "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.build.hooks.jupyter-builder] dependencies = ["hatch-jupyter-builder>=0.2"] @@ -128,6 +152,20 @@ filterwarnings = [ "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.flake8] ignore = "E501, W503, E402" builtins = "c, get_config" From ba3addf7cf9afd404bdb07f304a3045dc948292c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 14:10:44 -0600 Subject: [PATCH 02/10] cleanup --- .github/workflows/build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6f40489e7..f594f6a3b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,12 +39,9 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - with: - python_version: "3.12" - name: Test the package - run: | - hatch run cov:test + run: hatch run cov:test - name: JavaScript tests run: | From 0eb820116a9d33733e715fedd9729b21bb594e96 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 14:17:40 -0600 Subject: [PATCH 03/10] cleanup --- .github/workflows/build.yml | 4 ++-- .readthedocs.yaml | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f594f6a3b..d0c44afdc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -145,7 +145,7 @@ jobs: jupyter notebook --version jupyter notebook --help - check_linkts: + check_links: runs-on: ubuntu-latest timeout-minutes: 10 steps: @@ -165,7 +165,7 @@ jobs: - uses: jupyterlab/maintainer-tools/.github/actions/pre-commit@v1 - python_tests_check: # This job does nothing and is only used for the branch protection + tests_check: # This job does nothing and is only used for the branch protection if: always() needs: - test diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 1e1be498e..ff0e41a44 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,8 +1,12 @@ version: 2 sphinx: configuration: docs/source/conf.py +build: + os: ubuntu-20.04 + tools: + python: "3.9" + nodejs: "16" python: - version: 3.8 install: # install notebook itself - method: pip From aaaac25fc1c9a8f5a3b691c751dbf56f1e6bf968 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 14:19:05 -0600 Subject: [PATCH 04/10] cleanup --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d0c44afdc..fe919a7f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -175,7 +175,6 @@ jobs: - test_minimum_versions - test_prereleases - check_links - - test_sdist runs-on: ubuntu-latest steps: - name: Decide whether the needed jobs succeeded or failed From 7c7d4005352b60625d37bb7f9d528c369ebe3a57 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 15:37:31 -0600 Subject: [PATCH 05/10] fixes --- .github/workflows/build.yml | 5 ++++- pyproject.toml | 1 + tests/conftest.py | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe919a7f8..621279064 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,6 +63,9 @@ jobs: steps: - uses: actions/checkout@v3 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - run: | + # pandoc is not up to date in the ubuntu repos, so we install directly + wget https://github.com/jgm/pandoc/releases/download/2.14.2/pandoc-2.14.2-1-amd64.deb && sudo dpkg -i pandoc-2.14.2-1-amd64.deb - run: hatch run docs:build test_minimum_versions: @@ -73,7 +76,7 @@ jobs: - uses: actions/checkout@v3 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 with: - python_version: "3.8" + python_version: "3.7" - uses: jupyterlab/maintainer-tools/.github/actions/install-minimums@v1 with: only_create_file: 1 diff --git a/pyproject.toml b/pyproject.toml index 1bebf8ef2..34ed313fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ classifiers = [ ] dependencies = [ "jupyter_server>=1.16.0,<2", + "importlib-resources>=1.4;python_version<\"3.9\"", "jupyterlab>=4.0.0a30,<5", "jupyterlab_server>=2.13,<3", "notebook_shim>=0.1,<0.2", diff --git a/tests/conftest.py b/tests/conftest.py index edbdee980..5ade89da1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,7 +4,11 @@ import os import os.path as osp import pathlib import shutil -from importlib.resources import files + +try: + from importlib.resources import files +except ImportError: + from importlib_resources import files import pytest From e539e80e792f14c89da759f3abc5965fd97644cc Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 16:14:36 -0600 Subject: [PATCH 06/10] cleanup --- .github/actions/build-dist/action.yml | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-dist/action.yml b/.github/actions/build-dist/action.yml index a946ed487..470292fe1 100644 --- a/.github/actions/build-dist/action.yml +++ b/.github/actions/build-dist/action.yml @@ -9,12 +9,12 @@ runs: - name: Install dependencies shell: bash run: | - python -m pip install --upgrade jupyter_packaging~=0.10 "jupyterlab>=4.0.0a30,<5" build + python -m pip install hatch - name: Build pypi distributions shell: bash run: | - python -m build + hatch build - name: Build npm distributions shell: bash diff --git a/pyproject.toml b/pyproject.toml index 34ed313fd..25b24b2b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ classifiers = [ ] dependencies = [ "jupyter_server>=1.16.0,<2", - "importlib-resources>=1.4;python_version<\"3.9\"", + "importlib-resources>=5.0;python_version<\"3.9\"", "jupyterlab>=4.0.0a30,<5", "jupyterlab_server>=2.13,<3", "notebook_shim>=0.1,<0.2", From f9ecd9fe2887b9971ee716cc5009d1b9ef6592c8 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 16:21:49 -0600 Subject: [PATCH 07/10] try again --- .github/actions/build-dist/action.yml | 2 +- pyproject.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/build-dist/action.yml b/.github/actions/build-dist/action.yml index 470292fe1..18a6f2e25 100644 --- a/.github/actions/build-dist/action.yml +++ b/.github/actions/build-dist/action.yml @@ -20,7 +20,7 @@ runs: shell: bash run: | mkdir pkgs - jlpm lerna exec -- npm pack + hatch run npm_pack cp packages/*/*.tgz pkgs - name: Build checksum file diff --git a/pyproject.toml b/pyproject.toml index 25b24b2b2..b5679858f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -111,6 +111,9 @@ features = ["docs"] [tool.hatch.envs.docs.scripts] build = "make -C docs html SPHINXOPTS='-W'" +[tool.hatch.envs.default.scripts] +npm_pack = " jlpm lerna exec -- npm pack" + [tool.hatch.envs.test] features = ["test"] [tool.hatch.envs.test.scripts] From ec6874ccb56ea09ac73305ac526bd18131dfd7af Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 19 Nov 2022 16:38:01 -0600 Subject: [PATCH 08/10] more cleanup --- .github/workflows/build.yml | 4 +--- pyproject.toml | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 621279064..a04d3a923 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,9 +45,7 @@ jobs: - name: JavaScript tests run: | - pip install jupyterlab - jlpm run build:test - jlpm run test + hatch run js_test - name: Integration Tests run: | diff --git a/pyproject.toml b/pyproject.toml index b5679858f..0bb277aa3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -112,7 +112,8 @@ features = ["docs"] build = "make -C docs html SPHINXOPTS='-W'" [tool.hatch.envs.default.scripts] -npm_pack = " jlpm lerna exec -- npm pack" +npm_pack = "jlpm lerna exec -- npm pack" +js_test = "jlpm run build:test && jlpm run test" [tool.hatch.envs.test] features = ["test"] From 0386e69efbe783a5287ced99778f014b284d4a9f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 21 Nov 2022 06:37:19 -0600 Subject: [PATCH 09/10] increase pytest version --- .github/workflows/build.yml | 1 - pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a04d3a923..eccbd9a96 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,7 +80,6 @@ jobs: only_create_file: 1 - name: Run the unit tests run: | - export PIP_CONSTRAINT="./contraints_file.txt" hatch run test:nowarn || hatch run test:nowarn --lf test_prereleases: diff --git a/pyproject.toml b/pyproject.toml index a256ef406..8f1b4560e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,7 @@ Tracker = "https://github.com/jupyter/notebook/issues" test = [ "coverage", "nbval", - "pytest>=6.0", + "pytest>=7.0", "pytest-cov", "requests", "pytest-tornasync", From 8ccc516d7b23f66376e978b1782270c48e0c3375 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 21 Nov 2022 06:55:33 -0600 Subject: [PATCH 10/10] increase timeout --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eccbd9a96..920185d38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: install: needs: [build] runs-on: ${{ matrix.os }} - timeout-minutes: 10 + timeout-minutes: 15 strategy: fail-fast: false matrix: