wt-runner 0.2.0__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {wt_runner-0.2.0 → wt_runner-0.3.0}/CHANGELOG.md +4 -0
  2. {wt_runner-0.2.0/src/wt_runner.egg-info → wt_runner-0.3.0}/PKG-INFO +1 -1
  3. {wt_runner-0.2.0 → wt_runner-0.3.0}/pyproject.toml +1 -1
  4. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/_version.py +3 -3
  5. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/app.py +13 -0
  6. {wt_runner-0.2.0 → wt_runner-0.3.0/src/wt_runner.egg-info}/PKG-INFO +1 -1
  7. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/test_app.py +21 -0
  8. {wt_runner-0.2.0 → wt_runner-0.3.0}/README.md +0 -0
  9. {wt_runner-0.2.0 → wt_runner-0.3.0}/setup.cfg +0 -0
  10. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/__init__.py +0 -0
  11. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/py.typed +0 -0
  12. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/testing.py +0 -0
  13. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner/tracing.py +0 -0
  14. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner.egg-info/SOURCES.txt +0 -0
  15. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner.egg-info/dependency_links.txt +0 -0
  16. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner.egg-info/requires.txt +0 -0
  17. {wt_runner-0.2.0 → wt_runner-0.3.0}/src/wt_runner.egg-info/top_level.txt +0 -0
  18. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/__init__.py +0 -0
  19. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/conftest.py +0 -0
  20. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/test_gcp_imports.py +0 -0
  21. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/test_testing.py +0 -0
  22. {wt_runner-0.2.0 → wt_runner-0.3.0}/tests/test_tracing.py +0 -0
  23. {wt_runner-0.2.0 → wt_runner-0.3.0}/uv.lock +0 -0
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.0 — 2026-05-28
4
+
5
+ - Add `GET /params` endpoint that returns the workflow's `params.json` by proxying the compiled CLI's new `get params` metadata attribute ([#178](https://github.com/wildlife-dynamics/wt/pull/178))
6
+
3
7
  ## v0.2.0 — 2026-05-13
4
8
 
5
9
  - Register the new `SandboxInvoker` and `CloudRunJobsSandboxInvoker` in the `INVOKERS` dispatch map ([#164](https://github.com/wildlife-dynamics/wt/pull/164))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wt-runner
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: FastAPI application for workflow execution using wt-invokers
5
5
  License: BSD-3-Clause
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -167,7 +167,7 @@ extend-immutable-calls = [
167
167
 
168
168
  [tool.pixi.package]
169
169
  name = "wt-runner"
170
- version = "0.2.0"
170
+ version = "0.3.0"
171
171
 
172
172
  [tool.pixi.package.build]
173
173
  backend = { name = "pixi-build-python", version = "*", channels = ["conda-forge", "https://prefix.dev/pixi-build-backends"] }
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.2.0'
22
- __version_tuple__ = version_tuple = (0, 2, 0)
21
+ __version__ = version = '0.3.0'
22
+ __version_tuple__ = version_tuple = (0, 3, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g5f0f25f'
24
+ __commit_id__ = commit_id = 'g56358d1'
@@ -642,6 +642,19 @@ async def rjsf(invoker: AbstractInvoker = Depends(resolve_invoker)) -> dict[str,
642
642
  return await _get_metadata_attribute("rjsf", invoker)
643
643
 
644
644
 
645
+ @app.get("/params", status_code=200)
646
+ async def params(invoker: AbstractInvoker = Depends(resolve_invoker)) -> dict[str, Any]:
647
+ """Get the params json for the workflow.
648
+
649
+ Args:
650
+ invoker: Invoker instance
651
+
652
+ Returns:
653
+ Workflow's params.json
654
+ """
655
+ return await _get_metadata_attribute("params", invoker)
656
+
657
+
645
658
  @app.get("/data-connection-property-names", status_code=200)
646
659
  async def data_connection_property_names(
647
660
  invoker: AbstractInvoker = Depends(resolve_invoker),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wt-runner
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: FastAPI application for workflow execution using wt-invokers
5
5
  License: BSD-3-Clause
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -284,6 +284,27 @@ async def test_convert_unexpected_envelope():
284
284
  await _convert("formdata", "params", '{"input": "data"}', mock_invoker)
285
285
 
286
286
 
287
+ @pytest.mark.parametrize(
288
+ ("endpoint", "attr"),
289
+ [("/rjsf", "rjsf"), ("/params", "params")],
290
+ )
291
+ def test_metadata_endpoint_returns_invoker_output(client: TestClient, endpoint: str, attr: str):
292
+ """GET /rjsf and /params return the parsed CLI output and call ``get <attr>``."""
293
+ expected = {"some": "schema"}
294
+ mock_invoker = AsyncMock()
295
+ mock_invoker.check_output = AsyncMock(return_value=json.dumps(expected))
296
+
297
+ app.dependency_overrides[resolve_invoker] = lambda: mock_invoker
298
+ try:
299
+ response = client.get(endpoint)
300
+ finally:
301
+ app.dependency_overrides.pop(resolve_invoker, None)
302
+
303
+ assert response.status_code == 200
304
+ assert response.json() == expected
305
+ mock_invoker.check_output.assert_called_once_with(["get", attr])
306
+
307
+
287
308
  @pytest.mark.parametrize("endpoint", ["/formdata-to-params", "/params-to-formdata"])
288
309
  def test_convert_endpoint_422_body_matches_validation_error_response(
289
310
  client: TestClient, endpoint: str
File without changes
File without changes
File without changes
File without changes
File without changes