Skip to main content

Library for communicating with the GA4GH Task Execution API

Project description

py-tes 🐍

Build Status Test Coverage License PyPI

py-tes is a library for interacting with servers implementing the GA4GH Task Execution Schema.

Quick Start ⚡

TES version py-tes version + branch Example Notebook (Coming soon!)
1.1 1.1.x (master) Open in Colab
1.0 1.0.0 (release/v1.0) Open in Colab

Install 🌀

Install py-tes from PyPI and run it in your script:

 pip install py-tes

Quick Start ⚡

import tes
import json

# Define task
task = tes.Task(
    executors=[
        tes.Executor(
            image="alpine",
            command=["echo", "hello"]
        )
    ]
)

# Create client
cli = tes.HTTPClient("http://localhost:8000", timeout=5)

# Create and run task
task_id = cli.create_task(task)
cli.wait(task_id, timeout=5)

# Fetch task info
task_info = cli.get_task(task_id, view="BASIC")
j = json.loads(task_info.as_json())

# Pretty print task info
print(json.dumps(j, indent=2))

How to...

Makes use of the objects above...

...export a model to a dictionary

task_dict = task.as_dict(drop_empty=False)

task_dict contents:

{'id': None, 'state': None, 'name': None, 'description': None, 'inputs': None, 'outputs': None, 'resources': None, 'executors': [{'image': 'alpine', 'command': ['echo', 'hello'], 'workdir': None, 'stdin': None, 'stdout': None, 'stderr': None, 'env': None}], 'volumes': None, 'tags': None, 'logs': None, 'creation_time': None}

...export a model to JSON

task_json = task.as_json()  # also accepts `drop_empty` arg

task_json contents:

{"executors": [{"image": "alpine", "command": ["echo", "hello"]}]}

...pretty print a model

print(task.as_json(indent=3))  # keyword args are passed to `json.dumps()`

Output:

{
  "executors": [
    {
      "image": "alpine",
      "command": ["echo", "hello"]
    }
  ]
}

...access a specific task from the task list

specific_task = tasks_list.tasks[5]

specific_task contents:

Task(id='393K43', state='COMPLETE', name=None, description=None, inputs=None, outputs=None, resources=None, executors=None, volumes=None, tags=None, logs=None, creation_time=None)

...iterate over task list items

for t in tasks_list[:3]:
    print(t.as_json(indent=3))

Output:

{
   "id": "task_A2GFS4",
   "state": "RUNNING"
}
{
   "id": "task_O8G1PZ",
   "state": "CANCELED"
}
{
   "id": "task_W246I6",
   "state": "COMPLETE"
}

...instantiate a model from a JSON representation

task_from_json = tes.client.unmarshal(task_json, tes.Task)

task_from_json contents:

Task(id=None, state=None, name=None, description=None, inputs=None, outputs=None, resources=None, executors=[Executor(image='alpine', command=['echo', 'hello'], workdir=None, stdin=None, stdout=None, stderr=None, env=None)], volumes=None, tags=None, logs=None, creation_time=None)

Which is equivalent to task:

print(task_from_json == task)

Output:

True

Credits

This project would not be possible without our collaborators at the University of Basel, Microsoft Research and AI, and the The GA4GH Cloud Workstream Team — thank you! 🙌

Additional Resources 📚

  • ga4gh-sdk: Generic SDK and CLI for GA4GH API services

  • GA4GH TES: Main page for the Task Execution Schema — a standardized schema and API for describing batch execution tasks.

  • TES GitHub: Source repo for the Task Execution Schema

  • Awesome TES: A curated list of awesome GA4GH TES projects and programs

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

py_tes-1.1.1rc1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

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

py_tes-1.1.1rc1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file py_tes-1.1.1rc1.tar.gz.

File metadata

  • Download URL: py_tes-1.1.1rc1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for py_tes-1.1.1rc1.tar.gz
Algorithm Hash digest
SHA256 ad88ba60c08e182baf03a3bc9e98170e94c8924f6d5c9410ab64045cadfd27d0
MD5 42394ae0fc3a2636c3dca969801a8f84
BLAKE2b-256 03f5345939bf846e602bcdff56c02c09fcfa5ce88d827b959a34fbd837224713

See more details on using hashes here.

File details

Details for the file py_tes-1.1.1rc1-py3-none-any.whl.

File metadata

  • Download URL: py_tes-1.1.1rc1-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for py_tes-1.1.1rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 c3604a375fa6d5c24ce23a1fa2500bbd0e62e99c27d8435129adb2de453b978e
MD5 32bcb293d75e4783a1f5cdab288c1ad9
BLAKE2b-256 9fb5584013ed57d0db167348d184a90ddbd530105a28c187fc2ca4c230239750

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