tdwokflow
Unofficial Treasure Workflow API client.
Installation
pip install tdworkflow
If you want to use development version, run as follows:
pip install git+https://github.com/chezou/tdworkflow.git
Usage
import os
from tdworkflow.client import Client
apikey = os.getenv("TD_API_KEY")
client = Client(site="us", apikey=apikey)
# Or, write endpoint explicitly
# client = Client(endpoint="api-workflow.treasuredata.com", apikey=apikey)
projects = client.projects("pandas-df")
secrets = {"td.apikey": apikey, "td.apiserver": "https://api.treasuredata.com", "test": "secret-foo"}
client.set_secrets(projects[0], secrets)
client.secrets(projects[0])
# ['td.apikey', 'td.apiserver', "test"]
client.delete_secrets(projects[0], ["test", "td.apiserver"])
Upload Project from GitHub
Before executing the example code, you have to install git-python
pip install gitpython
Clone example repository with git-python and upload a digdag project.
import tempfile
import os
import shutil
import tdworkflow
from git import Git
# Download example GitHub repositoory
tempdir = tempfile.gettempdir()
git_repo = "https://github.com/treasure-data/treasure-boxes/"
shutil.rmtree(os.path.join(tempdir, "treasure-boxes"))
try:
Git(tempdir).clone(git_repo)
print("Clone repository succeeded")
except Exception:
print("Repository clone failed")
raise
# Upload specific Workflow project
apikey = os.getenv("TD_API_KEY")
site = "us"
target_box = os.path.join("integration-box", "python")
target_path = os.path.join(tempdir, "treasure-boxes", target_box)
client = tdworkflow.client.Client(site=site, apikey=apikey)
project = client.create_project("my-project", target_path)
If you want to open Treasure Workflow console on your browser, you can get the workflow URL as the following:
CONSOLE_URL = {
"us": "https://console.treasuredata.com/app/workflows",
"eu01": "https://console.eu01.treasuredata.com/app/workflows",
"jp": "https://console.treasuredata.co.jp/app/workflows",
}
workflows = client.project_workflows(project)
workflows = list(filter(lambda w: w.name != "test", workflows))
if workflows:
print(f"Project created! Open {CONSOLE_URL[site]}/{workflows[0].id}/info on your browser and click 'New Run' button.")
else:
print("Project creation failed.")
Start workflow session
You can start a workflow session by using Client.start_attempt.
attempt = client.start_attempt(workflows[0])
# Wait attempt until finish. This may require few minutes.
attempt = client.wait_attempt(attempt)
Connect to open source digdag
Since Treasure Workflow is hosted digdag, tdworkflow is compatible with open source digdag.
Here is the example code to connect local digdag server.
>>> import tdworkflow
>>> import requests
>>> session = requests.Session()
>>> client = tdworkflow.client.Client(
... endpoint="localhost:65432", apikey="", _session=session, scheme="http")
>>> client.projects()
[Project(id=1, name='python-tdworkflow', revision='134fe2f9-ded3-4e7c-af8e-8a82d55d688b', archiveType='db', archiveMd5='5Lc6F6m3DtmBN4DA5MzK8A==', createdAt='2019-11-01T13:03:26Z', deletedAt=None, updatedAt='2019-11-01T13:03:26Z')]
Release files for tdworkflow 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tdworkflow-0.10.1.tar.gz | 34.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tdworkflow-0.10.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.6 kB
Release files / tdworkflow-0.10.1.tar.gz
| Download URL | tdworkflow-0.10.1.tar.gz |
|---|---|
| Size | 34.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a77353251f814c616c4600243f0c26a805089c0b4633ee270eaee1afe56f15c
|
|
BLAKE2b-256 checksum How to use checksums |
937352242440005fd2f34bcacf09d795370e665c3d64080c9063d45ceb49d4c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / tdworkflow-0.10.1-py3-none-any.whl
| Download URL | tdworkflow-0.10.1-py3-none-any.whl |
|---|---|
| Size | 35.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
859d21805c5ab79a0d93357a0fd6a47a74963a74b84c902765255d50e0d1a178
|
|
BLAKE2b-256 checksum How to use checksums |
223dd9578a28be269544c56816f9de5d612fc087c845c4d759b156ad8a479946
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|