Skip to main content

A JupyterLab extension that checks and suggests fixes for a11y issues.

Project description

Jupyterlab-a11y-checker

Jupyterlab-a11y-checker is a JupyterLab extension performs accessibility checks on Jupyter Notebooks (on JupyterHub), leveraging custom detection algorithms to align with WCAG 2.0 AA guidelines. It enables authors to identify accessibility issues in their notebooks and provides actionable suggestions to fix them.

Tool Description

Issue Detection

While there are many possible a11y issues in Jupyter Notebooks, we prioritized the issues discussed in a well-known study. The issues the extension can detect are listed in Issue Descriptions.

Fix Interfaces

We provide a user interface tailored to each issue, such as a text field for adding alt-text, a dropdown for fixing header issues, etc. The fix interfaces are listed in Fix Interface Descriptions.

AI Functionality

To simplify the remediation process, we integrate a Large Language Model (LLM) for generating recommendations. Using Ollama's mistral model, all processing is done locally on JupyterHub, ensuring user data privacy (details on this implementation will be shared in future releases).

On JupyterLab, this extension is detecting accessibility issues. On the left panel, there is a sample Jupyter Notebook, while on the right side, this extension is displaying image and heading related issues.

Getting Started

Installing

You can install the extension directly via pip:

pip install jupyterlab-a11y-checker

Find the package on PyPI here.

Contributing

We’re building this tool for the community, and we’d love your help! Whether it’s adding new accessibility checks, or refining the fix suggestions, your contributions can help this project make a broader impact.

Build from Scratch

# Create an environment using anaconda navigator: <env-name>

conda activate <env-name>
pip install cookie cutter
python -m pip install jupyterlab notebook --pre
mamba install -c conda-forge nodejs=18
node -v #to check version

# <pull code>
OR
cookiecutter https://github.com/jupyterlab/extension-cookiecutter-ts --checkout 4.0

jlpm
jlpm run build
jupyter labextension develop . --overwrite
python -m pip install -e .
pip list #to verify it has been installed in editable mode
jupyter labextension list #to verify it has been installed

jupyter lab --no-browser #run a jupyterlab server

#Run jlpm run build, then jupyter lab --no-browser to test your code after each change

Build from Temp Distribution

jlpm build:prod
npm pack #creates a tarball (*.tgz file) containing your project as it would be uploaded to the npm registry. This file can be shared and installed locally.
jupyter labextension install </path/to/your-package.tgz>


# ALTERNATIOVELY IF GIVEN A tar.gz file:

conda activate <env-name>
jupyter labextension install </path/to/your-package.tgz>
jupyter lab #this will open a local server of jupyterlab with all current extensions installed.

Pip Distribution

pip install twine

# create a ~/.pypirc file at root and add this to it:
[distutils]
index-servers =
	pypi

[pypi]
repository: https://upload.pypi.org/legacy/
username: __token__
password: your-api-token

#run this command and publish to pip.
twine upload your-package.whl

Development uninstall

pip uninstall jupyterlab_a11y_checker

Testing in a JupyterHub setup

  • Build the Jupyter Lab extension with the latest changes
jlpm
jlpm build
jupyter lab build
  • Package the extension as a wheel file (.whl)
python -m build

.whl file gets generated in the dist/ directory

  • Copy the .whl file to the server where JupyterHub is installed (or include it in a Dockerfile if using Docker)

  • Install the .whl file:

pip install /path/to/your-extension.whl
  • If the identical version of the extension is already installed then
pip uninstall extension-name
pip install /path/to/your-extension.whl
  • Refresh the page for the changes to apply

In development mode, you will also need to remove the symlink created by jupyter labextension develop command. To find its location, you can run jupyter labextension list to figure out where the labextensions folder is located. Then you can remove the symlink named jupyterlab-a11y-checker within that folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyterlab_a11y_checker-0.2.1.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jupyterlab_a11y_checker-0.2.1-py3-none-any.whl (507.9 kB view details)

Uploaded Python 3

File details

Details for the file jupyterlab_a11y_checker-0.2.1.tar.gz.

File metadata

  • Download URL: jupyterlab_a11y_checker-0.2.1.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for jupyterlab_a11y_checker-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a951903f390e7facac694ae979f12c4b44e80fba2117312ce9a107fddea5b87b
MD5 cc4316256ee0a66dcf1763a3c06761fb
BLAKE2b-256 f7f6eeb549dc1da606493cc469ebe3d759797dd9e2bda0331c960d980a5d2dc6

See more details on using hashes here.

File details

Details for the file jupyterlab_a11y_checker-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyterlab_a11y_checker-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f0cbab9dfe68d58ff0348410cd2edb406d93e3093a88aef5345e64a4e5cac55c
MD5 416d07675c4f015408ee4d51dd8743fe
BLAKE2b-256 a49bf1eabd19142bd4b95c018717c2285e079d0782b73831071472cec0341ab2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page