Skip to content

Commit

Permalink
Merge pull request #16 from the-virtual-brain/EBR-90
Browse files Browse the repository at this point in the history
EBR-90: migrate extension to Jupyter4 and python 3.11
  • Loading branch information
liadomide authored Aug 27, 2024
2 parents e60820e + 423067f commit 245b082
Show file tree
Hide file tree
Showing 41 changed files with 11,567 additions and 10,212 deletions.
8 changes: 0 additions & 8 deletions .eslintignore

This file was deleted.

39 changes: 0 additions & 39 deletions .eslintrc.js

This file was deleted.

107 changes: 88 additions & 19 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,40 @@ name: Build
on:
push:
branches:
- '*'
- 'main'
pull_request:
types: [opened, synchronize, reopened]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
python-version: [ "3.8", "3.9", "3.10" ]
python-version: [ "3.8", "3.11", "3.12" ]
node-version: ["20.x"]

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

- name: Install dependencies
run: python -m pip install -U jupyterlab~=3.1 ebrains-drive pytest pytest-mock pytest-jupyter pytest_tornasync pytest-cov
run: python -m pip install -U "jupyterlab>=4.0.0,<5" ebrains-drive pytest pytest-mock "pytest-jupyter[server]>=0.6.0" pytest_tornasync pytest-cov

- name: Lint the extension
run: |
set -eux
jlpm
jlpm run lint:check
- name: Test the extension
run: |
set -eux
Expand All @@ -40,7 +45,7 @@ jobs:
- name: Build the extension
run: |
set -eux
python -m pip install .
python -m pip install .[test]
pytest -vv -r ap --cov --cov-report=xml tvb_ext_bucket
jupyter server extension list
Expand All @@ -55,19 +60,19 @@ jobs:
set -eux
pip install build
python -m build --sdist
python -m build
pip uninstall -y "tvb-ext-bucket" jupyterlab
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
uses: sonarsource/sonarcloud-github-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

- name: Upload extension packages
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: extension-artifacts
name: extension-artifacts-${{ matrix.python-version }}
path: dist/tvb_ext_bucket*
if-no-files-found: error

Expand All @@ -76,29 +81,93 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Python
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.8'
python-version: '3.11'
architecture: 'x64'
- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v4
with:
name: extension-artifacts
name: extension-artifacts-3.11
- name: Install and Test
run: |
set -eux
# Remove NodeJS, twice to take care of system and locally installed node versions.
sudo rm -rf $(which node)
sudo rm -rf $(which node)
pip install "jupyterlab~=3.1" tvb_ext_bucket*.tar.gz
pip install "jupyterlab>=4.0.0,<5" tvb_ext_bucket*.whl
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "tvb_ext_bucket.*OK"
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "tvb-ext-bucket.*OK"
python -m jupyterlab.browser_check --no-chrome-test
python -m jupyterlab.browser_check --no-browser-test
integration-tests:
name: Integration tests
needs: build
runs-on: ubuntu-latest

env:
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

- name: Download extension package
uses: actions/download-artifact@v4
with:
name: extension-artifacts-3.11

- name: Install the extension
run: |
set -eux
python -m pip install "jupyterlab>=4.0.0,<5" tvb_ext_bucket*.whl
- name: Install dependencies
working-directory: ui-tests
env:
YARN_ENABLE_IMMUTABLE_INSTALLS: 0
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
run: jlpm install

- name: Set up browser cache
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/pw-browsers
key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }}

- name: Install browser
run: jlpm playwright install chromium
working-directory: ui-tests

- name: Execute integration tests
working-directory: ui-tests
run: |
jlpm playwright test
- name: Upload Playwright Test report
if: always()
uses: actions/upload-artifact@v4
with:
name: tvb_ext_bucket-playwright-tests
path: |
ui-tests/test-results
ui-tests/playwright-report
check_links:
name: Check Links
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Install dependencies
run: |
python -m pip install -U jupyterlab~=3.2.8 setuptools twine build
python -m pip install -U jupyterlab~=4.2 setuptools twine build
- name: Build package
run: |
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
*.bundle.*
lib/
node_modules/
*.log
.eslintcache
.stylelintcache
*.egg-info/
Expand Down Expand Up @@ -64,6 +65,7 @@ htmlcov/
.coverage.*
.cache
nosetests.xml
coverage/
coverage.xml
*.cover
.hypothesis/
Expand Down Expand Up @@ -119,6 +121,9 @@ dmypy.json
# OSX files
.DS_Store

# Yarn cache
.yarn/

# Autogenerated files
.idea/
*.log
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ node_modules
**/node_modules
**/lib
**/package.json
!/package.json
**/src/__tests__
tvb-ext-bucket
6 changes: 0 additions & 6 deletions .prettierrc

This file was deleted.

14 changes: 0 additions & 14 deletions .stylelintrc

This file was deleted.

2 changes: 2 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
enableImmutableInstalls: false
nodeLinker: node-modules
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ for the frontend extension.

## Requirements

- JupyterLab >= 3.0
- JupyterLab >= 4.0.0

## Install

Expand Down Expand Up @@ -57,7 +57,7 @@ The `jlpm` command is JupyterLab's pinned version of
# Clone the repo to your local environment
# Change directory to the tvb-ext-bucket directory
# Install package in development mode
pip install -e .
pip install -e ".[test]"
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Server extension must be manually installed in develop mode
Expand Down Expand Up @@ -105,6 +105,8 @@ Install test dependencies (needed only once):

```sh
pip install -e ".[test]"
# Each time you install the Python package, you need to restore the front-end extension link
jupyter labextension develop . --overwrite
```

To execute them, run:
Expand All @@ -124,6 +126,13 @@ jlpm
jlpm test
```

#### Integration tests

This extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).
More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.

More information are provided within the [ui-tests](./ui-tests/README.md) README.

### Packaging the extension

See [RELEASE](RELEASE.md)
Expand Down
Loading

0 comments on commit 245b082

Please sign in to comment.