Skip to main content

Python client library for the AWE (Advanced Workflow Engine) API

Project description

pyawe

Python client library for the AWE (Advanced Workflow Engine) API.

Documentation

Installation

pip install pyawe

Quick start

from pyawe import AweClient

client = AweClient(
    api_url="http://localhost:8080",
    auth_url="http://localhost:8081",   # ullav-user-management service
)
client.login(email="user@example.com", password="secret")

# Workflows
workflows = client.workflows.list()
wf = client.workflows.create("Q1 Onboarding", is_template=False)
detail = client.workflows.get(wf.id)          # WorkflowWithTasks

# Tasks
task = client.tasks.create("Review docs", workflow_id=wf.id, is_start=True)
client.tasks.update(task.id, status="In Progress")
mine = client.tasks.list_mine()               # tasks assigned to me / my roles

# Jobs
job = client.jobs.create("Q1 Campaign")
client.jobs.clone_workflow(job.id, workflow_template_id)

# Notes
note = client.notes.create("task", task.id, "Looks good", is_shared=True)
client.notes.create_reply(note.id, "Agreed")

# Automated tasks
client.task_scripts.upsert(
    task.id,
    script_type="python",
    script_body="print('hello')",
    timeout_secs=60,
)
runs = client.task_runs.list(task.id)

Example: list your tasks

Print every task assigned to the authenticated user, along with its status and the workflow (and job, if any) it belongs to:

import os
from pyawe import AweClient

client = AweClient(
    api_url=os.environ["AWE_API_URL"],
    auth_url=os.environ.get("AWE_AUTH_URL", os.environ["AWE_API_URL"]),
)
client.login(email=os.environ["AWE_EMAIL"], password=os.environ["AWE_PASSWORD"])

for twc in client.tasks.list_mine():
    context = twc.workflow_name
    if twc.job_name:
        context = f"{twc.job_name} / {twc.workflow_name}"
    print(f"[{twc.task.status}]  {twc.task.name}  ({context})")

A runnable version of this script is at examples/list_my_tasks.py.

Authentication

AweClient authenticates against the ullav-user-management service, which issues the JWT accepted by the AWE server.

  • api_url — AWE server base URL (e.g. http://awe-server:8080)
  • auth_url — auth service base URL (e.g. http://ullav-user-management:8081); omit if both services are behind the same proxy

Call client.login(email, password) before any other method. Tokens expire according to the server's configuration; call login() again to refresh.

Resource clients

Attribute Resource
client.workflows Workflow CRUD, merge, duplicate, team
client.tasks Task CRUD, mine, decide, rework
client.task_links Link create/delete, next/previous tasks, data bindings
client.task_ports Port spec CRUD, input/output values
client.task_scripts Automated task script upsert/delete
client.task_runs Execution run history
client.task_team_roles Team-role assignment
client.jobs Job CRUD, clone workflow, team
client.execution_profiles Kubernetes execution profile CRUD
client.loop_blocks Loop block CRUD
client.notes Note CRUD, replies, folder move
client.note_folders Note folder CRUD

Error handling

from pyawe import AweAuthError, AweNotFoundError, AweValidationError

try:
    wf = client.workflows.get("non-existent-id")
except AweNotFoundError:
    print("not found")
except AweAuthError:
    client.login(email, password)  # token expired — re-authenticate
except AweValidationError as e:
    print("bad request:", e)
Exception HTTP status
AweAuthError 401 / 403, or login() not called
AweNotFoundError 404
AweValidationError 400
AweServerError 5xx
AweError base class

Status values

Use the Status and ScheduleStatus enumerations or plain strings:

from pyawe import Status, ScheduleStatus

client.tasks.update(task_id, status=Status.IN_PROGRESS)
client.tasks.update(task_id, status="In Progress")  # equivalent

Licence

MIT

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

pyawe-26.2.0.tar.gz (35.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyawe-26.2.0-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file pyawe-26.2.0.tar.gz.

File metadata

  • Download URL: pyawe-26.2.0.tar.gz
  • Upload date:
  • Size: 35.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for pyawe-26.2.0.tar.gz
Algorithm Hash digest
SHA256 528c91bcb83cee5e4fc2dbe525ddcc788486731c763f2afb4c31962f18ffd390
MD5 6054f350a6ff5215989342924e6b7e4b
BLAKE2b-256 676bfe30e24e4f1660586cc5473c8096c878c38bcc7fe9b7ed1bc25064a1b19d

See more details on using hashes here.

File details

Details for the file pyawe-26.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyawe-26.2.0-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for pyawe-26.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ab1a57c6794c512fc1718f7571ebecde6b3bef8233bc39c8e98e0a9d2b549b8
MD5 459c79071d185072cc82b6094a21b14c
BLAKE2b-256 b31b331a09191d1337f11c3b6b04b538b75e948e8a061f1505c70d86b85e755c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page