Skip to main content

vars-client

CI Documentation License: Apache-2.0 Python 3.14+

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.

Full documentation →

Features

  • Unified client. VARSClient wires 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)

Source distribution for vars-client 0.3.0
File Size Uploaded
vars_client-0.3.0.tar.gz 146.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vars-client 0.3.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page