whileai 0.61__tar.gz → 0.62__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.
- {whileai-0.61/whileai.egg-info → whileai-0.62}/PKG-INFO +1 -1
- {whileai-0.61 → whileai-0.62}/pyproject.toml +1 -1
- {whileai-0.61 → whileai-0.62}/whileai/init_evals.py +31 -4
- {whileai-0.61 → whileai-0.62/whileai.egg-info}/PKG-INFO +1 -1
- {whileai-0.61 → whileai-0.62}/LICENSE +0 -0
- {whileai-0.61 → whileai-0.62}/MANIFEST.in +0 -0
- {whileai-0.61 → whileai-0.62}/README.md +0 -0
- {whileai-0.61 → whileai-0.62}/setup.cfg +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/_env.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/auth.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/cli.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/ingest.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/py.typed +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/__main__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/data.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/environment.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/export.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/actionspace.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/adapters.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/agents.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/anthropic_backend.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/coverage.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/diversity.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/embeddings.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/explore.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/generator.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/offline_agent.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/scenarios.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/generate/usage_meter.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/ingest/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/ingest/otel.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/ingest/platform.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/ingest/traces.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/monitor.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/py.typed +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/run/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/run/config.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/run/engine.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/run/rows.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/run/spec.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/schema.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/schemas/row-v1.json +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/agreement.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/audit.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/checklist.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/curriculum.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/delta.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/grade_llm.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/grading.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/grounding.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/hack_scan.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/hygiene.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/judge_trust.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/judging.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/labels.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/llm_judge.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/logprobs.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/markers.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/optimize.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/pairwise.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/passat.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/preflight.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/privileged.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/publish_gate.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/quality.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/reference.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/rubric.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/spec.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/stage.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/stats.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/style.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/score/trace.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/simulation.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/training.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/base.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/code.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/math.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/structured.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/verify/text.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/world/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/simulations/world/sandbox.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/templates/__init__.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai/templates/evals.py +0 -0
- {whileai-0.61 → whileai-0.62}/whileai.egg-info/SOURCES.txt +0 -0
- {whileai-0.61 → whileai-0.62}/whileai.egg-info/dependency_links.txt +0 -0
- {whileai-0.61 → whileai-0.62}/whileai.egg-info/entry_points.txt +0 -0
- {whileai-0.61 → whileai-0.62}/whileai.egg-info/requires.txt +0 -0
- {whileai-0.61 → whileai-0.62}/whileai.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "whileai"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.62"
|
|
8
8
|
description = "While Python SDK: trace ingestion and verification client, plus agent simulations grounded in your tools and system prompt."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "Apache-2.0"}
|
|
@@ -174,13 +174,30 @@ def _returns_str(node: ast.FunctionDef | ast.AsyncFunctionDef) -> bool | None:
|
|
|
174
174
|
|
|
175
175
|
|
|
176
176
|
def _takes_one_string(node: ast.FunctionDef | ast.AsyncFunctionDef) -> bool:
|
|
177
|
+
"""One required positional (the message), anything after it defaulted.
|
|
178
|
+
|
|
179
|
+
``answer(message)``, ``answer(user_message: str, history=None)`` and
|
|
180
|
+
``chat(text, *, session=None)`` all qualify: the wrapper calls the
|
|
181
|
+
function with one positional argument and lets the defaults stand.
|
|
182
|
+
"""
|
|
177
183
|
args = node.args
|
|
178
|
-
|
|
184
|
+
positional = args.posonlyargs + args.args
|
|
185
|
+
if args.vararg or not positional:
|
|
186
|
+
return False
|
|
187
|
+
required = len(positional) - len(args.defaults)
|
|
188
|
+
if required != 1:
|
|
189
|
+
return False
|
|
190
|
+
if any(d is None for d in args.kw_defaults):
|
|
179
191
|
return False
|
|
180
|
-
|
|
181
|
-
if
|
|
192
|
+
first = positional[0]
|
|
193
|
+
if first.annotation is None:
|
|
182
194
|
return True
|
|
183
|
-
|
|
195
|
+
ann = first.annotation
|
|
196
|
+
if isinstance(ann, ast.Name):
|
|
197
|
+
return ann.id == "str"
|
|
198
|
+
if isinstance(ann, ast.Constant):
|
|
199
|
+
return ann.value == "str"
|
|
200
|
+
return True
|
|
184
201
|
|
|
185
202
|
|
|
186
203
|
def _read_module(path: Path, root: Path) -> ModuleFacts | None:
|
|
@@ -498,6 +515,16 @@ def init_evals(
|
|
|
498
515
|
_line("seed ids", ", ".join(found.ids) + " (read off your tool descriptions)"),
|
|
499
516
|
file=out_stream,
|
|
500
517
|
)
|
|
518
|
+
else:
|
|
519
|
+
print(
|
|
520
|
+
_line(
|
|
521
|
+
"seed ids",
|
|
522
|
+
f"none found: put the ids your world has (order numbers, account names) in "
|
|
523
|
+
f"SEEDS in {where}/run.py or in the tool descriptions, or every ask stops at "
|
|
524
|
+
"'which order?'",
|
|
525
|
+
),
|
|
526
|
+
file=out_stream,
|
|
527
|
+
)
|
|
501
528
|
|
|
502
529
|
print(f"\nwrote {', '.join(f'{where}/{name}' for name in files)}", file=out_stream)
|
|
503
530
|
if found.found_nothing:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|