dbos 2.1.0a1__py3-none-any.whl → 2.1.0a2__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.
dbos/_core.py CHANGED
@@ -1278,21 +1278,24 @@ def recv(dbos: "DBOS", topic: Optional[str] = None, timeout_seconds: float = 60)
1278
1278
  def set_event(dbos: "DBOS", key: str, value: Any) -> None:
1279
1279
  cur_ctx = get_local_dbos_context()
1280
1280
  if cur_ctx is not None:
1281
- # Must call it within a workflow
1282
- assert (
1283
- cur_ctx.is_workflow()
1284
- ), "set_event() must be called from within a workflow"
1285
- attributes: TracedAttributes = {
1286
- "name": "set_event",
1287
- }
1288
- with EnterDBOSStep(attributes):
1289
- ctx = assert_current_dbos_context()
1290
- dbos._sys_db.set_event(
1291
- ctx.workflow_id, ctx.curr_step_function_id, key, value
1281
+ if cur_ctx.is_workflow():
1282
+ # If called from a workflow function, run as a step
1283
+ attributes: TracedAttributes = {
1284
+ "name": "set_event",
1285
+ }
1286
+ with EnterDBOSStep(attributes):
1287
+ ctx = assert_current_dbos_context()
1288
+ dbos._sys_db.set_event_from_workflow(
1289
+ ctx.workflow_id, ctx.curr_step_function_id, key, value
1290
+ )
1291
+ elif cur_ctx.is_step():
1292
+ dbos._sys_db.set_event_from_step(cur_ctx.workflow_id, key, value)
1293
+ else:
1294
+ raise DBOSException(
1295
+ "set_event() must be called from within a workflow or step"
1292
1296
  )
1293
1297
  else:
1294
- # Cannot call it from outside of a workflow
1295
- raise DBOSException("set_event() must be called from within a workflow")
1298
+ raise DBOSException("set_event() must be called from within a workflow or step")
1296
1299
 
1297
1300
 
1298
1301
  def get_event(
dbos/_sys_db.py CHANGED
@@ -1524,7 +1524,7 @@ class SystemDatabase(ABC):
1524
1524
  return duration
1525
1525
 
1526
1526
  @db_retry()
1527
- def set_event(
1527
+ def set_event_from_workflow(
1528
1528
  self,
1529
1529
  workflow_uuid: str,
1530
1530
  function_id: int,
@@ -1566,6 +1566,26 @@ class SystemDatabase(ABC):
1566
1566
  }
1567
1567
  self._record_operation_result_txn(output, conn=c)
1568
1568
 
1569
+ def set_event_from_step(
1570
+ self,
1571
+ workflow_uuid: str,
1572
+ key: str,
1573
+ message: Any,
1574
+ ) -> None:
1575
+ with self.engine.begin() as c:
1576
+ c.execute(
1577
+ self.dialect.insert(SystemSchema.workflow_events)
1578
+ .values(
1579
+ workflow_uuid=workflow_uuid,
1580
+ key=key,
1581
+ value=_serialization.serialize(message),
1582
+ )
1583
+ .on_conflict_do_update(
1584
+ index_elements=["workflow_uuid", "key"],
1585
+ set_={"value": _serialization.serialize(message)},
1586
+ )
1587
+ )
1588
+
1569
1589
  def get_all_events(self, workflow_id: str) -> Dict[str, Any]:
1570
1590
  """
1571
1591
  Get all events currently present for a workflow ID.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 2.1.0a1
3
+ Version: 2.1.0a2
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -1,7 +1,7 @@
1
- dbos-2.1.0a1.dist-info/METADATA,sha256=FlTJTp4G9pw4YqyZJSPtAG8N9yv1Y9-n__pdXUI91KA,14532
2
- dbos-2.1.0a1.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
3
- dbos-2.1.0a1.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
- dbos-2.1.0a1.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
1
+ dbos-2.1.0a2.dist-info/METADATA,sha256=cjLi7rpM1wJUcKQxa6jFruCxYOhGVfEmGCogTXEa7HA,14532
2
+ dbos-2.1.0a2.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
3
+ dbos-2.1.0a2.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
+ dbos-2.1.0a2.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
5
  dbos/__init__.py,sha256=pT4BuNLDCrIQX27vQG8NlfxX6PZRU7r9miq4thJTszU,982
6
6
  dbos/__main__.py,sha256=G7Exn-MhGrVJVDbgNlpzhfh8WMX_72t3_oJaFT9Lmt8,653
7
7
  dbos/_admin_server.py,sha256=hubQJw5T8zGKCPNS6FQTXy8jQ8GTJxoYQaDTMlICl9k,16267
@@ -11,7 +11,7 @@ dbos/_client.py,sha256=ppkO3bJ_qpBzWjYf9BkGfy8yF76e91UuhoLMtbIwXnU,18933
11
11
  dbos/_conductor/conductor.py,sha256=3E_hL3c9g9yWqKZkvI6KA0-ZzPMPRo06TOzT1esMiek,24114
12
12
  dbos/_conductor/protocol.py,sha256=q3rgLxINFtWFigdOONc-4gX4vn66UmMlJQD6Kj8LnL4,7420
13
13
  dbos/_context.py,sha256=cJDxVbswTLXKE5MV4Hmg6gpIX3Dd5mBTG-4lmofWP9E,27668
14
- dbos/_core.py,sha256=13DNN_fpSIs42NquV80XsHV7yKwY_adKP03h_xhXok4,50493
14
+ dbos/_core.py,sha256=x0kGmYD2RAPsM6NCOW9b64FKo6xHaQEail8ld2nDWzc,50685
15
15
  dbos/_croniter.py,sha256=XHAyUyibs_59sJQfSNWkP7rqQY6_XrlfuuCxk4jYqek,47559
16
16
  dbos/_dbos.py,sha256=lkOnSZrEPkqURBJatBhnslHO0OKgmrS8rqLowEn5Rr0,58441
17
17
  dbos/_dbos_config.py,sha256=4vgPyy4NiojAOiw3BnjWwiwT1_Ju3ZhXqJQOKDXhsE4,25148
@@ -36,7 +36,7 @@ dbos/_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  dbos/_schemas/application_database.py,sha256=SypAS9l9EsaBHFn9FR8jmnqt01M74d9AF1AMa4m2hhI,1040
37
37
  dbos/_schemas/system_database.py,sha256=aEkjRQDh9xjdke0d9uFx_20-c9UjQtvuLtHZ24aOypA,5497
38
38
  dbos/_serialization.py,sha256=GLgWLtHpvk7nSHyXukVQLE1ASNA3CJBtfF8w6iflBDw,3590
39
- dbos/_sys_db.py,sha256=73FDMflDedA2-9QFIDQJYOFmkvA0sNLwkiGMq475A6g,84548
39
+ dbos/_sys_db.py,sha256=kvssT1I6-vW6eGKmbDqr4L-HO-2xbwkePO0TwVxRTM8,85203
40
40
  dbos/_sys_db_postgres.py,sha256=GuyGVyZZD_Wl7LjRSkHnOuZ-hOROlO4Xs2UeDhKq10E,6963
41
41
  dbos/_sys_db_sqlite.py,sha256=ifjKdy-Z9vlVIBf5L6XnSaNjiBdvqPE73asVHim4A5Q,6998
42
42
  dbos/_templates/dbos-db-starter/README.md,sha256=GhxhBj42wjTt1fWEtwNriHbJuKb66Vzu89G4pxNHw2g,930
@@ -56,4 +56,4 @@ dbos/cli/migration.py,sha256=zJnDPUBnil5XZXFxc01EbZ0Radw_y8wtDGZExgelAxc,3633
56
56
  dbos/dbos-config.schema.json,sha256=47wofTZ5jlFynec7bG0L369tAXbRQQ2euBxBXvg4m9c,1730
57
57
  dbos/py.typed,sha256=QfzXT1Ktfk3Rj84akygc7_42z0lRpCq0Ilh8OXI6Zas,44
58
58
  version/__init__.py,sha256=L4sNxecRuqdtSFdpUGX3TtBi9KL3k7YsZVIvv-fv9-A,1678
59
- dbos-2.1.0a1.dist-info/RECORD,,
59
+ dbos-2.1.0a2.dist-info/RECORD,,
File without changes