vars-client
Python client library unifying access to MBARI's VARS microservice stack:
| Service | Purpose |
|---|---|
| Annosaurus | Annotations |
| Vampire Squid | Video assets |
| Oni | Taxonomy / knowledge base |
| Panoptes | Image upload / archive |
| Beholder | On-demand video frame extraction |
| Skimmer | ROI cropping |
| Raziel | Service configuration / discovery |
VARS is used by multiple institutions, so this library is built so each one can supply its own service URLs and credentials without touching code, and so read-only use works even with no credentials at all.
Features
- Unified client.
VARSClientwires up all seven services from a single config object. - Pluggable endpoint discovery. Bootstrap from a running Raziel instance, or supply endpoints directly via dict, YAML, or environment variables — no institution-specific code required.
- Handles VARS' four auth schemes (JWT exchange, Raziel's two-stage bootstrap, static API keys, and no auth) uniformly, including token caching, proactive refresh, and retry-on-401. See Auth.
- Works with zero credentials. Every read endpoint on Annosaurus, Vampire Squid, Oni, and Panoptes is unauthenticated — omit a secret and you still get a fully read-capable client.
- Generated, not hand-maintained. Five of the six OpenAPI-backed services
are wrapped by Kiota-generated
clients kept current with
just fetch-specs && just generate; the API reference is itself generated from those specs, cross-referenced against the actual generated code.
Installation
uv add vars-client
Quick start
import asyncio
from vars_client.client import VARSClient
from vars_client.config import RazielConfigProvider
async def main():
config = RazielConfigProvider("https://vars.example.org/raziel") # anonymous, read-only
client = await VARSClient(config).connect()
health = await client.annosaurus.v1.health.get()
print(health.application)
asyncio.run(main())
See Client for the full usage guide and Configuration for institution-specific setups.
Development
This project uses uv and a
justfile for common tasks:
just sync # install dependencies
just check # lint + typecheck + test
just build # build the sdist/wheel
See Development for the full contributor workflow, including regenerating the Kiota clients from upstream OpenAPI specs.
License
Licensed under the Apache License, Version 2.0.
Metadata
Release files for vars-client 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vars_client-0.3.0.tar.gz | 146.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vars_client-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 906.1 kB
Release files / vars_client-0.3.0.tar.gz
| Download URL | vars_client-0.3.0.tar.gz |
|---|---|
| Size | 146.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b2decdc72d2739bf75ce6a0566f03ad4c78f93b9866a921b6fbe0dafd00867e
|
|
BLAKE2b-256 checksum How to use checksums |
566d5bde0f47330b073b6eeb511ff2ae4373c21b118e2ef4606ecae28b60e4af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.11 {"installer":{"name":"uv","version":"0.12.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / vars_client-0.3.0-py3-none-any.whl
| Download URL | vars_client-0.3.0-py3-none-any.whl |
|---|---|
| Size | 759.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
63eab3056aa10e3d82a6684768cb74850ceb2a143ac9a2e9d6260459b66054d4
|
|
BLAKE2b-256 checksum How to use checksums |
3a3e4430fff1626bca9512351f4f80f810fda03bfd496aa4cda0f80b62940c11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.11 {"installer":{"name":"uv","version":"0.12.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|