continuum-task-server-sdk 0.1.0__tar.gz → 1.1.0__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: continuum-task-server-sdk
3
- Version: 0.1.0
3
+ Version: 1.1.0
4
4
  Summary: Python SDK for the Continuum Task Server
5
5
  Project-URL: Homepage, https://github.com/ContinuumWorkflow/continuum-task-server-sdk-python
6
6
  Project-URL: Issues, https://github.com/ContinuumWorkflow/continuum-task-server-sdk-python/issues
@@ -230,6 +230,7 @@ class QueueApi:
230
230
  input_data: Any = None,
231
231
  priority: int | None = None,
232
232
  parent_id: UUID | str | None = None,
233
+ idempotency_token: str | None = None,
233
234
  ) -> QueueItem:
234
235
  """Add a queue item. At least one of task_name or task_item_name is required."""
235
236
  if task_name is None and task_item_name is None:
@@ -241,6 +242,7 @@ class QueueApi:
241
242
  "taskItemName": task_item_name,
242
243
  "priority": priority,
243
244
  "inputData": _encode_input(input_data),
245
+ "idempotencyToken": idempotency_token,
244
246
  }
245
247
  )
246
248
  return QueueItem.model_validate(self._http.post_json(self._MGMT, body))
@@ -14,6 +14,7 @@ the claim stays alive across process restarts.
14
14
  from __future__ import annotations
15
15
 
16
16
  import logging
17
+ import os
17
18
  import signal
18
19
  import threading
19
20
  import time
@@ -496,7 +497,10 @@ class TaskServer:
496
497
 
497
498
  def _coerce_transport(value: TransportMode | str | None) -> TransportMode:
498
499
  if value is None:
499
- return TransportMode.HTTP
500
+ env = os.environ.get("CONTINUUM_TRANSPORT")
501
+ if env is None or not str(env).strip():
502
+ return TransportMode.HTTP
503
+ value = env
500
504
  if isinstance(value, TransportMode):
501
505
  return value
502
506
  normalized = str(value).strip().lower()
@@ -225,6 +225,7 @@ class ContinuumWebSocketClient:
225
225
  priority: int | None = None,
226
226
  parent_id: UUID | str | None = None,
227
227
  request_id: str | None = None,
228
+ idempotency_token: str | None = None,
228
229
  ) -> QueueItem:
229
230
  if task_name is None and task_item_name is None:
230
231
  raise ValueError("at least one of task_name or task_item_name is required")
@@ -235,6 +236,7 @@ class ContinuumWebSocketClient:
235
236
  "taskItemName": task_item_name,
236
237
  "priority": priority,
237
238
  "inputData": _encode_input(input_data),
239
+ "idempotencyToken": idempotency_token,
238
240
  }
239
241
  )
240
242
  payload = self._command("/app/enqueue", body, request_id=request_id, retry=False)
@@ -255,6 +257,7 @@ class ContinuumWebSocketClient:
255
257
  mode: WaitMode | str | None = None,
256
258
  correlation: str | None = None,
257
259
  request_id: str | None = None,
260
+ idempotency_token: str | None = None,
258
261
  ) -> EnqueueAndSubscribeWaitResult:
259
262
  if task_name is None and task_item_name is None:
260
263
  raise ValueError("at least one of task_name or task_item_name is required")
@@ -271,6 +274,7 @@ class ContinuumWebSocketClient:
271
274
  "subscriberId": subscriber_id,
272
275
  "mode": mode_value,
273
276
  "correlation": correlation,
277
+ "idempotencyToken": idempotency_token,
274
278
  }
275
279
  )
276
280
  payload = self._command(
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "continuum-task-server-sdk"
7
- version = "0.1.0"
7
+ version = "1.1.0"
8
8
  description = "Python SDK for the Continuum Task Server"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"