verifiers 0.2.2.dev81__py3-none-any.whl → 0.2.2.dev82__py3-none-any.whl

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.
@@ -140,6 +140,8 @@ class HarborData(TaskData):
140
140
  tags: list[str] = Field(default_factory=list)
141
141
  task_dir: str = ""
142
142
  """Host path to the task dir; used to stage tests/ to verify."""
143
+ upload_environment: bool = False
144
+ """Whether to stage environment/ into the workdir."""
143
145
  verifier_env: dict[str, str] = Field(default_factory=dict)
144
146
  """Raw [verifier.env] entries (literals or `${VAR}`/`${VAR:-default}` templates).
145
147
  Resolved against the host environment at scoring time, like `harbor run` — so a
@@ -155,6 +157,27 @@ class HarborData(TaskData):
155
157
  class HarborTask(Task[HarborData]):
156
158
  """Stage and run Harbor's verifier inside the task's live runtime."""
157
159
 
160
+ async def setup(self, runtime: Runtime) -> None:
161
+ if not self.data.upload_environment:
162
+ return
163
+ await runtime.write(
164
+ "/tmp/environment.tgz",
165
+ make_tar(Path(self.data.task_dir) / "environment"),
166
+ )
167
+ result = await runtime.run(
168
+ [
169
+ "sh",
170
+ "-c",
171
+ "tar --no-same-owner -xzf /tmp/environment.tgz && rm /tmp/environment.tgz",
172
+ ],
173
+ {},
174
+ )
175
+ if result.exit_code:
176
+ raise RuntimeError(
177
+ f"environment setup failed (exit {result.exit_code}): "
178
+ f"{(result.stderr or result.stdout).strip()[-500:]}"
179
+ )
180
+
158
181
  async def finalize(self, trace: Trace, runtime: Runtime) -> None:
159
182
  """Run Harbor's collect hooks while the agent's box is still alive.
160
183
 
@@ -437,6 +460,7 @@ def resolve_image(
437
460
 
438
461
  def parse_task(task_dir: Path, idx: int, harbor_config: HarborConfig) -> HarborData:
439
462
  # Harbor is optional, so imports stay deferred until a Harbor task loads.
463
+ from harbor.environments.definition import should_upload_environment_dir
440
464
  from harbor.models.task.config import NetworkMode
441
465
  from harbor.models.task.task import Task as HarborModelTask
442
466
 
@@ -444,6 +468,11 @@ def parse_task(task_dir: Path, idx: int, harbor_config: HarborConfig) -> HarborD
444
468
  parsed = harbor_task.config
445
469
  artifacts, hooks, verifier = parse_verifier_extras(task_dir, parsed, harbor_config)
446
470
  environment = parsed.environment
471
+ environment_dir = task_dir / "environment"
472
+ upload_environment = should_upload_environment_dir(
473
+ environment_dir,
474
+ docker_image=environment.docker_image,
475
+ )
447
476
  network = parsed.agent.explicit_phase_policy() or environment.resolve_baseline()
448
477
  task, meta = parsed.task, parsed.metadata
449
478
  authors = (
@@ -499,6 +528,7 @@ def parse_task(task_dir: Path, idx: int, harbor_config: HarborConfig) -> HarborD
499
528
  category=meta.get("category"),
500
529
  tags=meta.get("tags", []),
501
530
  task_dir=str(task_dir),
531
+ upload_environment=upload_environment,
502
532
  verifier_env=parsed.verifier.env,
503
533
  artifacts=artifacts,
504
534
  collect=hooks,
@@ -658,9 +688,9 @@ def verifier_env(task: HarborData) -> dict[str, str]:
658
688
  return resolve_env_vars(task.verifier_env)
659
689
 
660
690
 
661
- # Downloaded test directories are immutable. Cache only the latest archive to
662
- # bound memory while reusing it across rollouts of the current task.
663
- @lru_cache(maxsize=1)
691
+ # Downloaded task directories are immutable. Cache the current task's environment
692
+ # and tests to bound memory while reusing both archives across rollouts.
693
+ @lru_cache(maxsize=2)
664
694
  def make_tar(directory: Path) -> bytes:
665
695
  buffer = io.BytesIO()
666
696
  with tarfile.open(fileobj=buffer, mode="w:gz") as tar:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.2.dev81
3
+ Version: 0.2.2.dev82
4
4
  Summary: Verifiers: Environments for LLM Reinforcement Learning
5
5
  Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
6
6
  Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
@@ -311,7 +311,7 @@ verifiers/v1/serve/types.py,sha256=3F4IIGIQgYITlEFxeX3uNJYrJlKugFrPTozbDNwDfBY,2
311
311
  verifiers/v1/tasksets/__init__.py,sha256=b62O4WDNbGfJH_4NjYmznn5otWovdfvUgJZyoIZyLh8,596
312
312
  verifiers/v1/tasksets/harbor/__init__.py,sha256=JxThzHFYEkuSfQbVf3pEnjordgdfe4MU-QOsSSbyovU,326
313
313
  verifiers/v1/tasksets/harbor/env.py,sha256=bNF5dfbhcsdrd_8JmW5ved8Yk-mHhrOgKkVEA563qEo,5847
314
- verifiers/v1/tasksets/harbor/taskset.py,sha256=vmDjP7dhxchZ5-J9IUeiATwwchxUvAeciCevD6W_N4c,29032
314
+ verifiers/v1/tasksets/harbor/taskset.py,sha256=sD_133M7k9RNw8FmVz_3e22hi-lAaF8G4l6VjCM56Uc,30140
315
315
  verifiers/v1/tasksets/lean/__init__.py,sha256=oyv-GbJQBvCyGwo7Ysxm2NjZW-aX4j1uDoHU0f-E7xQ,767
316
316
  verifiers/v1/tasksets/lean/scoring.py,sha256=sfzsT6MUK0zdMgAQ57_P_0CBaPHy3M7go71QMr5hDrs,10599
317
317
  verifiers/v1/tasksets/lean/taskset.py,sha256=XgUqX0uJvHC8sKFhbK92iu6nUGcPuXCUpI3ZBhDcb7c,9025
@@ -337,8 +337,8 @@ verifiers/v1/utils/platform.py,sha256=56Ixmk1SER6q5LvzyYcA0hgzGpzhxKZL8Hiqp4c_XV
337
337
  verifiers/v1/utils/retries.py,sha256=Y2ZgrAjn-qNkRKZP_RVNL_7EK0iaRcZeCa404lpGYi4,5417
338
338
  verifiers/v1/utils/score.py,sha256=-R5Cog14r_tJ6Q_oOfGr5VPAm2CCUhofYZB6B9lm4wM,5787
339
339
  verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
340
- verifiers-0.2.2.dev81.dist-info/METADATA,sha256=RsTZSMxzSbJsukFkrvjA45a6IZtUOBxWSpfT6cs1LnU,4545
341
- verifiers-0.2.2.dev81.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
342
- verifiers-0.2.2.dev81.dist-info/entry_points.txt,sha256=v6v0QT9vVExnfn4br42MostI_o3f3ZbWYlTormz-U3g,515
343
- verifiers-0.2.2.dev81.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
344
- verifiers-0.2.2.dev81.dist-info/RECORD,,
340
+ verifiers-0.2.2.dev82.dist-info/METADATA,sha256=hwKzS7edm6kC2DKpuNCPpith5Nc6wcowpC3UCtG6eqc,4545
341
+ verifiers-0.2.2.dev82.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
342
+ verifiers-0.2.2.dev82.dist-info/entry_points.txt,sha256=v6v0QT9vVExnfn4br42MostI_o3f3ZbWYlTormz-U3g,515
343
+ verifiers-0.2.2.dev82.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
344
+ verifiers-0.2.2.dev82.dist-info/RECORD,,