Skip to main content

xoople-sdk

Official Python SDK for the Xoople Products API.

from xoople.sdk import Config, XoopleClient, StaticToken, models

client = XoopleClient.from_credentials(
    "https://api.xoople.com", StaticToken("...")
)
# Or pass the complete transport configuration directly:
# client = XoopleClient(Config.from_env())

estimate = client.analyses.estimate(request)
analysis = client.analyses.create(request)

# `list` returns a paginator: iterate it for items across every page.
for run in client.analyses.runs.list(analysis.uid):
    print(run.state)

# Sub-resources take the parent analysis uid:
output = client.analyses.outputs.get(analysis.uid, output_uid)
access = client.analyses.outputs.generate_access_url(analysis.uid, output_uid, ttl_seconds=900)

# A table output resolves to a handle that reads itself:
table = client.table(analysis.uid)          # or client.table(uid, output=output_uid)
print(table.shared)                         # measures, grid, size, created time
df = table.to_pandas()                      # pip install "xoople-sdk[sharing]"
sdf = table.to_spark(spark)                 # your session, your connector

# Select an inclusive Delta Change Data Feed range. Start at 0 on the first sync.
changes = table.changes(starting_version=0)
change_df = changes.to_pandas()
change_sdf = changes.to_spark(spark)
latest = table.latest_changes()
latest_df = latest.to_pandas()
latest_sdf = latest.to_spark(spark)

# Custom verbs are plain methods:
client.analyses.cancel(analysis.uid)
client.analyses.schedules.pause(analysis.uid, schedule_uid)

# Cross-analysis reads and catalogs are top-level:
client.schedules.list(state=models.ScheduleStatus.ACTIVE)
client.usage.limits()
client.catalog.measures(product="tabular_time_series")

Config.from_env() reads XOOPLE_API_URL and XOOPLE_TOKEN.

Connection profiles

Config.from_profile(path) reads the URL and the credential from one file, for tools that take a file and not an environment:

{
  "version": 1,
  "api_url": "https://gateway.xoople.com",
  "auth": { "type": "bearer", "token": "<token>" },
  "expires_at": "2026-09-30T00:00:00Z"
}

expires_at is optional and is what the issuer stamped. It carries a UTC offset. A profile past it raises ProfileExpiredError on load, not at the first request.

The file is a credential. Keep it out of projects and repositories. Restrict who can read it.

client.table() is the authenticated half of xoople.sdk.sharing, which reads a .share profile with no API credential at all. It downloads one profile for the client's lifetime and removes it on close(), so keep the client open through every read — Spark reads lazily. client.table(uid, profile_path=...) uses a profile you own instead; the SDK never writes or removes that one.

Change Data Feed reads accept either starting_version with an optional ending_version, or starting_timestamp with an optional ending_timestamp. Ranges are inclusive and return the standard _change_type, _commit_version, and _commit_timestamp columns. Persist the highest commit version you apply, then begin the next read at that value plus one. For inspection rather than cursor-based synchronization, latest_changes().to_pandas() and latest_changes().to_spark(spark) read only the newest available table commit.

Every failure raises a subclass of xoople.sdk.errors.XoopleError.

Metadata

Release files for xoople-sdk 0.5.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 xoople-sdk 0.5.0
File Size Uploaded Provenance
xoople_sdk-0.5.0.tar.gz 59.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for xoople-sdk 0.5.0
File Interpreter ABI Platform
xoople_sdk-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 125.5 kB

Release files / xoople_sdk-0.5.0.tar.gz

Download URL xoople_sdk-0.5.0.tar.gz
Size 59.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5b826f1034fd5a390cc80c56bfa62ad0dccaf8613d780083a0ff0e058cb49470
BLAKE2b-256 checksum
How to use checksums
10912f9eec23787f39c61c63ba3ab515146562b685011538a270557d299d894d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
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 / xoople_sdk-0.5.0-py3-none-any.whl

Download URL xoople_sdk-0.5.0-py3-none-any.whl
Size 66.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6279a61e32c43f26e9eee989c8063d7a3faee2d5c8ec386eef9e13b0dee73c63
BLAKE2b-256 checksum
How to use checksums
7856b1f2d18095403d318996a04309c98c591accd983757f6c89297759edf04b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
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}

Security for xoople-sdk 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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