Python client for BugSeq (https://bugseq.com)
Project description
BugSeq Python Client Library
Authentication and client code for interacting with the BugSeq API.
Installation
pip install bugseq-client
Example Usage
from pathlib import Path
import requests
from bugseq_client.auth import (
DEFAULT_OAUTH_CONFIG,
Session,
get_default_credential_storage_provider,
)
import bugseq_client.openapi_client
def download_url_to_file(download_url: str, filename: str):
with requests.get(download_url, stream=True) as r:
r.raise_for_status()
with open(filename, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk: # filter out keep-alive chunks
f.write(chunk)
class App:
def __init__(self):
storage = get_default_credential_storage_provider()
self.session = Session(DEFAULT_OAUTH_CONFIG, storage)
def run(self):
token = self.session.get_token()
configuration = bugseq_client.openapi_client.Configuration(
host="https://api.bugseq.com",
access_token=token,
)
with bugseq_client.openapi_client.ApiClient(configuration) as api_client:
api = bugseq_client.openapi_client.JobsApi(api_client)
print("fetching jobs")
jobs_resp = api.list_analyses_v1_jobs_get()
for job in jobs_resp.job_runs:
print(
f"id={job.id} name={job.user_provided_name} status={job.job_status}"
)
print()
job_id = jobs_resp.job_runs[0].id
print(f"fetching outputs for job {job_id}")
results_dir = Path(f"downloaded-results-{job_id}")
results_resp = api.get_analysis_results_v1_jobs_job_id_results_get(job_id)
for output in results_resp.outputs:
print(f" output filename={output.filename} size={output.size}")
download_resp = (
api.download_analysis_result_v1_jobs_job_id_results_download_get(
job_id, output.filename
)
)
download_dst = results_dir / output.filename
download_dst.parent.mkdir(exist_ok=True)
download_url_to_file(download_resp.url, download_dst)
print(
f" downloaded filename={output.filename} dst={str(download_dst)}"
)
def main():
app = App()
app.run()
if __name__ == "__main__":
main()
Releasing to PyPI
docker run -it --rm \
-v "$(pwd)":/work \
-w /work \
python:3.13 \
bash
rm -rf dist/*
python3 -m pip install --upgrade build twine
python3 -m build
python3 -m twine upload dist/*
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bugseq_client-0.1.5.tar.gz
(52.8 kB
view details)
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
bugseq_client-0.1.5-py3-none-any.whl
(126.3 kB
view details)
File details
Details for the file bugseq_client-0.1.5.tar.gz.
File metadata
- Download URL: bugseq_client-0.1.5.tar.gz
- Upload date:
- Size: 52.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c77e83d63c2f74fa4b9090e1776f9f54d37f4bcd30c8eb32a6c1d3ae27eff54
|
|
| MD5 |
332f3b96af28623804d8297b071e1ec8
|
|
| BLAKE2b-256 |
4cc22bcb322ad0ade52623a25ccb34d6548547d5447e5ab75c6b7c42e001c0f0
|
File details
Details for the file bugseq_client-0.1.5-py3-none-any.whl.
File metadata
- Download URL: bugseq_client-0.1.5-py3-none-any.whl
- Upload date:
- Size: 126.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0c4d5d6a08b9c4890077aa3bfbf03f6eefe84adee0c49c62cfa9ed04dbebc6
|
|
| MD5 |
906ce24398e3754b4e911b0bf4ada5c7
|
|
| BLAKE2b-256 |
599c2f90f65ecf657030f5ec664ef43c6c638b0d699ae28c3ad8a19b7ab61164
|