pipeline-analytics-sdk-python
A Python client for pipeline-analytics's REST API, generated from its OpenAPI spec with openapi-python-client. It saves you from hand-rolling HTTP requests, retries and pagination against the API yourself.
Requirements
- Python 3.12 or later.
- A running pipeline-analytics instance.
- A session cookie for that instance (see "Authentication" below) — every
endpoint except
get_versionand the two webhook receivers needs one.
Installation
pip install pipeline-analytics-sdk
Pin an exact version in your own pyproject.toml/requirements.txt rather
than tracking the latest release in anything but a quick trial.
Authentication
pipeline-analytics authenticates browsers with
WebAuthn, not an API token — there's no headless
credential-grant flow in its spec (a real token flow is requested in
alrayyes/pipeline-analytics#178),
so this SDK can't log in for you. Get a session cookie by logging into the
dashboard in a browser, opening dev tools, and copying the session
cookie's value. Pass it to PipelineAnalyticsClient or set
PIPELINE_ANALYTICS_SESSION in the environment:
import os
from pipeline_analytics import PipelineAnalyticsClient
client = PipelineAnalyticsClient(
"https://pipeline-analytics.example.com",
session_cookie=os.environ.get("PIPELINE_ANALYTICS_SESSION"),
)
A session cookie expires the same way it would in a browser; there's nothing in this SDK to refresh it automatically.
Usage
get_version needs no session and is a good first call to prove the client
reaches the server at all:
from pipeline_analytics import PipelineAnalyticsClient
with PipelineAnalyticsClient("https://pipeline-analytics.example.com") as client:
version = client.get_version()
print("server version:", version.version)
Listing tracked repos needs a session, and demonstrates the pagination iterator and error handling:
import os
from pipeline_analytics import APIError, PipelineAnalyticsClient, iter_repos
client = PipelineAnalyticsClient(
"https://pipeline-analytics.example.com",
session_cookie=os.environ.get("PIPELINE_ANALYTICS_SESSION"),
)
try:
for repo in iter_repos(client.raw):
print(repo.identifier, repo.ingestion_status)
except APIError as e:
if e.status_code == 401:
raise SystemExit("session cookie expired or invalid") from e
raise
An async equivalent, aiter_repos, is available for async/await code.
Every other operation follows the generated client's pattern —
pipeline_analytics._generated.api.<tag>.<operation>.sync_detailed(client=client.raw, ...)
(or asyncio_detailed for async) returns a typed Response whose .parsed
field holds the decoded body for a documented status code. Use
decode_error to turn any error response into a pipeline_analytics.APIError
uniformly:
from pipeline_analytics import decode_error
from pipeline_analytics._generated.api.repos import get_repo_usage
response = get_repo_usage.sync_detailed(client=client.raw, repo_id=repo_id)
if error := decode_error(response):
raise error
usage = response.parsed
The client retries a 429 or 5xx response with exponential backoff and
jitter (honoring a server-sent Retry-After), and never retries any other
4xx. Tune it by passing a pipeline_analytics.RetryConfig as retry=, or
swap the underlying httpx.Client/httpx.AsyncClient entirely with
httpx_client=/httpx_async_client=.
Regenerating the client
See CONTRIBUTING.md — the generated code is pinned to a specific pipeline-analytics commit and shouldn't drift from it silently.
Contributing
See CONTRIBUTING.md for building, testing and the release process.
License
MIT — a permissive license for the client, independent of pipeline-analytics' own AGPL-3.0.
Release files for pipeline-analytics-sdk 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pipeline_analytics_sdk-0.1.2.tar.gz | 197.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pipeline_analytics_sdk-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 259.7 kB
Release files / pipeline_analytics_sdk-0.1.2.tar.gz
| Download URL | pipeline_analytics_sdk-0.1.2.tar.gz |
|---|---|
| Size | 197.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b948f8dc664fc835e425b5541455fdc59f6e1921f54e46b6ea41a4465d2ac0c0
|
|
BLAKE2b-256 checksum How to use checksums |
d1517d019e62ec307fc5276411075a7def300632c800744812c0238b8d27ef3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / pipeline_analytics_sdk-0.1.2-py3-none-any.whl
| Download URL | pipeline_analytics_sdk-0.1.2-py3-none-any.whl |
|---|---|
| Size | 62.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9754d49a0b10b7a8bf2d93d3be6770b1d798803418089aabae07f5f7d690d4dc
|
|
BLAKE2b-256 checksum How to use checksums |
8ff9d2d6526be8fb9948363dc569cfb562253b19f9e2f55e2939912f585a9757
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log