* Update return type for 'get_resource' function Modified the 'get_resource' function in 'wmill/client.py' to additionally return a 'dict', providing support for dictionaries in addition to strings and None. This change caters towards use-cases where getting a dictionary resource is needed, enhancing flexibility of resource handling in Windmill client operations. Code updated in two locations for consistency. * Update README.md for python-client Expanded and updated the 'README.md' to include detailed explanations about the basic and advanced usage of the 'wmill' package. The previous version wasn't as comprehensive and lacked examples. Now it includes thorough usage guidance, additional explanations, and code examples. Change improves usability for new developers approaching the project.
84 lines
1.9 KiB
Markdown
84 lines
1.9 KiB
Markdown
# wmill
|
|
|
|
The core client for the [Windmill](https://windmill.dev) 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:
|
|
|
|
```python
|
|
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.
|
|
|
|
```python
|
|
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)
|
|
|
|
|
|
```
|