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

examples/export_tasks.py CHANGED
@@ -21,6 +21,12 @@ def main():
21
21
  help="Optional list of task keys to export (space-separated)",
22
22
  default=None,
23
23
  )
24
+ parser.add_argument(
25
+ "--task-project-key",
26
+ "-tpk",
27
+ help="Optional task project key to filter tasks",
28
+ default=None,
29
+ )
24
30
  parser.add_argument(
25
31
  "--output",
26
32
  "-o",
@@ -31,9 +37,17 @@ def main():
31
37
  args = parser.parse_args()
32
38
 
33
39
  # Validate that only one filter is specified
34
- if args.project_key and args.task_keys:
40
+ filters_specified = sum(
41
+ [
42
+ args.project_key is not None,
43
+ args.task_keys is not None,
44
+ args.task_project_key is not None,
45
+ ]
46
+ )
47
+
48
+ if filters_specified > 1:
35
49
  parser.error(
36
- "Cannot specify both --project-key and --task-keys. Use one or neither."
50
+ "Cannot specify multiple filters. Use only one of --project-key, --task-keys, or --task-project-key."
37
51
  )
38
52
 
39
53
  # Get account info
@@ -49,6 +63,9 @@ def main():
49
63
  f"Loading {len(args.task_keys)} specific task(s): {', '.join(args.task_keys)}"
50
64
  )
51
65
  tasks = fleet.load_tasks(keys=args.task_keys)
66
+ elif args.task_project_key:
67
+ print(f"Loading tasks from task project: {args.task_project_key}")
68
+ tasks = fleet.load_tasks(task_project_key=args.task_project_key)
52
69
  else:
53
70
  print("Loading all tasks")
54
71
  tasks = fleet.load_tasks()
fleet/_async/client.py CHANGED
@@ -397,6 +397,7 @@ class AsyncFleet:
397
397
  verifier_id=verifier_id, # Set verifier_id so _rebuild_verifier works
398
398
  verifier_sha=verifier_sha, # Set verifier_sha
399
399
  metadata=task_json.get("metadata", {}), # Default empty metadata
400
+ output_json_schema=task_json.get("output_json_schema"), # JSON schema for output
400
401
  )
401
402
  return task
402
403
 
@@ -407,6 +408,7 @@ class AsyncFleet:
407
408
  version: Optional[str] = None,
408
409
  team_id: Optional[str] = None,
409
410
  project_key: Optional[str] = None,
411
+ task_project_key: Optional[str] = None,
410
412
  data_id: Optional[str] = None,
411
413
  data_version: Optional[str] = None,
412
414
  ) -> List[Task]:
@@ -418,6 +420,7 @@ class AsyncFleet:
418
420
  version: Optional version to filter tasks by (client-side filter)
419
421
  team_id: Optional team_id to filter by (admin only)
420
422
  project_key: Optional project key to filter tasks by
423
+ task_project_key: Optional task project key to filter tasks by
421
424
  data_id: Optional data identifier to filter tasks by
422
425
  data_version: Optional data version to filter tasks by
423
426
 
@@ -433,6 +436,8 @@ class AsyncFleet:
433
436
  params["team_id"] = team_id
434
437
  if project_key is not None:
435
438
  params["project_key"] = project_key
439
+ if task_project_key is not None:
440
+ params["task_project_key"] = task_project_key
436
441
  if data_id is not None:
437
442
  params["data_id"] = data_id
438
443
  if data_version is not None:
@@ -547,6 +552,7 @@ class AsyncFleet:
547
552
  verifier_func=verifier_func, # Set verifier code
548
553
  verifier=verifier, # Use created verifier or None
549
554
  metadata={}, # Default empty metadata
555
+ output_json_schema=getattr(task_response, "output_json_schema", None), # Get output_json_schema if available
550
556
  )
551
557
  tasks.append(task)
552
558
 
fleet/_async/models.py CHANGED
@@ -154,6 +154,7 @@ class TaskRequest(BaseModel):
154
154
  verifier_id: Optional[str] = Field(None, title="Verifier Id")
155
155
  version: Optional[str] = Field(None, title="Version")
156
156
  env_variables: Optional[Dict[str, Any]] = Field(None, title="Env Variables")
157
+ output_json_schema: Optional[Dict[str, Any]] = Field(None, title="Output Json Schema")
157
158
 
158
159
 
159
160
  class TaskUpdateRequest(BaseModel):
@@ -180,8 +181,11 @@ class TaskResponse(BaseModel):
180
181
  verifier_id: Optional[str] = Field(None, title="Verifier Id")
181
182
  verifier_func: Optional[str] = Field(None, title="Verifier Func")
182
183
  version: Optional[str] = Field(None, title="Version")
184
+ data_id: Optional[str] = Field(None, title="Data Id")
185
+ data_version: Optional[str] = Field(None, title="Data Version")
183
186
  env_variables: Optional[Dict[str, Any]] = Field(None, title="Env Variables")
184
187
  verifier: Optional[VerifierData] = Field(None, title="Verifier")
188
+ output_json_schema: Optional[Dict[str, Any]] = Field(None, title="Output Json Schema")
185
189
 
186
190
 
187
191
  class ValidationError(BaseModel):
fleet/_async/tasks.py CHANGED
@@ -38,6 +38,9 @@ class Task(BaseModel):
38
38
  metadata: Optional[Dict[str, Any]] = Field(
39
39
  default_factory=dict, description="Additional task metadata"
40
40
  )
41
+ output_json_schema: Optional[Dict[str, Any]] = Field(
42
+ None, description="JSON schema for expected output format"
43
+ )
41
44
 
42
45
  @validator("key")
43
46
  def validate_key_format(cls, v):
@@ -329,6 +332,7 @@ async def load_tasks(
329
332
  version: Optional[str] = None,
330
333
  team_id: Optional[str] = None,
331
334
  project_key: Optional[str] = None,
335
+ task_project_key: Optional[str] = None,
332
336
  data_id: Optional[str] = None,
333
337
  data_version: Optional[str] = None,
334
338
  ) -> List[Task]:
@@ -340,6 +344,7 @@ async def load_tasks(
340
344
  version: Optional version to filter tasks by
341
345
  team_id: Optional team_id to filter by (admin only)
342
346
  project_key: Optional project key to filter tasks by
347
+ task_project_key: Optional task project key to filter tasks by
343
348
  data_id: Optional data identifier to filter tasks by
344
349
  data_version: Optional data version to filter tasks by
345
350
 
@@ -359,6 +364,7 @@ async def load_tasks(
359
364
  version=version,
360
365
  team_id=team_id,
361
366
  project_key=project_key,
367
+ task_project_key=task_project_key,
362
368
  data_id=data_id,
363
369
  data_version=data_version,
364
370
  )
fleet/client.py CHANGED
@@ -395,6 +395,7 @@ class Fleet:
395
395
  verifier_id=verifier_id, # Set verifier_id so _rebuild_verifier works
396
396
  verifier_sha=verifier_sha, # Set verifier_sha
397
397
  metadata=task_json.get("metadata", {}), # Default empty metadata
398
+ output_json_schema=task_json.get("output_json_schema"), # JSON schema for output
398
399
  )
399
400
  return task
400
401
 
@@ -405,6 +406,7 @@ class Fleet:
405
406
  version: Optional[str] = None,
406
407
  team_id: Optional[str] = None,
407
408
  project_key: Optional[str] = None,
409
+ task_project_key: Optional[str] = None,
408
410
  data_id: Optional[str] = None,
409
411
  data_version: Optional[str] = None,
410
412
  ) -> List[Task]:
@@ -416,6 +418,7 @@ class Fleet:
416
418
  version: Optional version to filter tasks by (client-side filter)
417
419
  team_id: Optional team_id to filter by (admin only)
418
420
  project_key: Optional project key to filter tasks by
421
+ task_project_key: Optional task project key to filter tasks by
419
422
  data_id: Optional data identifier to filter tasks by
420
423
  data_version: Optional data version to filter tasks by
421
424
 
@@ -431,6 +434,8 @@ class Fleet:
431
434
  params["team_id"] = team_id
432
435
  if project_key is not None:
433
436
  params["project_key"] = project_key
437
+ if task_project_key is not None:
438
+ params["task_project_key"] = task_project_key
434
439
  if data_id is not None:
435
440
  params["data_id"] = data_id
436
441
  if data_version is not None:
@@ -553,6 +558,7 @@ class Fleet:
553
558
  verifier_func=verifier_func, # Set verifier code
554
559
  verifier=verifier, # Use created verifier or None
555
560
  metadata={}, # Default empty metadata
561
+ output_json_schema=getattr(task_response, "output_json_schema", None), # Get output_json_schema if available
556
562
  )
557
563
  tasks.append(task)
558
564
 
fleet/models.py CHANGED
@@ -157,6 +157,9 @@ class TaskRequest(BaseModel):
157
157
  verifier_id: Optional[str] = Field(None, title="Verifier Id")
158
158
  version: Optional[str] = Field(None, title="Version")
159
159
  env_variables: Optional[Dict[str, Any]] = Field(None, title="Env Variables")
160
+ output_json_schema: Optional[Dict[str, Any]] = Field(
161
+ None, title="Output Json Schema"
162
+ )
160
163
 
161
164
 
162
165
  class TaskUpdateRequest(BaseModel):
@@ -183,8 +186,13 @@ class TaskResponse(BaseModel):
183
186
  verifier_id: Optional[str] = Field(None, title="Verifier Id")
184
187
  verifier_func: Optional[str] = Field(None, title="Verifier Func")
185
188
  version: Optional[str] = Field(None, title="Version")
189
+ data_id: Optional[str] = Field(None, title="Data Id")
190
+ data_version: Optional[str] = Field(None, title="Data Version")
186
191
  env_variables: Optional[Dict[str, Any]] = Field(None, title="Env Variables")
187
192
  verifier: Optional[VerifierData] = Field(None, title="Verifier")
193
+ output_json_schema: Optional[Dict[str, Any]] = Field(
194
+ None, title="Output Json Schema"
195
+ )
188
196
 
189
197
 
190
198
  class ValidationError(BaseModel):
fleet/tasks.py CHANGED
@@ -39,6 +39,9 @@ class Task(BaseModel):
39
39
  metadata: Optional[Dict[str, Any]] = Field(
40
40
  default_factory=dict, description="Additional task metadata"
41
41
  )
42
+ output_json_schema: Optional[Dict[str, Any]] = Field(
43
+ None, description="JSON schema for expected output format"
44
+ )
42
45
 
43
46
  @validator("key")
44
47
  def validate_key_format(cls, v):
@@ -330,6 +333,7 @@ def load_tasks(
330
333
  version: Optional[str] = None,
331
334
  team_id: Optional[str] = None,
332
335
  project_key: Optional[str] = None,
336
+ task_project_key: Optional[str] = None,
333
337
  data_id: Optional[str] = None,
334
338
  data_version: Optional[str] = None,
335
339
  ) -> List[Task]:
@@ -341,6 +345,7 @@ def load_tasks(
341
345
  version: Optional version to filter tasks by
342
346
  team_id: Optional team_id to filter by (admin only)
343
347
  project_key: Optional project key to filter tasks by
348
+ task_project_key: Optional task project key to filter tasks by
344
349
  data_id: Optional data identifier to filter tasks by
345
350
  data_version: Optional data version to filter tasks by
346
351
 
@@ -360,6 +365,7 @@ def load_tasks(
360
365
  version=version,
361
366
  team_id=team_id,
362
367
  project_key=project_key,
368
+ task_project_key=task_project_key,
363
369
  data_id=data_id,
364
370
  data_version=data_version,
365
371
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fleet-python
3
- Version: 0.2.60
3
+ Version: 0.2.61
4
4
  Summary: Python SDK for Fleet environments
5
5
  Author-email: Fleet AI <nic@fleet.so>
6
6
  License: Apache-2.0
@@ -11,7 +11,7 @@ examples/example_sync.py,sha256=EkuWmUzB1ZsBJQk6ZRflB793rKsuRHeSg5HJZHVhBB0,975
11
11
  examples/example_task.py,sha256=dhG6STAkNsTdHs9cO1RFH9WfuvRmq5bRC211hTeFrk8,7088
12
12
  examples/example_tasks.py,sha256=xTL8UWVAuolSX6swskfrAcmDrLIzn45dJ7YPWCwoEBU,514
13
13
  examples/example_verifier.py,sha256=0vwNITIG3m4CkSPwIxNXcGx9TqrxEsCGqK2A8keKZMM,2392
14
- examples/export_tasks.py,sha256=e5CaHga_1IV2W7PGPjQjOZtMrLAhoPNt74V6qRY99EE,2700
14
+ examples/export_tasks.py,sha256=cJ_8xND7Q3IOM1JfJPR-DH3aLfHo_KmKJeO-1IVUFrQ,3237
15
15
  examples/gemini_example.py,sha256=qj9WDazQTYNiRHNeUg9Tjkp33lJMwbx8gDfpFe1sDQo,16180
16
16
  examples/import_tasks.py,sha256=pb60dOXnOn-G1INQxV1wujeHmmY2oWz9Ddj9SbMm1pk,3139
17
17
  examples/json_tasks_example.py,sha256=CYPESGGtOo0fmsDdLidujTfsE4QlJHw7rOhyVqPJ_Ls,5329
@@ -23,20 +23,20 @@ examples/quickstart.py,sha256=1VT39IRRhemsJgxi0O0gprdpcw7HB4pYO97GAYagIcg,3788
23
23
  examples/test_cdp_logging.py,sha256=AkCwQCgOTQEI8w3v0knWK_4eXMph7L9x07wj9yIYM10,2836
24
24
  fleet/__init__.py,sha256=yC4HIcbtPAPOgI0lLri3l8nbXkNee9JOihKAc7SXYkY,4201
25
25
  fleet/base.py,sha256=bc-340sTpq_DJs7yQ9d2pDWnmJFmA1SwDB9Lagvqtb4,9182
26
- fleet/client.py,sha256=-bjVlA9Iw7dg9XdHVUMvXpTesxzZ_tfw8eD_1D04SW0,32057
26
+ fleet/client.py,sha256=2zbX2a_cAfrpJMp48nfiIKPFCXE04ahtmogaymibtgg,32499
27
27
  fleet/config.py,sha256=uY02ZKxVoXqVDta-0IMWaYJeE1CTXF_fA9NI6QUutmU,319
28
28
  fleet/exceptions.py,sha256=fUmPwWhnT8SR97lYsRq0kLHQHKtSh2eJS0VQ2caSzEI,5055
29
29
  fleet/global_client.py,sha256=frrDAFNM2ywN0JHLtlm9qbE1dQpnQJsavJpb7xSR_bU,1072
30
- fleet/models.py,sha256=d9eish0KO3t4VCNu8h8Q_6K1Xj-crYo5Fejtle0Ur28,13056
31
- fleet/tasks.py,sha256=DlxQu9sftsW0jxKwdIE4_DsVxv1v3t6Mf3iKSwFQM3M,16435
30
+ fleet/models.py,sha256=-8WG10SMkXUljRqD_8pfajCr4PS9qYDVLAZ8RxdJMb0,13392
31
+ fleet/tasks.py,sha256=DcdubsXohptHqGAA-vkUyo8O0La50Wbgi2X8kUgcCqE,16724
32
32
  fleet/types.py,sha256=L4Y82xICf1tzyCLqhLYUgEoaIIS5h9T05TyFNHSWs3s,652
33
33
  fleet/_async/__init__.py,sha256=Wi8Tjj-Lfnxi4cPOkAxh2lynnpEBNni6mI6Iq80uOro,8054
34
34
  fleet/_async/base.py,sha256=oisVTQsx0M_yTmyQJc3oij63uKZ97MHz-xYFsWXxQE8,9202
35
- fleet/_async/client.py,sha256=DWI0nUpR3eD_onAbmiPvKemcqZ7adqLJTt0qXKBOMn4,32505
35
+ fleet/_async/client.py,sha256=Uu9o8LpUce8vOoFxqG0RDe4VtJpu1BJGIFbVecuO71g,32947
36
36
  fleet/_async/exceptions.py,sha256=fUmPwWhnT8SR97lYsRq0kLHQHKtSh2eJS0VQ2caSzEI,5055
37
37
  fleet/_async/global_client.py,sha256=4WskpLHbsDEgWW7hXMD09W-brkp4euy8w2ZJ88594rQ,1103
38
- fleet/_async/models.py,sha256=GX-sRciZDenW2O7Qx9w_ftOkJyE4ph1-92WMq6lynHE,12856
39
- fleet/_async/tasks.py,sha256=VFP00oAeyGvXkVOutLmrvKuM77BGLAc9ZoCH_Z2nXmg,16463
38
+ fleet/_async/models.py,sha256=6x3IPYuWz1v6zWjujqgzK2CpR2HB5Rme4LQFLyvUDXE,13164
39
+ fleet/_async/tasks.py,sha256=QB6rzQPx6RbavE-BMwMyMMIPpCjapj87tqkrHGTZ8dE,16752
40
40
  fleet/_async/env/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  fleet/_async/env/client.py,sha256=C5WG5Ir_McXaFPZNdkQjj0w4V7xMIcw3QyVP5g-3kVk,1237
42
42
  fleet/_async/instance/__init__.py,sha256=PtmJq8J8bh0SOQ2V55QURz5GJfobozwtQoqhaOk3_tI,515
@@ -69,10 +69,10 @@ fleet/verifiers/decorator.py,sha256=nAP3O8szXu7md_kpwpz91hGSUNEVLYjwZQZTkQlV1DM,
69
69
  fleet/verifiers/parse.py,sha256=qz9AfJrTbjlg-LU-lE8Ciqi7Yt2a8-cs17FdpjTLhMk,8550
70
70
  fleet/verifiers/sql_differ.py,sha256=TqTLWyK3uOyLbitT6HYzYEzuSFC39wcyhgk3rcm__k8,6525
71
71
  fleet/verifiers/verifier.py,sha256=_lcxXVm8e0xRrK2gNJy9up7pW1zOkPRY5n5lQ85S8jg,14197
72
- fleet_python-0.2.60.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ fleet_python-0.2.61.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
73
73
  scripts/fix_sync_imports.py,sha256=X9fWLTpiPGkSHsjyQUDepOJkxOqw1DPj7nd8wFlFqLQ,8368
74
74
  scripts/unasync.py,sha256=vWVQxRWX8SRZO5cmzEhpvnG_REhCWXpidIGIpWmEcvI,696
75
- fleet_python-0.2.60.dist-info/METADATA,sha256=V0DNVpqY8l-Q0Gq8xfOPVZGxUbRaYfmeRvU3NBkwnaY,3304
76
- fleet_python-0.2.60.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
- fleet_python-0.2.60.dist-info/top_level.txt,sha256=_3DSmTohvSDf3AIP_BYfGzhwO1ECFwuzg83X-wHCx3Y,23
78
- fleet_python-0.2.60.dist-info/RECORD,,
75
+ fleet_python-0.2.61.dist-info/METADATA,sha256=P4SV6i9skVoxetYm96_p0hAtq3XFK1eV5e9NpW9WbDM,3304
76
+ fleet_python-0.2.61.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
+ fleet_python-0.2.61.dist-info/top_level.txt,sha256=_3DSmTohvSDf3AIP_BYfGzhwO1ECFwuzg83X-wHCx3Y,23
78
+ fleet_python-0.2.61.dist-info/RECORD,,