Skip to content

Commit 8cf57ea

Browse files
brichetAlirezaT99
authored andcommitted
Compatibility with Notebook7 and jupyterLab4 (jupyter#1684)
* Update dependencies to jupyterlab>=4, fix menu entries and fix mathjax error * Includes assignment-list, course-list and formgrader extensions as main panel tab * Remove required dependency to LabShell * Make it work with Notebook7 and JupyterLab4 * update dependencies * Refactore create_assignment_extension to depend on CellModel instead of Cell widget, and to simplify the listeners * Update the tests according to the updates of JupyterLab * Reintegrate the cellPrompt in create assignment cell widget * Activate by default the new created tab in Notebook (assignment list, course list and formgrader) * add test for extensions in notebook * Fix docs tests and insert nbextensions test in UI-tests * Update dependencies to jupyterlab-4.0.0a32 and notebook-7.0.0a10 * Downgrade dependency to Notebook as it breaks installation * bump to Notebook-7.0.0a10 * update dependencies * Refactor the extensions for a better managment of the menu and palettecommand in Notebook * Update to Jlab 4.0.0a34 and Notebook 7.0.0a13 * Open the existing Formgrader tab if already loaded from courses list tab * fix UI tests * Removal of python 3.7 support and integration of python 3.11 in tests * Update actions and node version in tests * Update to jupyterlab 4.0.0a37 and notebook 7.0.0a17 * Fix before-build-npm * Includes jupyter#1756 * Remove nbextensions and related code * Update dependencies to lab 4 released and notebook 7b.4 * Add the playwright report as artifact
1 parent 54ec182 commit 8cf57ea

File tree

92 files changed

+12638
-19066
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+12638
-19066
lines changed

.github/workflows/check-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
group: [check_release, link_check]
1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v2
17+
uses: actions/checkout@v3
1818
- name: Base Setup
1919
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
2020
- name: Check Release

.github/workflows/test-docs-python-nbextensions.yml renamed to .github/workflows/test-docs-python.yml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# This is a GitHub workflow defining a set of jobs with a set of steps.
22
# ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
33
#
4-
name: Test python-nbextensions-doc
4+
name: Test python-doc
55

66
on:
77
pull_request:
@@ -29,7 +29,7 @@ jobs:
2929
fail-fast: false
3030
matrix:
3131
os: [windows-latest, ubuntu-22.04]
32-
group: ["docs", "nbextensions", "python"]
32+
group: ["docs", "python"]
3333
python: ["3.8", "3.9", "3.10", "3.11"]
3434
exclude:
3535
- os: windows-latest
@@ -40,8 +40,6 @@ jobs:
4040
group: docs
4141
- python: "3.10"
4242
group: docs
43-
- python: "3.8"
44-
group: nbextensions
4543
steps:
4644
# This is how you set an environment variable in a GitHub workflow that
4745
# will be available in following steps as if you would used `export
@@ -52,19 +50,15 @@ jobs:
5250
echo "GROUP=docs" >> $GITHUB_ENV
5351
echo "TIMEOUT_MINUTES=15" >> $GITHUB_ENV
5452
fi
55-
if [ "${{ matrix.group }}" == "nbextensions" ]; then
56-
echo "GROUP=nbextensions" >> $GITHUB_ENV
57-
echo "TIMEOUT_MINUTES=25" >> $GITHUB_ENV
58-
fi
5953
if [ "${{ matrix.group }}" == "python" ]; then
6054
echo "GROUP=python" >> $GITHUB_ENV
6155
echo "TIMEOUT_MINUTES=20" >> $GITHUB_ENV
6256
fi
63-
- uses: actions/checkout@v2
57+
- uses: actions/checkout@v3
6458
- name: Install node
65-
uses: actions/setup-node@v1
59+
uses: actions/setup-node@v3
6660
with:
67-
node-version: '17.x'
61+
node-version: '18.x'
6862
# NOTE: actions/setup-python@v2 can make use of a cache within the GitHub
6963
# Action virtual environment and setup extremely fast. 3.9 isn't
7064
# available in this cache as of November 2020.

.github/workflows/test-labextensions.yml renamed to .github/workflows/test-extensions.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# This is a GitHub workflow defining a set of jobs with a set of steps.
22
# ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
33
#
4-
name: Test labextensions
4+
name: Test extensions
55

66
on:
77
pull_request:
@@ -15,7 +15,7 @@ defaults:
1515
shell: bash
1616

1717
jobs:
18-
test_labextensions:
18+
ui-test:
1919
runs-on: ${{ matrix.os }}
2020
timeout-minutes: 40
2121

@@ -30,18 +30,19 @@ jobs:
3030
matrix:
3131
os: [windows-latest, ubuntu-22.04]
3232
python: ["3.10", "3.11"]
33+
group: ["labextensions", "nbextensions"]
3334
steps:
3435
# This is how you set an environment variable in a GitHub workflow that
3536
# will be available in following steps as if you would used `export
3637
# MY_ENV=my-value`.
3738
- name: Configure environment variables from job flags
3839
run: |
39-
echo "GROUP=labextensions" >> $GITHUB_ENV
40-
- uses: actions/checkout@v2
40+
echo "GROUP=${{ matrix.group }}" >> $GITHUB_ENV
41+
- uses: actions/checkout@v3
4142
- name: Install node
42-
uses: actions/setup-node@v1
43+
uses: actions/setup-node@v3
4344
with:
44-
node-version: '17.x'
45+
node-version: '18.x'
4546
# NOTE: actions/setup-python@v2 can make use of a cache within the GitHub
4647
# Action virtual environment and setup extremely fast. 3.9 isn't
4748
# available in this cache as of November 2020.
@@ -52,18 +53,18 @@ jobs:
5253
- name: Install Python dependencies
5354
run: |
5455
python -m pip install --upgrade pip wheel setuptools
55-
python tasks.py install --group=labextensions
56+
python tasks.py install --group=${{ matrix.group }}
5657
pip freeze
5758
- name: Install Playwright
5859
run: |
5960
npx playwright install
6061
- name: Run playwright tests
6162
run: |
62-
python tasks.py tests --group=labextensions
63+
python tasks.py tests --group=${{ matrix.group }}
6364
- name: Upload Playwright Test report
6465
if: always()
6566
uses: actions/upload-artifact@v2
6667
with:
67-
name: nbgrader-playwright-tests-os_${{ matrix.os }}-python_${{ matrix.python }}
68+
name: nbgrader-uitests-${{ matrix.group }}-${{ matrix.os }}-python${{ matrix.python }}
6869
path: |
69-
playwright-tests
70+
playwright-report

.gitignore

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ var/
2525
# built labextension
2626
tsconfig.tsbuildinfo
2727
nbgrader/labextension/
28+
# Yarn cache
29+
.yarn/
2830

2931
# PyInstaller
3032
# Usually these files are written by a python script from a template
@@ -62,9 +64,6 @@ target/
6264

6365
# Coverage files
6466
.coverage.*
65-
.selenium.screenshot.png
66-
nbgrader/tests/formgrader/selenium.screenshot.png
67-
nbgrader/tests/nbextensions/selenium.screenshot.png
6867

6968
# Autogenerated docs
7069
nbgrader/docs/build

.yarnrc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

demos/restart_demo.sh

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,16 @@ install_nbgrader () {
6969

7070
# Install global extensions, and disable them globally. We will re-enable
7171
# specific ones for different user accounts in each demo.
72-
jupyter nbextension install --symlink --sys-prefix --py nbgrader --overwrite
73-
jupyter nbextension disable --sys-prefix --py nbgrader
7472
jupyter labextension develop --overwrite .
75-
jupyter labextension disable --level=sys_prefix nbgrader/assignment-list
76-
jupyter labextension disable --level=sys_prefix nbgrader/formgrader
77-
jupyter labextension disable --level=sys_prefix nbgrader/course-list
78-
jupyter labextension disable --level=sys_prefix nbgrader/create-assignment
79-
jupyter serverextension disable --sys-prefix --py nbgrader
73+
jupyter labextension disable --level=sys_prefix nbgrader:assignment-list
74+
jupyter labextension disable --level=sys_prefix nbgrader:formgrader
75+
jupyter labextension disable --level=sys_prefix nbgrader:course-list
76+
jupyter labextension disable --level=sys_prefix nbgrader:create-assignment
77+
jupyter server extension disable --sys-prefix --py nbgrader
8078

8179
# Everybody gets the validate extension, however.
82-
jupyter nbextension enable --sys-prefix validate_assignment/main --section=notebook
8380
jupyter labextension enable --level=sys_prefix nbgrader/validate_assignment
84-
jupyter serverextension enable --sys-prefix nbgrader.server_extensions.validate_assignment
81+
jupyter server extension enable --sys-prefix nbgrader.server_extensions.validate_assignment
8582

8683
# Reset exchange.
8784
rm -rf "${exchange_root}"

demos/utils.sh

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,42 +69,38 @@ enable_create_assignment () {
6969
HOME="/home/${USER}"
7070
local runas="sudo -u ${USER}"
7171

72-
${runas} jupyter nbextension enable --user create_assignment/main
73-
${runas} jupyter labextension disable --level=user nbgrader/create-assignment
74-
${runas} jupyter labextension enable --level=user nbgrader/create-assignment
72+
${runas} jupyter labextension disable --level=user nbgrader:create-assignment
73+
${runas} jupyter labextension enable --level=user nbgrader:create-assignment
7574
}
7675

7776
enable_formgrader () {
7877
USER="${1}"
7978
HOME="/home/${USER}"
8079
local runas="sudo -u ${USER}"
8180

82-
${runas} jupyter nbextension enable --user formgrader/main --section=tree
83-
${runas} jupyter labextension disable --level=user nbgrader/formgrader
84-
${runas} jupyter labextension enable --level=user nbgrader/formgrader
85-
${runas} jupyter serverextension enable --user nbgrader.server_extensions.formgrader
81+
${runas} jupyter labextension disable --level=user nbgrader:formgrader
82+
${runas} jupyter labextension enable --level=user nbgrader:formgrader
83+
${runas} jupyter server extension enable --user nbgrader.server_extensions.formgrader
8684
}
8785

8886
enable_assignment_list () {
8987
USER="${1}"
9088
HOME="/home/${USER}"
9189
local runas="sudo -u ${USER}"
9290

93-
${runas} jupyter nbextension enable --user assignment_list/main --section=tree
94-
${runas} jupyter labextension disable --level=user nbgrader/assignment-list
95-
${runas} jupyter labextension enable --level=user nbgrader/assignment-list
96-
${runas} jupyter serverextension enable --user nbgrader.server_extensions.assignment_list
91+
${runas} jupyter labextension disable --level=user nbgrader:assignment-list
92+
${runas} jupyter labextension enable --level=user nbgrader:assignment-list
93+
${runas} jupyter server extension enable --user nbgrader.server_extensions.assignment_list
9794
}
9895

9996
enable_course_list () {
10097
USER="${1}"
10198
HOME="/home/${USER}"
10299
local runas="sudo -u ${USER}"
103100

104-
${runas} jupyter nbextension enable --user course_list/main --section=tree
105-
${runas} jupyter labextension disable --level=user nbgrader/course-list
106-
${runas} jupyter labextension enable --level=user nbgrader/course-list
107-
${runas} jupyter serverextension enable --user nbgrader.server_extensions.course_list
101+
${runas} jupyter labextension disable --level=user nbgrader:course-list
102+
${runas} jupyter labextension enable --level=user nbgrader:course-list
103+
${runas} jupyter server extension enable --user nbgrader.server_extensions.course_list
108104
}
109105

110106
create_course () {

nbgrader/__init__.py

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -33,65 +33,6 @@ def _jupyter_server_extension_points():
3333
"module": "nbgrader"
3434
}]
3535

36-
37-
# Classic notebook extensions
38-
def _jupyter_nbextension_paths():
39-
paths = [
40-
dict(
41-
section="notebook",
42-
src=os.path.join('nbextensions', 'create_assignment'),
43-
dest="create_assignment",
44-
require="create_assignment/main"
45-
),
46-
dict(
47-
section="tree",
48-
src=os.path.join('nbextensions', 'formgrader'),
49-
dest="formgrader",
50-
require="formgrader/main"
51-
),
52-
dict(
53-
section="notebook",
54-
src=os.path.join('nbextensions', 'validate_assignment'),
55-
dest="validate_assignment",
56-
require="validate_assignment/main"
57-
),
58-
]
59-
60-
if sys.platform != 'win32':
61-
paths.append(
62-
dict(
63-
section="tree",
64-
src=os.path.join('nbextensions', 'assignment_list'),
65-
dest="assignment_list",
66-
require="assignment_list/main"
67-
)
68-
)
69-
paths.append(
70-
dict(
71-
section="tree",
72-
src=os.path.join('nbextensions', 'course_list'),
73-
dest="course_list",
74-
require="course_list/main"
75-
)
76-
)
77-
78-
return paths
79-
80-
81-
# Classic notebook server extensions
82-
def _jupyter_server_extension_paths():
83-
paths = [
84-
dict(module="nbgrader.server_extensions.formgrader"),
85-
dict(module="nbgrader.server_extensions.validate_assignment")
86-
]
87-
88-
if sys.platform != 'win32':
89-
paths.append(dict(module="nbgrader.server_extensions.assignment_list"))
90-
paths.append(dict(module="nbgrader.server_extensions.course_list"))
91-
92-
return paths
93-
94-
9536
def _load_jupyter_server_extension(app):
9637
load_assignments(app)
9738
load_courses(app)

nbgrader/docs/source/contributor_guide/releasing.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ The version number should have been changed in the following files :
7979
- ``pyproject.toml``
8080
- ``package.json``
8181
- ``nbgrader/_version.py``
82-
- ``nbgrader/nbextensions/assignment_list/main.js``
83-
- ``nbgrader/nbextensions/course_list/main.js``
84-
- ``nbgrader/nbextensions/validate_assignment/main.js``
82+
- ``src/assignment_list/index.ts``
83+
- ``src/course_list/index.ts``
84+
- ``src/validate_assignment/index.ts``
8585

8686
Rebuild the documentation
8787
-------------------------
@@ -173,6 +173,6 @@ As a reminder, the files concerned are :
173173
- ``pyproject.toml``
174174
- ``package.json``
175175
- ``nbgrader/_version.py``
176-
- ``nbgrader/nbextensions/assignment_list/main.js``
177-
- ``nbgrader/nbextensions/course_list/main.js``
178-
- ``nbgrader/nbextensions/validate_assignment/main.js``
176+
- ``src/assignment_list/index.ts``
177+
- ``src/course_list/index.ts``
178+
- ``src/validate_assignment/index.ts``

0 commit comments

Comments
 (0)