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.3rc1.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.3rc1-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for py_tes-1.1.3rc1.tar.gz
Algorithm Hash digest
SHA256 c7e297600e118cfbed8c9ce1c88c2c2b9b812180d94e69711bc30d42b4dce5f2
MD5 5b7ec0cb032afdd38c87e3ea33395518
BLAKE2b-256 aae323dc60de90019b537e3e738e23d21ebfb544f0c77410dbe63b2fb0d830c1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for py_tes-1.1.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c8ef1e644289629c8cb630259920678430b6ca9f8e8fd46d240aedeeb30dfbc
MD5 22b6c8085403957a654fc36ea457aabd
BLAKE2b-256 83cb5d8ba15bebaee91f5a53c99f936760dc15c75348f2219b2b65b64ee60138

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