Peer-to-peer file sharing for JupyterLab - create named shares (drops) or requests (inboxes), get a link, share it. Files served directly from your server; recipients can use a JupyterLab panel or a plain browser.
Project description
jupyterlab_share_files_extension
If you live in JupyterLab and have ever had to "just send over that dataset" or "could you please upload your CSV somewhere I can grab it" - you know the routine. Email it (too big). Drop it in OneDrive (sync it first, share it, accept the corporate Terms of the Universe). Spin up an S3 bucket (and a meeting). By the time anyone has the file, you've forgotten what you needed it for.
This extension does not try to replace any of that. OneDrive, Dropbox, S3, that one Slack channel called #files-final-FINAL - they remain undefeated for serious file logistics. This is the small, embarrassingly specific tool for the other 90% of the time, when two people on JupyterLab just need to pass a folder back and forth and would prefer not to involve an enterprise.
Create a share (file drop) or request (inbox) from a side panel, copy the link, paste it in chat. Recipients open it in their JupyterLab panel or any plain browser. That is the whole pitch.
Features
- Shares - read-only drops of files and folders; recipients download
- Requests - inboxes; recipients upload, organised per uploader
- Connections - paste someone's link to subscribe to their share or upload to their request
- Drag-and-drop from the file browser - drop zone (new share), share row (add files), request row (upload)
- Browse inside a share - double-click a folder to drill in; the
..row takes you back up - Open files directly - double-click a file in the panel and JupyterLab opens it with the right viewer
- Right-click context menu - in the file browser ("Share Files..."), and on panel rows ("Copy to Current Folder", "Show in File Browser")
- Hidden files visible by default - dotfiles like
.env,.gitignore,.ssh/configare easy to share; toggle in Settings if you want them hidden - Standalone HTML page - link works in any browser, no JupyterLab needed
- Live upload notifications when someone uploads to your request
- Self-connect guard - pasting your own link shows a clear "you already own this" dialog instead of a silent toast
- Symlink-friendly - sharing
@shared/...and similar works - Delete to trash - panel deletes move files to the OS trash by default (toggle with
c.ShareFilesConfig.use_trash) - HTTPS-aware links - share URLs follow the scheme the browser is on (HTTPS behind a proxy, HTTP for direct peer-to-peer)
- Settings toggles - turn shares, requests, or hidden-file visibility on/off independently
Requirements
- JupyterLab >= 4.0.0
- Python >= 3.9
Install
Developers install via the project Makefile:
make install
End-users install the published package from PyPI:
pip install jupyterlab_share_files_extension
Configuration
Optional, set in jupyter_server_config.py:
c.ShareFilesConfig.shares_dir = "uploads" # default - relative to the notebook root
c.ShareFilesConfig.shares_dir = "data/uploads" # any path inside the notebook root
c.ShareFilesConfig.use_trash = True # default: True
A relative shares_dir is resolved against the notebook root (the same folder the file browser starts in - the Jupyter server's root_dir). The directory is created on demand and does not have to exist beforehand.
shares_dir must resolve to a location inside the notebook root. The extension refuses to start with a StorageError if it does not, because shares outside the root are unreachable via JupyterLab's file browser and Contents API - the panel's drag-out, "Copy to Current Folder", and "Show in File Browser" actions would all break silently.
Security
The link is the credential (40 bits of entropy). HTTPS is inherited from your JupyterHub/Jupyter proxy. Suitable for trusted-channel sharing (Slack, email). No expiry, no PIN.
Uninstall
pip uninstall jupyterlab_share_files_extension
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