hatchet-sdk 1.2.4__py3-none-any.whl → 1.2.6__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 hatchet-sdk might be problematic. Click here for more details.

@@ -21,6 +21,7 @@ from hatchet_sdk.clients.v1.api_client import (
21
21
  )
22
22
  from hatchet_sdk.utils.aio import run_async_from_sync
23
23
  from hatchet_sdk.utils.typing import JSONSerializableMapping
24
+ from hatchet_sdk.workflow_run import WorkflowRunRef
24
25
 
25
26
 
26
27
  class RunFilter(BaseModel):
@@ -220,3 +221,9 @@ class RunsClient(BaseRestClient):
220
221
  details = self.get(run_id)
221
222
 
222
223
  return details.run.output
224
+
225
+ def get_run_ref(self, workflow_run_id: str) -> WorkflowRunRef:
226
+ return WorkflowRunRef(
227
+ workflow_run_id=workflow_run_id,
228
+ config=self.client_config,
229
+ )
@@ -25,6 +25,11 @@ class TaskRunRef(Generic[TWorkflowInput, R]):
25
25
  self._s = standalone
26
26
  self._wrr = workflow_run_ref
27
27
 
28
+ self.workflow_run_id = workflow_run_ref.workflow_run_id
29
+
30
+ def __str__(self) -> str:
31
+ return self.workflow_run_id
32
+
28
33
  async def aio_result(self) -> R:
29
34
  result = await self._wrr.workflow_listener.aio_result(self._wrr.workflow_run_id)
30
35
  return self._s._extract_result(result)
@@ -274,7 +274,7 @@ class BaseWorkflow(Generic[TWorkflowInput]):
274
274
 
275
275
  @property
276
276
  def name(self) -> str:
277
- return self.config.name
277
+ return self._get_name(self.client.config.namespace)
278
278
 
279
279
  def create_bulk_run_item(
280
280
  self,
@@ -284,11 +284,22 @@ class BaseWorkflow(Generic[TWorkflowInput]):
284
284
  ) -> WorkflowRunTriggerConfig:
285
285
  return WorkflowRunTriggerConfig(
286
286
  workflow_name=self.config.name,
287
- input=input.model_dump() if input else {},
287
+ input=self._serialize_input(input),
288
288
  options=options,
289
289
  key=key,
290
290
  )
291
291
 
292
+ def _serialize_input(self, input: TWorkflowInput | None) -> JSONSerializableMapping:
293
+ if not input:
294
+ return {}
295
+
296
+ if isinstance(input, BaseModel):
297
+ return input.model_dump(mode="json")
298
+
299
+ raise ValueError(
300
+ f"Input must be a BaseModel or `None`, got {type(input)} instead."
301
+ )
302
+
292
303
 
293
304
  class Workflow(BaseWorkflow[TWorkflowInput]):
294
305
  """
@@ -303,7 +314,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
303
314
  ) -> WorkflowRunRef:
304
315
  return self.client._client.admin.run_workflow(
305
316
  workflow_name=self.config.name,
306
- input=input.model_dump() if input else {},
317
+ input=self._serialize_input(input),
307
318
  options=options,
308
319
  )
309
320
 
@@ -314,7 +325,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
314
325
  ) -> dict[str, Any]:
315
326
  ref = self.client._client.admin.run_workflow(
316
327
  workflow_name=self.config.name,
317
- input=input.model_dump() if input else {},
328
+ input=self._serialize_input(input),
318
329
  options=options,
319
330
  )
320
331
 
@@ -327,7 +338,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
327
338
  ) -> WorkflowRunRef:
328
339
  return await self.client._client.admin.aio_run_workflow(
329
340
  workflow_name=self.config.name,
330
- input=input.model_dump() if input else {},
341
+ input=self._serialize_input(input),
331
342
  options=options,
332
343
  )
333
344
 
@@ -338,7 +349,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
338
349
  ) -> dict[str, Any]:
339
350
  ref = await self.client._client.admin.aio_run_workflow(
340
351
  workflow_name=self.config.name,
341
- input=input.model_dump() if input else {},
352
+ input=self._serialize_input(input),
342
353
  options=options,
343
354
  )
344
355
 
@@ -389,20 +400,20 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
389
400
  return self.client._client.admin.schedule_workflow(
390
401
  name=self.config.name,
391
402
  schedules=cast(list[datetime | timestamp_pb2.Timestamp], [run_at]),
392
- input=input.model_dump() if input else {},
403
+ input=self._serialize_input(input),
393
404
  options=options,
394
405
  )
395
406
 
396
407
  async def aio_schedule(
397
408
  self,
398
409
  run_at: datetime,
399
- input: TWorkflowInput,
410
+ input: TWorkflowInput | None = None,
400
411
  options: ScheduleTriggerWorkflowOptions = ScheduleTriggerWorkflowOptions(),
401
412
  ) -> WorkflowVersion:
402
413
  return await self.client._client.admin.aio_schedule_workflow(
403
414
  name=self.config.name,
404
415
  schedules=cast(list[datetime | timestamp_pb2.Timestamp], [run_at]),
405
- input=input.model_dump(),
416
+ input=self._serialize_input(input),
406
417
  options=options,
407
418
  )
408
419
 
@@ -410,14 +421,14 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
410
421
  self,
411
422
  cron_name: str,
412
423
  expression: str,
413
- input: TWorkflowInput,
414
- additional_metadata: JSONSerializableMapping,
424
+ input: TWorkflowInput | None = None,
425
+ additional_metadata: JSONSerializableMapping = {},
415
426
  ) -> CronWorkflows:
416
427
  return self.client.cron.create(
417
428
  workflow_name=self.config.name,
418
429
  cron_name=cron_name,
419
430
  expression=expression,
420
- input=input.model_dump(),
431
+ input=self._serialize_input(input),
421
432
  additional_metadata=additional_metadata,
422
433
  )
423
434
 
@@ -425,14 +436,14 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
425
436
  self,
426
437
  cron_name: str,
427
438
  expression: str,
428
- input: TWorkflowInput,
429
- additional_metadata: JSONSerializableMapping,
439
+ input: TWorkflowInput | None = None,
440
+ additional_metadata: JSONSerializableMapping = {},
430
441
  ) -> CronWorkflows:
431
442
  return await self.client.cron.aio_create(
432
443
  workflow_name=self.config.name,
433
444
  cron_name=cron_name,
434
445
  expression=expression,
435
- input=input.model_dump(),
446
+ input=self._serialize_input(input),
436
447
  additional_metadata=additional_metadata,
437
448
  )
438
449
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hatchet-sdk
3
- Version: 1.2.4
3
+ Version: 1.2.6
4
4
  Summary:
5
5
  Author: Alexander Belanger
6
6
  Author-email: alexander@hatchet.run
@@ -245,7 +245,7 @@ hatchet_sdk/features/cron.py,sha256=VRq5w15QpVYMkvkyIUgBO77IQpASbTxyplbgGukdmE8,
245
245
  hatchet_sdk/features/logs.py,sha256=Fm3l0f2VUlQ_YqYrKqHYviK5g_j9_wUEW6J_Ax9cYzc,724
246
246
  hatchet_sdk/features/metrics.py,sha256=Lmmu-3TITHyGGx5moA_emuzy-ZrbJhXLBDzR7Fm73pk,2897
247
247
  hatchet_sdk/features/rate_limits.py,sha256=Df-DBFRpT1MHRf7qcvD4YJseNuFJUp5X9aO72yLkW6Q,1521
248
- hatchet_sdk/features/runs.py,sha256=th2czurM9uawOlcm48MBalvQTqSmfVhOMcAbHjPH_hk,8145
248
+ hatchet_sdk/features/runs.py,sha256=0r1sRWgsmKxDGR96-u5uT1mZ66ZKuX99X1F9uOb178I,8390
249
249
  hatchet_sdk/features/scheduled.py,sha256=MfUrUOYNWewoX6GJ4YV2UWmKrxVJrgj4fX8wCxkkgv0,8900
250
250
  hatchet_sdk/features/workers.py,sha256=HpUX8LyvFfseNn677tTvQukNqyD90-uWPhdf10znUkA,1589
251
251
  hatchet_sdk/features/workflows.py,sha256=4hZgk7vhRhMK8wb2K3b9617TolnxRkeYL35aeLWHY2c,2143
@@ -257,10 +257,10 @@ hatchet_sdk/opentelemetry/instrumentor.py,sha256=KYZG1koVv4704kgr7YJ-M3QqRcTrZI2
257
257
  hatchet_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
258
  hatchet_sdk/rate_limit.py,sha256=TwbCuggiZaWpYuo4mjVLlE-z1OfQ2mRBiVvCSaG3lv4,3919
259
259
  hatchet_sdk/runnables/contextvars.py,sha256=6MDocAMmlyiRW37oQ1jyx10tAlJs-xgDjR3xPoPz05g,426
260
- hatchet_sdk/runnables/standalone.py,sha256=2jgUgILYIyHSYy3S6M6n2QAQ7UyvxfSQk0DDRar5RpI,5996
260
+ hatchet_sdk/runnables/standalone.py,sha256=Qcg1oc7NlTw2ZCqq5D869fhssKBLUaZKUwDo4UVcVm4,6128
261
261
  hatchet_sdk/runnables/task.py,sha256=jQiRPeE9EbIzNOxv6hkmJ8RqyVR7hMLXX4cnGRl_GF8,4832
262
262
  hatchet_sdk/runnables/types.py,sha256=JWo4hkYb2XYoktIFVvnqud6Ywmo7AHMK_upYpdNmij0,4235
263
- hatchet_sdk/runnables/workflow.py,sha256=eYIbpAAwlArhEZrd3NHDT4Yy8_GejgCzRG6TZomPugI,30681
263
+ hatchet_sdk/runnables/workflow.py,sha256=677DIWOErlVkIwJ2VeNwRAg7wkCUpOt_Av3wy3N2HcA,31090
264
264
  hatchet_sdk/token.py,sha256=KjIiInwG5Kqd_FO4BSW1x_5Uc7PFbnzIVJqr50-ZldE,779
265
265
  hatchet_sdk/utils/aio.py,sha256=A9pKNn8eAKUeinY2uBkJn4jdrYI5vAw_A-gzz04xdvQ,1122
266
266
  hatchet_sdk/utils/backoff.py,sha256=6B5Rb5nLKw_TqqgpJMYjIBV1PTTtbOMRZCveisVhg_I,353
@@ -506,7 +506,7 @@ hatchet_sdk/worker/runner/runner.py,sha256=ZocvR7dDgEvSxcHAWDDaoTasSz3Wio70TbEbB
506
506
  hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=nHRPSiDBqzhObM7i2X7t03OupVFnE7kQBdR2Ckgg-2w,2709
507
507
  hatchet_sdk/worker/worker.py,sha256=qyHs64H-grF9HR1CgH7MlnoDmTQ8mm4d8basx-ZDyWc,14490
508
508
  hatchet_sdk/workflow_run.py,sha256=Q1nTpnWNsFfjWWpx49xXYUHsVbqTnHL6JWnSKoFM3_I,1029
509
- hatchet_sdk-1.2.4.dist-info/METADATA,sha256=U6Iloh69aCy5R-Y5V47P61n_TNYHmiQPNLNKyBpmNdg,3571
510
- hatchet_sdk-1.2.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
511
- hatchet_sdk-1.2.4.dist-info/entry_points.txt,sha256=5mTp_AsCWK5raiVxP_MU9eBCgkRGl4OsN6chpHcvm7o,1235
512
- hatchet_sdk-1.2.4.dist-info/RECORD,,
509
+ hatchet_sdk-1.2.6.dist-info/METADATA,sha256=LfptC1FhJwxcjLrYm_Qc1EIQ6Yx6Gsqhc7msQrwYP6s,3571
510
+ hatchet_sdk-1.2.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
511
+ hatchet_sdk-1.2.6.dist-info/entry_points.txt,sha256=5mTp_AsCWK5raiVxP_MU9eBCgkRGl4OsN6chpHcvm7o,1235
512
+ hatchet_sdk-1.2.6.dist-info/RECORD,,