Spotfire Community tools for working with the Spotfire Library API and DXP files.
Project description
Spotfire Community
Tools for working with the Spotfire Library REST API (v2) and DXP files. The repo includes a production-ready Python client, DXP utilities, a FastAPI mock server for tests, and a uv-powered workflow.
What’s inside
- Library client: upload to/create/delete in the Spotfire Library
- DXP helpers: unzip, inspect, and repackage DXP artifacts
- Mock Library v2 API (FastAPI): deterministic tests without a real server
- uv environment: fast resolution, lockfile, and “run” for commands
Installation (uv)
uv sync --dev
Python: see requires-python in pyproject.toml (3.13+).
Usage
Library client
from spotfire_community import LibraryClient
from spotfire_community.library.models import ItemType
client = LibraryClient(
spotfire_url="https://your-spotfire-host", # e.g., https://dev.spotfire.com
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET",
)
file_id = client.upload_file(
data=b"...bytes...", # upload raw content
path="/Samples/Doc1", # library path
item_type=ItemType.DXP,
description="Uploaded via LibraryClient",
overwrite=False,
)
print("uploaded:", file_id)
DXP utilities
from spotfire_community import Dxp
dxp = Dxp("/path/to/Analysis.dxp")
print(dxp.get_all_files())
zip_bytes = dxp.get_zip_folder_in_memory() # BytesIO
Mock Library v2 API and tests
Mock endpoints implemented in src/mock_spotfire/library_v2/:
- Router and handlers:
src/mock_spotfire/library_v2/paths.py - Models:
src/mock_spotfire/library_v2/models.py - Errors:
src/mock_spotfire/library_v2/errors.py - In-memory state:
src/mock_spotfire/library_v2/state.py
Endpoints:
POST /spotfire/oauth2/tokenGET/POST /spotfire/api/rest/library/v2/itemsDELETE /spotfire/api/rest/library/v2/items/{id}POST /spotfire/api/rest/library/v2/uploadPOST /spotfire/api/rest/library/v2/upload/{jobId}
Tests use fastapi.testclient.TestClient and monkeypatch requests.Session so the client talks to the mock app in‑memory. See tests/library/upload/*.py.
Run tests:
uv run -m pytest -q
Dev Container (VS Code)
This repo ships a devcontainer for a consistent environment (Debian 12 + Python 3.13 + uv).
What you get
- Python 3.13 base image
- uv installed by post-create script
.venvvirtual environment managed by uv- Extensions: Python, TOML
Open it
- Install “Dev Containers” in VS Code.
- Open the repo folder and choose “Reopen in Container”.
- Wait for the post-create to finish; then run:
uv sync --dev
uvx pyright
uvx ruff format --check .
uv run -m pytest -q
Notes
- The container uses the
vscodeuser and exposesWORKSPACE_PATH. - After changing dependencies, run
uv syncagain. - If
uvis not found, ensure it’s on PATH or re-run the post-create.
CI
GitHub Actions runs lint, type‑check, and tests. See .github/workflows/ci.yaml.
License
Open source. See LICENSE.
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 spotfire_community-0.1.0.tar.gz.
File metadata
- Download URL: spotfire_community-0.1.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5751b7271ae17c4ae1dab7945e2a3843a36c9b7263a282d334d91d2abe07593d
|
|
| MD5 |
d34b0632731906a26e680593928a697f
|
|
| BLAKE2b-256 |
d84f8a0b4301e73540335f2313591500600c8d35c0b6aad4b3de8034a7d0e9a3
|
File details
Details for the file spotfire_community-0.1.0-py3-none-any.whl.
File metadata
- Download URL: spotfire_community-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86835d44a7c24a9ad30d8981119251aea860ff2794cc57db53b5303cf3373f8c
|
|
| MD5 |
d4f728aaf76defe9d56171729e7ec2b3
|
|
| BLAKE2b-256 |
e19aebbbea1f29f644c0ad541019aa2672b146bb611ece315ce5f2bee70d9d59
|