Library for communicating with the GA4GH Task Execution API
Project description
py-tes 🐍
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) | |
| 1.0 | 1.0.0 (release/v1.0) |
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file py_tes-1.1.2.tar.gz.
File metadata
- Download URL: py_tes-1.1.2.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2168d0c71061ad52c00cf42368f7e57341966587f8ac0ca147b9c0cb75bc858d
|
|
| MD5 |
3aa74673e3212807a0668498fd854a0a
|
|
| BLAKE2b-256 |
4a519c3dfaa218ac8d824864a59ffffcd60903056f50339797a6cecdde813607
|
File details
Details for the file py_tes-1.1.2-py3-none-any.whl.
File metadata
- Download URL: py_tes-1.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a4a3cd584ef47d41dde859e0404456225103ccbbe16fbb15d518e52c4994bc7
|
|
| MD5 |
eb7b229b018fee91449a60e30cd81f24
|
|
| BLAKE2b-256 |
74241f504b4e4e27bdd9d4feef4a7a6323d86e6c9ef052164a56831a37b7c566
|