verifiers 0.4.1.dev2__py3-none-any.whl → 0.4.1.dev4__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.
@@ -147,6 +147,9 @@ class Runtime(ABC):
147
147
  use a host `Tunnel` inward plus `expose` outward."""
148
148
 
149
149
  supports_user: ClassVar[bool] = False
150
+ supports_expose: ClassVar[bool] = True
151
+ """Whether `expose` can publish a port inside this runtime to the outside, so a
152
+ server here is reachable from another runtime."""
150
153
  """Whether `with_user` can run this runtime's commands as another existing user."""
151
154
 
152
155
  scripts_dir: ClassVar[str] = "/tmp/vf-scripts"
@@ -149,6 +149,7 @@ class PrimeProcess(RuntimeProcess):
149
149
 
150
150
  class PrimeRuntime(Runtime):
151
151
  supports_user: ClassVar[bool] = True
152
+ supports_expose: ClassVar[bool] = False
152
153
  is_local: ClassVar[bool] = False
153
154
 
154
155
  def __init__(self, config: PrimeConfig, name: str | None = None) -> None:
@@ -27,11 +27,21 @@ from verifiers.v1.utils.generic import concrete_type, prefix_validation_error
27
27
 
28
28
 
29
29
  def builtin_harness_ids() -> list[str]:
30
- """The harness ids that ship with verifiers (the `verifiers.v1.harnesses`
31
- subpackages)."""
30
+ """The harness ids that ship with verifiers: the `verifiers.v1.harnesses`
31
+ subpackages that export a `Harness`, by their hyphenated id."""
32
32
  from verifiers.v1 import harnesses
33
33
 
34
- return sorted(m.name for m in pkgutil.iter_modules(harnesses.__path__))
34
+ ids = []
35
+ for info in pkgutil.iter_modules(harnesses.__path__):
36
+ if not info.ispkg:
37
+ continue
38
+ module = importlib.import_module(f"{harnesses.__name__}.{info.name}")
39
+ try:
40
+ _plugin_class(module, Harness, "harness")
41
+ except (AttributeError, TypeError):
42
+ continue
43
+ ids.append(info.name.replace("_", "-"))
44
+ return sorted(ids)
35
45
 
36
46
 
37
47
  def narrow_plugin_field(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.4.1.dev2
3
+ Version: 0.4.1.dev4
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
@@ -91,6 +91,34 @@ uv tool install prime
91
91
  - The [docs](docs/) contain short, human-written guides and overviews about the architecture.
92
92
  - The [AGENTS.md](AGENTS.md) and [skills](skills/) are for coding agents and go into more details.
93
93
 
94
+ ## Contributing
95
+
96
+ We welcome community contributions. We use [issues](https://github.com/PrimeIntellect-ai/verifiers/issues) to track bugs and feature requests. If you hit a bug, a pain point, or have an idea for a feature, please open an issue.
97
+
98
+ Contributions are welcome via PR. Please follow these guidelines:
99
+
100
+ 1. Install the [pre-commit hooks](#pre-commit-hooks) so your code is formatted and type-checked.
101
+ 2. Keep your PR in "Draft" until it is ready for review.
102
+ 3. If your PR resolves an issue, link the issue in the PR description.
103
+ 4. Run the [tests](#tests) for the areas you touched.
104
+
105
+ ### Pre-commit hooks
106
+
107
+ ```bash
108
+ uv run pre-commit install
109
+ ```
110
+
111
+ ### Tests
112
+
113
+ Unit tests run one component in isolation, with no network, and mirror the `verifiers/v1` layout. Integration tests run real evals: they need `PRIME_API_KEY` and skip without it.
114
+
115
+ ```bash
116
+ uv run pytest tests/unit -n auto # unit
117
+ uv run pytest tests/integration -n 8 # integration
118
+ uv run pytest tests/integration/test_single_turn.py # one behavior
119
+ uv run pytest tests/integration -m "docker and codex" # one runtime and harness
120
+ ```
121
+
94
122
  ## Citation
95
123
 
96
124
  Originally created by Will Brown ([@willccbb](https://github.com/willccbb)).
@@ -143,12 +143,12 @@ verifiers/v1/mcp/server.py,sha256=Jqi8OMT8DnoZegXqM3UNNRzhVnbdrPEwx0DjOJo_K2A,13
143
143
  verifiers/v1/mcp/toolset.py,sha256=G2wzNdEMGLXoQUcrwF0TartJkqokNPI3o7YUOAaaa6U,1007
144
144
  verifiers/v1/runtimes/__init__.py,sha256=zOG9BYsK19VRNqvggqh3f6g1_UGIq7VjIBcK8kDlmnQ,3515
145
145
  verifiers/v1/runtimes/apptainer.py,sha256=Ru9QJna_l0goIzg71G-4RU_D-7wZUNz139S5TEvbzog,8211
146
- verifiers/v1/runtimes/base.py,sha256=5tRDqGGnYvpy2qDa-V6K5EuwLKjEeI9U4gZV_8TJQZE,19947
146
+ verifiers/v1/runtimes/base.py,sha256=4ma91e_M1KXOAx74dNBVPJoxrqnQaOuvbkSBlHMmujE,20128
147
147
  verifiers/v1/runtimes/container.py,sha256=_hNhGOo1Zvorj7THSj2UrZTkgewySUVJe4Kd777-QnI,12563
148
148
  verifiers/v1/runtimes/e2b.py,sha256=yBeocAutsv2l5x-C5IMqrlgBz6Cb-t6vWbX4qTjlztE,30306
149
149
  verifiers/v1/runtimes/limiters.py,sha256=rOfQJcMdYcLSKq8AL9O09BfGOLqpYmNgrCxXXNcHLmU,2849
150
150
  verifiers/v1/runtimes/modal.py,sha256=ZHA4vtNIZwTV-bnVUlambgc8l34j_ZulvtrwvvkE2Kg,17945
151
- verifiers/v1/runtimes/prime.py,sha256=EzKfjtBIfH8ehjrvOI4khm6BIEZ87r84B5gmgFJQvU4,20836
151
+ verifiers/v1/runtimes/prime.py,sha256=xo9vFn6gNQRhG_8DFPcSyKcTCcZRf4n5UPS7cnbRFm8,20880
152
152
  verifiers/v1/runtimes/subprocess.py,sha256=vnGVAI3J7pYmRei4MQ7MN4nb8SglLi70NtVTINMPVvQ,8855
153
153
  verifiers/v1/runtimes/docker/__init__.py,sha256=QoFOTMgRjoWD--O25Jsft9eD2vjcrMpJQyhfQXqWraI,21828
154
154
  verifiers/v1/runtimes/docker/egress.py,sha256=wtKWTL2_zFidxMR7lDRmfevQlOsl2Iyk88ebdO4Kqqw,24566
@@ -185,7 +185,7 @@ verifiers/v1/utils/generic.py,sha256=isejTTgRoFDJQOM18L3sWqfzBRQyYUkQvk-gNbrYAVc
185
185
  verifiers/v1/utils/git.py,sha256=MTRinOvG4EddfjdahHkFZUihHmhJ37n5ROtgjzjE1NA,8366
186
186
  verifiers/v1/utils/image.py,sha256=OFw_wdwVtbdwa8uJ3X3vYfhpUAi0CTH5HMBupjVsRRQ,282
187
187
  verifiers/v1/utils/interrupt.py,sha256=F-KKhc5ndPJJfhd3SuMqyqhXhA32FhCRy5KWFJpEoM4,1179
188
- verifiers/v1/utils/loaders.py,sha256=2TrgZK3MzKub1GnfaTVIQhlwF6q4qATXZCjicH6nT9c,12299
188
+ verifiers/v1/utils/loaders.py,sha256=WhIHRnAXfFpfCEgH35J1XHd95KRarmg62nxUkUB4HME,12670
189
189
  verifiers/v1/utils/logging.py,sha256=-zgaM-HZsgxumZ4wYNlRMZepp6JanCSjeL2wSVulwJM,2296
190
190
  verifiers/v1/utils/memory.py,sha256=ZkIvGk6uITAH5sKon65LifKPbvZr8mJ__PVc23FZpOQ,1835
191
191
  verifiers/v1/utils/paths.py,sha256=it_4JWf_8bPZe4TRcyvL7_KJ4fsbEsxhhIY_xA8Ikus,308
@@ -196,8 +196,8 @@ verifiers/v1/utils/scope.py,sha256=bzUEiWDOVdbj7dXOwGOlzsQ_-Xu0j9NR5TalQB-8TS8,8
196
196
  verifiers/v1/utils/score.py,sha256=493yJVMw8teCu9JxapxMFPFzI0hNUqdo0Y2nGW4kckk,6200
197
197
  verifiers/v1/utils/trace_store.py,sha256=RsCDonGR-bs-tvEstcppiJm3jFmAdIiG83fA5KtCbAw,2801
198
198
  verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
199
- verifiers-0.4.1.dev2.dist-info/METADATA,sha256=uXZ5xehaOE97n1XuQd9tCgplJWejMW0ol2p8zah57Qg,4221
200
- verifiers-0.4.1.dev2.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
201
- verifiers-0.4.1.dev2.dist-info/entry_points.txt,sha256=iugElcdWPKbQM7uFF0lZ8iUpHsNr17-BwEAAjJWxV3U,259
202
- verifiers-0.4.1.dev2.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
203
- verifiers-0.4.1.dev2.dist-info/RECORD,,
199
+ verifiers-0.4.1.dev4.dist-info/METADATA,sha256=5NhhAb0-7bgsTf7b1_EgiLAHQ26JMkqNFBmmmR5dsUs,5361
200
+ verifiers-0.4.1.dev4.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
201
+ verifiers-0.4.1.dev4.dist-info/entry_points.txt,sha256=iugElcdWPKbQM7uFF0lZ8iUpHsNr17-BwEAAjJWxV3U,259
202
+ verifiers-0.4.1.dev4.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
203
+ verifiers-0.4.1.dev4.dist-info/RECORD,,