Metadata-Version: 2.4
Name: jupyter_coder_server
Version: 0.0.14
Summary: VSCODE integration in jupyter-lab
Home-page: https://github.com/MiXaiLL76/jupyter_coder_server
Author: MiXaiLL76
Author-email: mike.milos@yandex.ru
Classifier: Framework :: Jupyter
Classifier: Framework :: Jupyter :: JupyterLab
Classifier: Framework :: Jupyter :: JupyterLab :: 4
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jupyter-server-proxy
Requires-Dist: tornado
Requires-Dist: tqdm
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# jupyter_coder_server

[![PyPI](https://img.shields.io/pypi/v/jupyter-coder-server)](https://pypi.org/project/jupyter_coder_server)
[![PyPI Downloads](https://img.shields.io/pypi/dm/jupyter-coder-server.svg?label=PyPI%20downloads)](https://pypi.org/project/jupyter_coder_server/)

## Disclaimer

Many developers are forced to use jupyterlab\\jupyterhub during work, without the ability to use VSCODE.
Our comrades from [coder](https://github.com/coder) have done a great job to make it possible to use VSCODE through a browser.
My job is left to make these two technologies friends and provide the ability to quickly and conveniently launch both of these applications.

This library works in tandem with the [jupyter-server-proxy](https://github.com/jupyterhub/jupyter-server-proxy) library, which in turn allows you to create additional servers inside Jupyter.

| VSCode button                                                                                                               | Web Code Server (proxy)                                                                                                   |
| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| ![vscode_button](https://raw.githubusercontent.com/MiXaiLL76/jupyter_coder_server/refs/heads/main/assets/vscode_button.png) | ![vscode_proxy](https://raw.githubusercontent.com/MiXaiLL76/jupyter_coder_server/refs/heads/main/assets/vscode_proxy.png) |

## Install

Just run the installation from pypi and enjoy
**After installation, be sure to restart the server (if it is running in docker, then restart docker)**

```bash
pip install jupyter_coder_server
```

### Extra install

By default, this library installs the latest version of code-server on your device in the **~/.local/lib** directory

Installing a specific [version of code-server](https://github.com/coder/code-server/releases)

> To do this, you need to set env CODE_SERVER_VERSION
> CODE_SERVER_VERSION - lataset by default
> Since version search is controlled by github tags.

Installation example **tag_name "v4.99.1"**

```bash
CODE_SERVER_VERSION=v4.99.1 jupyter_coder_server --install
```

### CLI Commands

```bash
usage: jupyter_coder_server [-h] [--version] [--install] [--install-from INSTALL_FROM] [--install-server] [--install-extensions] [--install-settings] [--install-filebrowser] [--patch-tornado] [--remove] [--remove-server] [--remove-filebrowser]

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --install             Install coder-server, extensions, settings and Web File Browser
  --install-from INSTALL_FROM
                        Install coder-server, extensions, settings and Web File Browser from jupyter-coder-extensions.zip
  --install-server      Install coder-server
  --install-extensions  Install extensions
  --install-settings    Install settings
  --install-filebrowser
                        Install Web File Browser
  --patch-tornado       Monkey patch tornado.websocket
  --remove              Remove coder-server and Web File Browser
  --remove-server       Remove coder-server
  --remove-filebrowser  Remove Web File Browser
```

## Extra install

### Offline installation from archive

For environments without internet access, you can build an archive with all dependencies and install from it.

#### Step 1: Build the archive

On a machine with internet access, clone the repository and build the archive:

```bash
git clone https://github.com/MiXaiLL76/jupyter_coder_server.git
cd jupyter_coder_server
make build_ext
```

This will create `jupyter-coder-extensions.zip` containing:

- code-server binary
- filebrowser binary
- All VSCode extensions (Python, Jupyter, Ruff, Continue, etc.)

**Extension Installation Order:**
Extensions are downloaded with numeric prefixes (01-, 02-, etc.) to ensure correct installation order:

1. Python dependencies: `vscode-python-envs`, `debugpy`
2. Main Python extension: `python`
3. Jupyter dependencies: `jupyter-keymap`, `vscode-jupyter-slideshow`, `vscode-jupyter-cell-tags`, `jupyter-renderers`
4. Main Jupyter extension: `jupyter`
5. Other tools: `ruff`, `continue`

The `make build_ext` command is smart - it won't re-download files that already exist, making it safe to re-run.

#### Step 2: Transfer and install

Copy `jupyter-coder-extensions.zip` to your target machine and install:

```bash
pip install jupyter_coder_server
jupyter_coder_server --install-from jupyter-coder-extensions.zip
```

This will:

1. Extract the archive to a temporary directory
2. Install code-server, filebrowser, and all extensions from the archive
3. Configure settings and patch tornado
4. Clean up temporary files

After installation, restart your Jupyter server to see the changes.

## Requirements

1. Linux amd64
2. Installed CURL

For more details [see here](https://github.com/coder/code-server?tab=readme-ov-file#requirements)

## License

Since the [code-server](https://github.com/coder/code-server) project has an MIT license, I also use it in this project.

## Citation

```
@article{jupyter_coder_server,
title = {{jupyter_coder_server}: VSCODE integration in jupyter-lab},
author = {MiXaiLL76},
year = {2024}
}
```
