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.1rc2.tar.gz (16.4 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.1rc2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for py_tes-1.1.1rc2.tar.gz
Algorithm Hash digest
SHA256 ee89e0d832e28fc3c288d55044cbf6bf9d0ae8bf46b62f2aa8178cbe2f6b7aad
MD5 ff53bb9c3354a47c2e08001bd7a85aa6
BLAKE2b-256 5270b6a7cc1bf8417ea42e0a57c13fb01964fe2a691d953b1079cd268aab9bee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_tes-1.1.1rc2-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.12.9

File hashes

Hashes for py_tes-1.1.1rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 5a38569d7bc6e6b252f28c1ff8831900a1f6b8a23069a0e71703cd2c06de746c
MD5 dcd085054b0724ec516ba0fe6467b804
BLAKE2b-256 603ea517cfcfc5030d552cb679e2113494ae21452251a16034578f69ae67745c

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