Skip to main content

JLAB extension to add classes to cells based on their tags

Project description

jupyterlab_celltagsclasses

Github Actions Status

An extension to expose cell tags as CSS classes

Requirements

  • JupyterLab >= 4.0.0

Install

To install the extension, execute:

pip install jupyterlab_celltagsclasses

Uninstall

To remove the extension, execute:

pip uninstall jupyterlab_celltagsclasses

What it does

CSS classes

each cell has its widget (the DOM element) classes kept in sync in terms of the cell's tags;
for example:

  • adding tag foobar will result in the current cell having class cell-tag-foobar added
  • for using classes that are readily available in your environment, you can use a tags that starts ith a a dash
    so tag -foobar will yield class foobar on the cell

specifically the DOM elements that are decorated have the .jpCell class set by jlab, like illustrated below, where the extension has set class celltagsclasses-test1

metadata management helper functions

it also exports utilities to manage a cell's metadata, specifically for

  • getting, setting or unsetting a key/value pair
  • adding, removing items in a list inside the metadata (e.g. tags)
  • cleaning the metadata for empty/useless items

to that effect, see the md_get and similar functions in metadata.ts (that can be imported right from the module)

helper: apply function on cells

the apply_on_cells function allows you to write a function that works on an individual cell, and then call it on either

  • the active cell only
  • all the selected cells if relevant, otherwise the active cell
  • all the cells in the notebook

for that you can pass it a Scope value that can be either Active, Multiple, or All

Development

See the documentation on Jlab extensions for more details; the gist of it is

Development install

# Clone the repo to your local environment
# Change directory to the jupyterlab_celltagsclasses directory
# Install package in development mode
pip install -e "."
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Rebuild extension Typescript source after making changes
jlpm build

You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.

# Watch the source directory in one terminal, automatically rebuilding when needed
jlpm watch
# Run JupyterLab in another terminal
jupyter lab

Development uninstall

pip uninstall jupyterlab_celltagsclasses

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-celltagsclasses within that folder.

Packaging the extension

See RELEASE

testing

the metadata module

probably suboptimal but that's my first..

npm install -g typescript '@types/node'
rm src/*js
tsc src/xpath*ts && node src/xpath-test.js

I have tried to use ts-node but to no avail so far

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_celltagsclasses-0.5.2.tar.gz (142.5 kB view details)

Uploaded Source

Built Distribution

jupyterlab_celltagsclasses-0.5.2-py3-none-any.whl (48.5 kB view details)

Uploaded Python 3

File details

Details for the file jupyterlab_celltagsclasses-0.5.2.tar.gz.

File metadata

File hashes

Hashes for jupyterlab_celltagsclasses-0.5.2.tar.gz
Algorithm Hash digest
SHA256 951400f3e67502e3221eaa9f30e43965604925c3a393ec3a44d3d33c6dfa8a93
MD5 5153751e78d16d8c3e630d2d37d34862
BLAKE2b-256 6445df0d415457db3559d5d0c486acbfef56e7a7ef71022903c61cc9e4ff1d43

See more details on using hashes here.

File details

Details for the file jupyterlab_celltagsclasses-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyterlab_celltagsclasses-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7099720a6f3da722c575dcc9d7fff6b1abc85af91abed33ac87ea78aa993be17
MD5 2c02423805bf257a604d7a2a5ee79c10
BLAKE2b-256 f380b974127330bf51739cbbefabf1fda3fb699b01845cac9336e632b042452a

See more details on using hashes here.

Supported by

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