skilltest-pytest 0.3.0__tar.gz → 0.4.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.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skilltest-pytest
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: pytest integration for skilltest: auto-collect *.skilltest.yaml cases as pytest tests, built on skilltest-sdk.
5
5
  Author: Nick DeRobertis
6
6
  License-Expression: MIT
7
7
  Requires-Python: >=3.12
8
8
  Requires-Dist: pytest>=8
9
- Requires-Dist: skilltest-sdk==0.3.0
9
+ Requires-Dist: skilltest-sdk==0.4.0
10
10
  Description-Content-Type: text/markdown
11
11
 
12
12
  # skilltest-pytest
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "skilltest-pytest"
3
- version = "0.3.0"
3
+ version = "0.4.0"
4
4
  description = "pytest integration for skilltest: auto-collect *.skilltest.yaml cases as pytest tests, built on skilltest-sdk."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  license = "MIT"
8
8
  authors = [{ name = "Nick DeRobertis" }]
9
9
  dependencies = [
10
- "skilltest-sdk==0.3.0",
10
+ "skilltest-sdk==0.4.0",
11
11
  "pytest>=8",
12
12
  ]
13
13
 
@@ -25,10 +25,13 @@ from skilltest_sdk import (
25
25
  Message,
26
26
  NumericDetail,
27
27
  Report,
28
+ SkillStream,
28
29
  SkilltestError,
29
30
  SkilltestProviderError,
30
31
  SkilltestUsageError,
32
+ StreamEvent,
31
33
  Summary,
34
+ ToolEvent,
32
35
  Transcript,
33
36
  Usage,
34
37
  ValidationFinding,
@@ -38,6 +41,8 @@ from skilltest_sdk import (
38
41
  failed_evals,
39
42
  failed_runs,
40
43
  run_skill,
44
+ stream_skill,
45
+ tool_calls,
41
46
  validate_skill,
42
47
  )
43
48
 
@@ -52,11 +57,14 @@ __all__ = [
52
57
  "Message",
53
58
  "NumericDetail",
54
59
  "Report",
60
+ "SkillStream",
55
61
  "SkilltestError",
56
62
  "SkilltestFailure",
57
63
  "SkilltestProviderError",
58
64
  "SkilltestUsageError",
65
+ "StreamEvent",
59
66
  "Summary",
67
+ "ToolEvent",
60
68
  "Transcript",
61
69
  "Usage",
62
70
  "ValidationFinding",
@@ -66,5 +74,7 @@ __all__ = [
66
74
  "failed_evals",
67
75
  "failed_runs",
68
76
  "run_skill",
77
+ "stream_skill",
78
+ "tool_calls",
69
79
  "validate_skill",
70
80
  ]
@@ -8,11 +8,12 @@ whose eval fails — can be asserted on too.
8
8
 
9
9
  from __future__ import annotations
10
10
 
11
+ import asyncio
11
12
  from pathlib import Path
12
13
 
13
14
  import pytest
14
15
 
15
- from skilltest_pytest import describe_failures, run_skill
16
+ from skilltest_pytest import describe_failures, run_skill, stream_skill, tool_calls
16
17
 
17
18
  SKILL_MD = """\
18
19
  ---
@@ -40,6 +41,20 @@ def test_sdk_api_is_reexported_and_works(cases: Path) -> None:
40
41
  assert report.passed, describe_failures(report)
41
42
 
42
43
 
44
+ def test_tool_events_and_streaming_reexported_and_work(cases: Path) -> None:
45
+ # The tool-event and streaming surfaces are re-exported from the plugin too.
46
+ report = run_skill(cases / "tool_events.yaml")
47
+ assert [c.name for c in tool_calls(report.runs[0].transcript)] == ["edit_file", "bash"]
48
+
49
+ async def go() -> list[str | None]:
50
+ names: list[str | None] = []
51
+ async for ev in stream_skill(cases / "tool_events.yaml"):
52
+ names.append(ev.event.name)
53
+ return names
54
+
55
+ assert asyncio.run(go()) == ["edit_file", "bash"]
56
+
57
+
43
58
  def test_collected_case_passes(pytester: pytest.Pytester) -> None:
44
59
  write_skill(pytester.path)
45
60
  pytester.makefile(
@@ -189,7 +189,7 @@ wheels = [
189
189
 
190
190
  [[package]]
191
191
  name = "skilltest-pytest"
192
- version = "0.3.0"
192
+ version = "0.4.0"
193
193
  source = { editable = "." }
194
194
  dependencies = [
195
195
  { name = "pytest" },
@@ -216,7 +216,7 @@ dev = [
216
216
 
217
217
  [[package]]
218
218
  name = "skilltest-sdk"
219
- version = "0.3.0"
219
+ version = "0.4.0"
220
220
  source = { editable = "../../sdks/python" }
221
221
  dependencies = [
222
222
  { name = "pydantic" },