Python client for SLEAP Share - upload and share SLEAP datasets
Project description
sleap-share
Python client for SLEAP Share - upload and share SLEAP datasets.
Installation
pip install sleap-share
Or use with uvx for one-off commands:
uvx sleap-share upload labels.slp
Quick Start
Command Line
# Upload a file (no account needed)
sleap-share upload labels.slp
# → https://slp.sh/aBcDeF
# Download a file
sleap-share download aBcDeF
# Get file info
sleap-share info aBcDeF
# Authenticate for more features
sleap-share login
# List your uploads
sleap-share list
# Delete a file
sleap-share delete aBcDeF
Python API
import sleap_share
# Upload (anonymous)
result = sleap_share.upload("labels.slp")
print(result.share_url) # https://slp.sh/aBcDeF
# Download
sleap_share.download("aBcDeF", output="./data/")
# Get metadata
metadata = sleap_share.get_metadata("aBcDeF")
print(f"Labeled frames: {metadata.labeled_frames_count}")
# Lazy loading (stream data on-demand without full download)
import sleap_io
url = sleap_share.open("aBcDeF")
labels = sleap_io.load_slp(url) # Only fetches accessed data!
Authenticated Operations
# Use stored credentials from `sleap-share login`
client = sleap_share.Client()
# Or provide token directly
client = sleap_share.Client(token="slpsh_live_...")
# List your files
files = client.list_files()
# Delete a file
client.delete("aBcDeF")
# Get user info
user = client.whoami()
CLI Commands
| Command | Description |
|---|---|
login |
Authenticate via browser |
logout |
Clear stored credentials |
whoami |
Show current user |
upload <file> |
Upload a .slp file |
download <id> |
Download a file |
list |
List your uploads |
info <id> |
Show file metadata |
preview <id> |
Download preview image |
delete <id> |
Delete a file |
version |
Show version |
Global Options
--env staging- Target staging environment instead of production--help- Show help for any command
Environment Variables
SLEAP_SHARE_ENV- Default environment (productionorstaging)
Token Storage
Credentials are stored securely using:
- System keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service)
- Fallback:
~/.config/sleap-share/credentialswith0600permissions
Development
cd client
# Install dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Lint and format
uv run ruff check .
uv run ruff format .
# Type check
uv run mypy src/sleap_share
Releasing
New versions are published to PyPI via GitHub Releases.
Steps to Release
-
Update version in
pyproject.tomlandsrc/sleap_share/__init__.py -
Update CHANGELOG.md with the new version and release notes
-
Create a GitHub Release:
- Go to Releases
- Tag:
client-v{version}(e.g.,client-v0.2.0) - Title:
Python Client v{version} - Description: Copy from CHANGELOG.md
- Click Publish release
-
The GitHub Action will automatically:
- Run tests on Python 3.9-3.13
- Run linting and type checks
- Build the package
- Publish to PyPI via OIDC trusted publishing
Version Scheme
Tags must start with client-v to trigger publishing (e.g., client-v0.1.0, client-v1.0.0).
This prefix distinguishes Python client releases from other releases in the monorepo.
License
MIT License - see LICENSE for details.
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