A Jupyter interface for projspec
Project description
jupyter-projspec 
A JupyterLab extension that brings projspec project introspection directly into your development workflow. See at a glance what kind of project you're working in and explore its structure, metadata, and buildable artifacts.
Features
๐ท๏ธ Project Type Chips in File Browser
Colored badge chips appear below the breadcrumbs in the file browser, showing all detected project types for the current directory:
- Instant recognition โ See
๐ Python Library,๐ฎ Pixi,๐ Git Repository, etc. at a glance - Click to explore โ Clicking a chip opens the sidebar panel and scrolls to that spec's details
- Unobtrusive โ Chips only appear when project specs are detected; completely hidden otherwise
๐ Project Spec Sidebar Panel
A dedicated right sidebar panel provides detailed project information:
- Synced with file browser โ Automatically updates as you navigate directories
- Expandable spec items โ Click to reveal contents and artifacts for each project type
- Contents โ View metadata, dependencies, environment specs, and more
- Artifacts โ See buildable outputs like wheels, conda packages, documentation
๐จ Supported Project Types
jupyter-projspec recognizes many project types through projspec:
| Category | Types |
|---|---|
| Version Control | Git Repository |
| Python | Python Library, Poetry, uv, Pixi, Conda Project, Conda Recipe, PyScript, Briefcase |
| JavaScript | Node.js, Yarn, JupyterLab Extension |
| Rust | Rust Crate |
| Documentation | mdBook, Read the Docs |
| Data & ML | Data Package, Hugging Face Repo |
| IDEs | VS Code, JetBrains IDE, Zed, NVIDIA AI Workbench |
Requirements
- JupyterLab >= 4.0.0
- Python >= 3.10
- projspec
Install
pip install jupyter-projspec
Usage
- Open JupyterLab and navigate to any project directory using the file browser
- Look for chips below the breadcrumbs โ they appear when projspec detects project types
- Click a chip or the sidebar icon to open the Project Spec panel
- Expand specs to explore contents (metadata, dependencies) and artifacts (buildable outputs)
Uninstall
pip uninstall jupyter-projspec
Troubleshoot
If you see the frontend extension but it's not working, verify the server extension is enabled:
jupyter server extension list
If the server extension is installed and enabled but you don't see the frontend extension:
jupyter labextension list
Contributing
Development Install
You will need NodeJS to build the extension package.
# Clone the repo
git clone https://github.com/fsspec/jupyter-projspec.git
cd jupyter-projspec
# Set up a virtual environment
python -m venv .venv
source .venv/bin/activate
# Install in development mode
pip install --editable ".[dev,test]"
# Link your development version with JupyterLab
jupyter labextension develop . --overwrite
jupyter server extension enable jupyter_projspec
# Build the extension (do this after each TypeScript change)
jlpm build
Development Workflow
Watch mode (recommended for active development):
# Terminal 1: Auto-rebuild on file changes
jlpm watch
# Terminal 2: Run JupyterLab
jupyter lab
With watch mode running, saved TypeScript changes rebuild automatically. Refresh your browser to see changes.
After editing Python (files in jupyter_projspec/):
- Restart the JupyterLab server (no rebuild needed)
Development Uninstall
jupyter server extension disable jupyter_projspec
pip uninstall jupyter_projspec
Remove the symlink created by jupyter labextension develop:
jupyter labextension list # Find labextensions folder location
# Remove the jupyter-projspec symlink from that folder
Testing
Server tests (Python):
pip install -e ".[test]"
pytest -vv -r ap --cov jupyter_projspec
Frontend tests (TypeScript):
jlpm test
Integration tests (Playwright):
See ui-tests/README.md for details.
Architecture
jupyter-projspec/
โโโ src/ # TypeScript frontend
โ โโโ index.ts # Extension entry point
โ โโโ components/ # React components
โ โ โโโ ProjspecPanelComponent.tsx
โ โ โโโ ProjectView.tsx
โ โ โโโ SpecItem.tsx
โ โ โโโ ContentsView.tsx
โ โ โโโ ArtifactsView.tsx
โ โ โโโ ProjspecChips.tsx # File browser chips
โ โโโ widgets/
โ โโโ ProjspecPanel.ts # Sidebar panel widget
โ โโโ ProjspecChipsWidget.ts
โโโ jupyter_projspec/ # Python backend
โ โโโ __init__.py # Server extension setup
โ โโโ routes.py # API route handlers
โโโ style/ # CSS styles
โโโ schema/ # JupyterLab settings schema
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/jupyter-projspec/scan |
GET | Scan a directory and return projspec data |
Roadmap
Future enhancements being considered:
- MAKE buttons โ Execute artifact builds directly from the UI
- Build output display โ Show stdout/stderr from artifact builds
- File browser navigation โ Click built artifacts to reveal them
- Real-time streaming โ Live output for long-running builds
- jupyter-fsspec integration โ Support for remote filesystems
AI Coding Assistant Support
This project includes an AGENTS.md file with coding standards for JupyterLab extension development. Compatible with AI assistants that support the AGENTS.md standard.
License
BSD-3-Clause
Acknowledgments
Built on projspec by the fsspec team.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupyter_projspec-0.1.0.tar.gz.
File metadata
- Download URL: jupyter_projspec-0.1.0.tar.gz
- Upload date:
- Size: 177.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63fbe5df339c112043658af07cb65d9cd031c3c61fa6b025e7600608ca69d1ae
|
|
| MD5 |
b5a41e90b82405178a6a04b7b3c9ffdc
|
|
| BLAKE2b-256 |
0f83c5794865949de125d64909b66c43fe20293a2cb05e18acb6350ae4069386
|
File details
Details for the file jupyter_projspec-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jupyter_projspec-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25420078f654a55664838665419e600fbcffa360bd211cc887045dab6f09d205
|
|
| MD5 |
1a998611c1d3532acae615f3a3db3e34
|
|
| BLAKE2b-256 |
201ed205775b09ac484d5232cee4f5613e48c74c4048fea3e526e9c050fc0a04
|