fleet-python 0.2.36__py3-none-any.whl → 0.2.38__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.

Potentially problematic release.


This version of fleet-python might be problematic. Click here for more details.

fleet/_async/tasks.py CHANGED
@@ -145,9 +145,16 @@ def verifier_from_string(
145
145
  try:
146
146
  import inspect
147
147
  from .verifiers import verifier, AsyncVerifierFunction
148
+ from fleet.verifiers.code import TASK_SUCCESSFUL_SCORE, TASK_FAILED_SCORE
149
+ from fleet.verifiers.db import IgnoreConfig
148
150
 
149
151
  # Create a local namespace for executing the code
150
- local_namespace = {}
152
+ local_namespace = {
153
+ 'TASK_SUCCESSFUL_SCORE': TASK_SUCCESSFUL_SCORE,
154
+ 'TASK_FAILED_SCORE': TASK_FAILED_SCORE,
155
+ 'IgnoreConfig': IgnoreConfig,
156
+ 'Environment': object # Add Environment type if needed
157
+ }
151
158
 
152
159
  # Execute the verifier code in the namespace
153
160
  exec(verifier_func, globals(), local_namespace)
fleet/tasks.py CHANGED
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
+ import asyncio
6
7
  from datetime import datetime
7
8
  from typing import Any, Dict, Optional, List
8
9
  from uuid import UUID
@@ -73,7 +74,12 @@ class Task(BaseModel):
73
74
  if self.verifier:
74
75
  import inspect
75
76
 
76
- result = self.verifier.remote(env, *args, **kwargs)
77
+ # Check if verifier has remote method (for decorated verifiers)
78
+ if hasattr(self.verifier, 'remote'):
79
+ result = self.verifier.remote(env, *args, **kwargs)
80
+ else:
81
+ # For verifiers created from string, call directly
82
+ result = self.verifier(env, *args, **kwargs)
77
83
 
78
84
  # If the result is a coroutine, we need to run it
79
85
  if inspect.iscoroutine(result):
@@ -144,12 +150,23 @@ def verifier_from_string(
144
150
  try:
145
151
  import inspect
146
152
  from .verifiers import verifier, SyncVerifierFunction
153
+ from .verifiers.code import TASK_SUCCESSFUL_SCORE, TASK_FAILED_SCORE
154
+ from .verifiers.db import IgnoreConfig
155
+
156
+ # Create a globals namespace with all required imports
157
+ exec_globals = globals().copy()
158
+ exec_globals.update({
159
+ 'TASK_SUCCESSFUL_SCORE': TASK_SUCCESSFUL_SCORE,
160
+ 'TASK_FAILED_SCORE': TASK_FAILED_SCORE,
161
+ 'IgnoreConfig': IgnoreConfig,
162
+ 'Environment': object # Add Environment type if needed
163
+ })
147
164
 
148
165
  # Create a local namespace for executing the code
149
166
  local_namespace = {}
150
167
 
151
168
  # Execute the verifier code in the namespace
152
- exec(verifier_func, globals(), local_namespace)
169
+ exec(verifier_func, exec_globals, local_namespace)
153
170
 
154
171
  # Find the function that was defined
155
172
  func_obj = None
@@ -161,8 +178,30 @@ def verifier_from_string(
161
178
  if func_obj is None:
162
179
  raise ValueError("No function found in verifier code")
163
180
 
164
- # Create an AsyncVerifierFunction instance
165
- verifier_instance = SyncVerifierFunction(func_obj, verifier_key, verifier_id)
181
+ # Create a wrapper function that provides the necessary globals
182
+ def wrapped_verifier(env, *args, **kwargs):
183
+ # Set up globals for the function execution
184
+ func_globals = func_obj.__globals__.copy() if hasattr(func_obj, '__globals__') else {}
185
+ func_globals.update({
186
+ 'TASK_SUCCESSFUL_SCORE': TASK_SUCCESSFUL_SCORE,
187
+ 'TASK_FAILED_SCORE': TASK_FAILED_SCORE,
188
+ 'IgnoreConfig': IgnoreConfig
189
+ })
190
+
191
+ # Create a new function with the updated globals
192
+ import types
193
+ new_func = types.FunctionType(
194
+ func_obj.__code__,
195
+ func_globals,
196
+ func_obj.__name__,
197
+ func_obj.__defaults__,
198
+ func_obj.__closure__
199
+ )
200
+
201
+ return new_func(env, *args, **kwargs)
202
+
203
+ # Create an AsyncVerifierFunction instance with the wrapped function
204
+ verifier_instance = SyncVerifierFunction(wrapped_verifier, verifier_key, verifier_id)
166
205
 
167
206
  # Store additional metadata
168
207
  verifier_instance._verifier_code = verifier_func
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fleet-python
3
- Version: 0.2.36
3
+ Version: 0.2.38
4
4
  Summary: Python SDK for Fleet environments
5
5
  Author-email: Fleet AI <nic@fleet.so>
6
6
  License: Apache-2.0
@@ -26,7 +26,7 @@ fleet/config.py,sha256=uY02ZKxVoXqVDta-0IMWaYJeE1CTXF_fA9NI6QUutmU,319
26
26
  fleet/exceptions.py,sha256=fUmPwWhnT8SR97lYsRq0kLHQHKtSh2eJS0VQ2caSzEI,5055
27
27
  fleet/global_client.py,sha256=frrDAFNM2ywN0JHLtlm9qbE1dQpnQJsavJpb7xSR_bU,1072
28
28
  fleet/models.py,sha256=9tDjgcgKPMnf-R_MDh-Ocp_UMbyJ8tJyjb15XqU0N94,12454
29
- fleet/tasks.py,sha256=vLFHHzgk7BBvDzGY1urEB_bzPaoV-kxNdRIFDttVqXo,7245
29
+ fleet/tasks.py,sha256=PcqwRktjR7o7surwWCgDScFp6PMl2YguJSs8VgZYs0g,8968
30
30
  fleet/types.py,sha256=L4Y82xICf1tzyCLqhLYUgEoaIIS5h9T05TyFNHSWs3s,652
31
31
  fleet/_async/__init__.py,sha256=lrnDD6N9p0Oqpi_djxTnxh8I5F7nA7KNn0khciGmgpg,6747
32
32
  fleet/_async/base.py,sha256=oisVTQsx0M_yTmyQJc3oij63uKZ97MHz-xYFsWXxQE8,9202
@@ -34,7 +34,7 @@ fleet/_async/client.py,sha256=WNaBwHJWRrOyYB79_qujdKkRMPmhpSucHbfTic9uc6A,22335
34
34
  fleet/_async/exceptions.py,sha256=fUmPwWhnT8SR97lYsRq0kLHQHKtSh2eJS0VQ2caSzEI,5055
35
35
  fleet/_async/global_client.py,sha256=4WskpLHbsDEgWW7hXMD09W-brkp4euy8w2ZJ88594rQ,1103
36
36
  fleet/_async/models.py,sha256=9tDjgcgKPMnf-R_MDh-Ocp_UMbyJ8tJyjb15XqU0N94,12454
37
- fleet/_async/tasks.py,sha256=hyBn2QWobcvG1k5snxxvYqohmpSv43iRghA-g6jx8Ro,7320
37
+ fleet/_async/tasks.py,sha256=pY01ImjiX0CPWfTy0HcOUjLSeqzItigOhWUAAAiSj6M,7685
38
38
  fleet/_async/env/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  fleet/_async/env/client.py,sha256=9GOSkEWNncwTtiZNaJ2vNGrFCPutyan9lBNhD87dAzQ,1059
40
40
  fleet/_async/instance/__init__.py,sha256=PtmJq8J8bh0SOQ2V55QURz5GJfobozwtQoqhaOk3_tI,515
@@ -67,10 +67,10 @@ fleet/verifiers/decorator.py,sha256=nAP3O8szXu7md_kpwpz91hGSUNEVLYjwZQZTkQlV1DM,
67
67
  fleet/verifiers/parse.py,sha256=0bAbj9VvT__yU4ZVREUK-Tn9dukh9LCpmfVsgj1DfP4,8508
68
68
  fleet/verifiers/sql_differ.py,sha256=dmiGCFXVMEMbAX519OjhVqgA8ZvhnvdmC1BVpL7QCF0,6490
69
69
  fleet/verifiers/verifier.py,sha256=53oBWAf0yy3bZmZx9eH9AWIf65H7OP2UUm0YwWCL6Mc,14286
70
- fleet_python-0.2.36.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
70
+ fleet_python-0.2.38.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
71
71
  scripts/fix_sync_imports.py,sha256=X9fWLTpiPGkSHsjyQUDepOJkxOqw1DPj7nd8wFlFqLQ,8368
72
72
  scripts/unasync.py,sha256=vWVQxRWX8SRZO5cmzEhpvnG_REhCWXpidIGIpWmEcvI,696
73
- fleet_python-0.2.36.dist-info/METADATA,sha256=-MAGjnqjasQs79jubQHTQaWExDt6DsRPgLynJuDZzpM,3354
74
- fleet_python-0.2.36.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
75
- fleet_python-0.2.36.dist-info/top_level.txt,sha256=_3DSmTohvSDf3AIP_BYfGzhwO1ECFwuzg83X-wHCx3Y,23
76
- fleet_python-0.2.36.dist-info/RECORD,,
73
+ fleet_python-0.2.38.dist-info/METADATA,sha256=72nH4_f7klXmhxV8TGFNHBSejrFWJFxMJHoYq75RhBc,3354
74
+ fleet_python-0.2.38.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
75
+ fleet_python-0.2.38.dist-info/top_level.txt,sha256=_3DSmTohvSDf3AIP_BYfGzhwO1ECFwuzg83X-wHCx3Y,23
76
+ fleet_python-0.2.38.dist-info/RECORD,,