Metadata-Version: 2.4
Name: jlabx
Version: 0.2.1
Summary: Launch JupyterLab with extensions — no install, no config, just go
Project-URL: Homepage, https://github.com/ianhi/jlabx
Project-URL: Documentation, https://ianhi.github.io/jlabx/
License-Expression: MIT
License-File: LICENSE
Keywords: extensions,jupyter,jupyterlab,uv
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Framework :: Jupyter :: JupyterLab
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# jlabx

Launch JupyterLab with extensions — without touching your project's dependencies. Works with both **uv** and **pixi** projects.

```bash
uv tool install jlabx
jlabx
```

## Why?

You're working in a repo with a `pyproject.toml` or `pixi.toml`, but you want JupyterLab with vim bindings, LSP, collaboration, and other extensions. You can't (or don't want to) add them as project dependencies. jlabx manages extensions separately and injects them at launch time — auto-detecting whether you're in a uv or pixi environment.

## Quick start

```bash
# Install
uv tool install jlabx
```

In a project with a `pyproject.toml` or `pixi.toml`:

```bash
jlabx
```

Launch a single notebook — imports are auto-detected and mapped to PyPI packages:

```bash
jlabx analysis.ipynb
```

```bash
# Persist auto-detected deps as PEP 723 metadata in the notebook
jlabx notebook.ipynb --init-deps

# Force uv even in a pixi project
jlabx --uv

# Manage extensions
jlabx list                  # Show configured extensions
jlabx add jupyterlab-vim    # Add an extension
jlabx remove jupyterlab-vim # Remove an extension
```

## Core extensions (always included)

- jupyterlab
- jupyter-collaboration
- jupyter-lsp
- python-lsp-server

## Environment detection

jlabx auto-detects your environment:

| Files in cwd | Mode | How it launches |
|---|---|---|
| `pixi.toml` / `pixi.lock` | Pixi | `pixi run jupyter-lab` |
| `pyproject.toml` | Python project | `uv run --with <extensions> jupyter-lab` |
| Neither | Standalone | `uvx --from jupyterlab --with <extensions> jupyter-lab` |

## Config

Extensions are stored in `~/.config/jlabx/config.toml` (or `$XDG_CONFIG_HOME/jlabx/config.toml`). Created automatically on first run.

## Documentation

**Full docs: https://ianhi.github.io/jlabx/**

## License

MIT
