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"])
Uplaod Project from GitHub
Before executing 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 clieck 'New Run' button.")
else:
print("Project creation failed.")
Start workflow session
You can start 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')]
Metadata
Release files for tdworkflow 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tdworkflow-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for tdworkflow-0.2.0-py3-none-any.whl |
Release files / tdworkflow-0.2.0-py3-none-any.whl
| Download URL | tdworkflow-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee3c0b5ee1f2d7930c360c430f9701aac6cec77caa70e31bad37c4dcfc735f60
|
|
BLAKE2b-256 checksum How to use checksums |
f64003ec02795f8a4b6d137035ef5fdbd62a51a87cb6d994546fe455c47f623d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.8.0
|
Security for tdworkflow 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.