mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +00:00
8bc2a5733e
* feat: Add runScriptByPath and runScriptByHash methods to SDK clients - Add runScriptByPath and runScriptByHash methods to TypeScript client - Add run_script_by_path and run_script_by_hash methods to Python client - Split functionality from existing methods that took both path and hash parameters - Add deprecation warnings to existing run_script methods - Maintain backward compatibility while encouraging use of focused methods Closes #6251 Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com> * Refactor SDK methods to eliminate code duplication - Extract common logic into internal helper methods - Python client: _run_script_async_internal() and _run_script_internal() - TypeScript client: _runScriptAsyncInternal() and _runScriptInternal() - Eliminate duplicated parameter processing and HTTP setup - Maintain exact same public API surface and functionality - Reduce lines of code while preserving all existing behaviors Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com> * fix ts and dev.nu for python * trade warnings.warn for logging.warning Signed-off-by: pyranota <pyra@duck.com> --------- Signed-off-by: pyranota <pyra@duck.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ruben Fiszel <rubenfiszel@users.noreply.github.com> Co-authored-by: pyranota <pyra@duck.com>
wmill
The core client for the Windmill platform.
Usage
Basic Usage
The wmill package has several methods at the top-level for the most frequent operations you will need.
The following are some common examples:
import time
import wmill
def main():
# Get the value of a variable
wmill.get_variable("u/user/variable_path")
# Run a script synchronously and get the result
wmill.run_script("f/pathto/script", args={"arg1": "value1"})
# Get the value of a resource
wmill.get_resource("u/user/resource_path")
# Set the script's state
wmill.set_state({"ts": time.time()})
# Get the script's state
wmill.get_state()
Advanced Usage
The wmill package also exposes the Windmill class, which is the core client for the Windmill platform.
import time
from wmill import Windmill
def main():
client = Windmill(
# token=... <- this is optional. otherwise the client will look for the WM_TOKEN env var
)
# Get the current version of the client
client.version
# Get the current user
client.user
# Convenience get and post methods exist for https://app.windmill.dev/openapi.html#/
# these are thin wrappers around the httpx library's get and post methods
# list worker groups
client.get("/configs/list_worker_groups")
# create a group
client.post(
f"/w/{client.workspace}/groups/create",
json={
"name": "my-group",
"summary": "my group summary",
}
)
# Get and set the state of the script
now = time.time()
client.state = {"ts": now}
assert client.state == {"ts": now}
# Run a job asynchronously
job_id = client.run_script_async(path="path/to/script")
# Get its status
client.get_job_status(job_id)
# Get its result
client.get_result(job_id)