dbos 0.24.0a15__py3-none-any.whl → 0.25.0__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.
@@ -1,59 +1,78 @@
1
- from typing import List, Optional, cast
1
+ import json
2
+ from typing import Any, List, Optional
2
3
 
3
4
  from . import _serialization
4
5
  from ._sys_db import (
5
6
  GetQueuedWorkflowsInput,
6
7
  GetWorkflowsInput,
7
8
  GetWorkflowsOutput,
9
+ StepInfo,
8
10
  SystemDatabase,
9
- WorkflowStatuses,
10
11
  )
11
12
 
12
13
 
13
- class WorkflowInformation:
14
+ class WorkflowStatus:
15
+ # The workflow ID
14
16
  workflow_id: str
15
- status: WorkflowStatuses
16
- workflow_name: str
17
- workflow_class_name: Optional[str]
18
- workflow_config_name: Optional[str]
17
+ # The workflow status. Must be one of ENQUEUED, PENDING, SUCCESS, ERROR, CANCELLED, or RETRIES_EXCEEDED
18
+ status: str
19
+ # The name of the workflow function
20
+ name: str
21
+ # The name of the workflow's class, if any
22
+ class_name: Optional[str]
23
+ # The name with which the workflow's class instance was configured, if any
24
+ config_name: Optional[str]
25
+ # The user who ran the workflow, if specified
19
26
  authenticated_user: Optional[str]
27
+ # The role with which the workflow ran, if specified
20
28
  assumed_role: Optional[str]
21
- authenticated_roles: Optional[str] # JSON list of roles.
22
- input: Optional[_serialization.WorkflowInputs] # JSON (jsonpickle)
23
- output: Optional[str] = None # JSON (jsonpickle)
24
- request: Optional[str] # JSON (jsonpickle)
25
- error: Optional[str] = None # JSON (jsonpickle)
26
- created_at: Optional[int] # Unix epoch timestamp in ms
27
- updated_at: Optional[int] # Unix epoch timestamp in ms
29
+ # All roles which the authenticated user could assume
30
+ authenticated_roles: Optional[list[str]]
31
+ # The deserialized workflow input object
32
+ input: Optional[_serialization.WorkflowInputs]
33
+ # The workflow's output, if any
34
+ output: Optional[Any] = None
35
+ # The error the workflow threw, if any
36
+ error: Optional[Exception] = None
37
+ # Workflow start time, as a Unix epoch timestamp in ms
38
+ created_at: Optional[int]
39
+ # Last time the workflow status was updated, as a Unix epoch timestamp in ms
40
+ updated_at: Optional[int]
41
+ # If this workflow was enqueued, on which queue
28
42
  queue_name: Optional[str]
43
+ # The executor to most recently executed this workflow
29
44
  executor_id: Optional[str]
45
+ # The application version on which this workflow was started
30
46
  app_version: Optional[str]
47
+ # The ID of the application executing this workflow
31
48
  app_id: Optional[str]
49
+ # The number of times this workflow's execution has been attempted
32
50
  recovery_attempts: Optional[int]
51
+ # The HTTP request that triggered the workflow, if known
52
+ request: Optional[str]
33
53
 
34
54
 
35
55
  def list_workflows(
36
56
  sys_db: SystemDatabase,
37
57
  *,
38
58
  workflow_ids: Optional[List[str]] = None,
39
- user: Optional[str] = None,
59
+ status: Optional[str] = None,
40
60
  start_time: Optional[str] = None,
41
61
  end_time: Optional[str] = None,
42
- status: Optional[str] = None,
43
- request: bool = False,
44
- app_version: Optional[str] = None,
45
62
  name: Optional[str] = None,
63
+ app_version: Optional[str] = None,
64
+ user: Optional[str] = None,
46
65
  limit: Optional[int] = None,
47
66
  offset: Optional[int] = None,
48
67
  sort_desc: bool = False,
49
- ) -> List[WorkflowInformation]:
68
+ request: bool = False,
69
+ ) -> List[WorkflowStatus]:
50
70
  input = GetWorkflowsInput()
51
71
  input.workflow_ids = workflow_ids
52
72
  input.authenticated_user = user
53
73
  input.start_time = start_time
54
74
  input.end_time = end_time
55
- if status is not None:
56
- input.status = cast(WorkflowStatuses, status)
75
+ input.status = status
57
76
  input.application_version = app_version
58
77
  input.limit = limit
59
78
  input.name = name
@@ -61,7 +80,7 @@ def list_workflows(
61
80
  input.sort_desc = sort_desc
62
81
 
63
82
  output: GetWorkflowsOutput = sys_db.get_workflows(input)
64
- infos: List[WorkflowInformation] = []
83
+ infos: List[WorkflowStatus] = []
65
84
  for workflow_id in output.workflow_uuids:
66
85
  info = get_workflow(sys_db, workflow_id, request) # Call the method for each ID
67
86
  if info is not None:
@@ -72,16 +91,16 @@ def list_workflows(
72
91
  def list_queued_workflows(
73
92
  sys_db: SystemDatabase,
74
93
  *,
75
- limit: Optional[int] = None,
76
- start_time: Optional[str] = None,
77
- end_time: Optional[str] = None,
78
94
  queue_name: Optional[str] = None,
79
95
  status: Optional[str] = None,
96
+ start_time: Optional[str] = None,
97
+ end_time: Optional[str] = None,
80
98
  name: Optional[str] = None,
81
- request: bool = False,
99
+ limit: Optional[int] = None,
82
100
  offset: Optional[int] = None,
83
101
  sort_desc: bool = False,
84
- ) -> List[WorkflowInformation]:
102
+ request: bool = False,
103
+ ) -> List[WorkflowStatus]:
85
104
  input: GetQueuedWorkflowsInput = {
86
105
  "queue_name": queue_name,
87
106
  "start_time": start_time,
@@ -93,7 +112,7 @@ def list_queued_workflows(
93
112
  "sort_desc": sort_desc,
94
113
  }
95
114
  output: GetWorkflowsOutput = sys_db.get_queued_workflows(input)
96
- infos: List[WorkflowInformation] = []
115
+ infos: List[WorkflowStatus] = []
97
116
  for workflow_id in output.workflow_uuids:
98
117
  info = get_workflow(sys_db, workflow_id, request) # Call the method for each ID
99
118
  if info is not None:
@@ -102,47 +121,55 @@ def list_queued_workflows(
102
121
 
103
122
 
104
123
  def get_workflow(
105
- sys_db: SystemDatabase, workflowUUID: str, getRequest: bool
106
- ) -> Optional[WorkflowInformation]:
124
+ sys_db: SystemDatabase, workflow_id: str, get_request: bool
125
+ ) -> Optional[WorkflowStatus]:
107
126
 
108
- info = sys_db.get_workflow_status(workflowUUID)
109
- if info is None:
127
+ internal_status = sys_db.get_workflow_status(workflow_id)
128
+ if internal_status is None:
110
129
  return None
111
130
 
112
- winfo = WorkflowInformation()
113
-
114
- winfo.workflow_id = workflowUUID
115
- winfo.status = info["status"]
116
- winfo.workflow_name = info["name"]
117
- winfo.workflow_class_name = info["class_name"]
118
- winfo.workflow_config_name = info["config_name"]
119
- winfo.authenticated_user = info["authenticated_user"]
120
- winfo.assumed_role = info["assumed_role"]
121
- winfo.authenticated_roles = info["authenticated_roles"]
122
- winfo.request = info["request"]
123
- winfo.created_at = info["created_at"]
124
- winfo.updated_at = info["updated_at"]
125
- winfo.queue_name = info["queue_name"]
126
- winfo.executor_id = info["executor_id"]
127
- winfo.app_version = info["app_version"]
128
- winfo.app_id = info["app_id"]
129
- winfo.recovery_attempts = info["recovery_attempts"]
130
-
131
- # no input field
132
- input_data = sys_db.get_workflow_inputs(workflowUUID)
131
+ info = WorkflowStatus()
132
+
133
+ info.workflow_id = workflow_id
134
+ info.status = internal_status["status"]
135
+ info.name = internal_status["name"]
136
+ info.class_name = internal_status["class_name"]
137
+ info.config_name = internal_status["config_name"]
138
+ info.authenticated_user = internal_status["authenticated_user"]
139
+ info.assumed_role = internal_status["assumed_role"]
140
+ info.authenticated_roles = (
141
+ json.loads(internal_status["authenticated_roles"])
142
+ if internal_status["authenticated_roles"] is not None
143
+ else None
144
+ )
145
+ info.request = internal_status["request"]
146
+ info.created_at = internal_status["created_at"]
147
+ info.updated_at = internal_status["updated_at"]
148
+ info.queue_name = internal_status["queue_name"]
149
+ info.executor_id = internal_status["executor_id"]
150
+ info.app_version = internal_status["app_version"]
151
+ info.app_id = internal_status["app_id"]
152
+ info.recovery_attempts = internal_status["recovery_attempts"]
153
+
154
+ input_data = sys_db.get_workflow_inputs(workflow_id)
133
155
  if input_data is not None:
134
- winfo.input = input_data
156
+ info.input = input_data
135
157
 
136
- if info.get("status") == "SUCCESS":
137
- result = sys_db.await_workflow_result(workflowUUID)
138
- winfo.output = result
139
- elif info.get("status") == "ERROR":
158
+ if internal_status.get("status") == "SUCCESS":
159
+ result = sys_db.await_workflow_result(workflow_id)
160
+ info.output = result
161
+ elif internal_status.get("status") == "ERROR":
140
162
  try:
141
- sys_db.await_workflow_result(workflowUUID)
163
+ sys_db.await_workflow_result(workflow_id)
142
164
  except Exception as e:
143
- winfo.error = str(e)
165
+ info.error = e
166
+
167
+ if not get_request:
168
+ info.request = None
169
+
170
+ return info
144
171
 
145
- if not getRequest:
146
- winfo.request = None
147
172
 
148
- return winfo
173
+ def list_workflow_steps(sys_db: SystemDatabase, workflow_id: str) -> List[StepInfo]:
174
+ output = sys_db.get_workflow_steps(workflow_id)
175
+ return output
@@ -58,15 +58,20 @@ def copy_template(src_dir: str, project_name: str, config_mode: bool) -> None:
58
58
  dst_dir = path.abspath(".")
59
59
 
60
60
  package_name = project_name.replace("-", "_")
61
+ default_migration_section = """database:
62
+ migrate:
63
+ - alembic upgrade head
64
+ """
61
65
  ctx = {
62
66
  "project_name": project_name,
63
67
  "package_name": package_name,
64
- "migration_command": "alembic upgrade head",
68
+ "start_command": f"python3 -m {package_name}.main",
69
+ "migration_section": default_migration_section,
65
70
  }
66
71
 
67
72
  if config_mode:
68
- ctx["package_name"] = "."
69
- ctx["migration_command"] = "echo 'No migrations specified'"
73
+ ctx["start_command"] = "python3 main.py"
74
+ ctx["migration_section"] = ""
70
75
  _copy_dbos_template(
71
76
  os.path.join(src_dir, "dbos-config.yaml.dbos"),
72
77
  os.path.join(dst_dir, "dbos-config.yaml"),
dbos/cli/cli.py CHANGED
@@ -21,7 +21,12 @@ from .. import load_config
21
21
  from .._app_db import ApplicationDatabase
22
22
  from .._dbos_config import _is_valid_app_name
23
23
  from .._sys_db import SystemDatabase, reset_system_database
24
- from .._workflow_commands import get_workflow, list_queued_workflows, list_workflows
24
+ from .._workflow_commands import (
25
+ get_workflow,
26
+ list_queued_workflows,
27
+ list_workflow_steps,
28
+ list_workflows,
29
+ )
25
30
  from ..cli._github_init import create_template_from_github
26
31
  from ._template_init import copy_template, get_project_name, get_templates_directory
27
32
 
@@ -184,8 +189,8 @@ def migrate() -> None:
184
189
  app_db = None
185
190
  sys_db = None
186
191
  try:
187
- sys_db = SystemDatabase(config)
188
- app_db = ApplicationDatabase(config)
192
+ sys_db = SystemDatabase(config["database"])
193
+ app_db = ApplicationDatabase(config["database"])
189
194
  except Exception as e:
190
195
  typer.echo(f"DBOS system schema migration failed: {e}")
191
196
  finally:
@@ -309,7 +314,7 @@ def list(
309
314
  ] = False,
310
315
  ) -> None:
311
316
  config = load_config(silent=True)
312
- sys_db = SystemDatabase(config)
317
+ sys_db = SystemDatabase(config["database"])
313
318
  workflows = list_workflows(
314
319
  sys_db,
315
320
  limit=limit,
@@ -333,12 +338,23 @@ def get(
333
338
  ] = False,
334
339
  ) -> None:
335
340
  config = load_config(silent=True)
336
- sys_db = SystemDatabase(config)
341
+ sys_db = SystemDatabase(config["database"])
337
342
  print(
338
343
  jsonpickle.encode(get_workflow(sys_db, workflow_id, request), unpicklable=False)
339
344
  )
340
345
 
341
346
 
347
+ @workflow.command(help="List the steps of a workflow")
348
+ def steps(
349
+ workflow_id: Annotated[str, typer.Argument()],
350
+ ) -> None:
351
+ config = load_config(silent=True)
352
+ sys_db = SystemDatabase(config["database"])
353
+ print(
354
+ jsonpickle.encode(list_workflow_steps(sys_db, workflow_id), unpicklable=False)
355
+ )
356
+
357
+
342
358
  @workflow.command(
343
359
  help="Cancel a workflow so it is no longer automatically retried or restarted"
344
360
  )
@@ -459,7 +475,7 @@ def list_queue(
459
475
  ] = False,
460
476
  ) -> None:
461
477
  config = load_config(silent=True)
462
- sys_db = SystemDatabase(config)
478
+ sys_db = SystemDatabase(config["database"])
463
479
  workflows = list_queued_workflows(
464
480
  sys_db=sys_db,
465
481
  limit=limit,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.24.0a15
3
+ Version: 0.25.0
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -23,6 +23,7 @@ Requires-Dist: cryptography>=43.0.3
23
23
  Requires-Dist: rich>=13.9.4
24
24
  Requires-Dist: pyjwt>=2.10.1
25
25
  Requires-Dist: websockets>=15.0
26
+ Requires-Dist: pyright>=1.1.398
26
27
  Description-Content-Type: text/markdown
27
28
 
28
29
 
@@ -1,30 +1,31 @@
1
- dbos-0.24.0a15.dist-info/METADATA,sha256=tznNqGH5OPqja4lmSG1BpyvEsgFaB6SlcbFokS1kLhM,5522
2
- dbos-0.24.0a15.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
3
- dbos-0.24.0a15.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
- dbos-0.24.0a15.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
- dbos/__init__.py,sha256=uq9LP5uY96kIS9N0yKqlvDwADmtg_Hl30uSUhyuUr-4,754
6
- dbos/__main__.py,sha256=P7jAr-7L9XE5mrsQ7i4b-bLr2ap1tCQfhMByLCRWDj0,568
7
- dbos/_admin_server.py,sha256=YiVn5lywz2Vg8_juyNHOYl0HVEy48--7b4phwK7r92o,5732
8
- dbos/_app_db.py,sha256=4EGrYL14rVx96TXn34hoibN9ltf4-2DKcj6nd-HvBxA,6262
1
+ dbos-0.25.0.dist-info/METADATA,sha256=mWgqxc8liS9Ysol7sLx5Xocz8_efHGHoeq8wariyfOA,5551
2
+ dbos-0.25.0.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ dbos-0.25.0.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
+ dbos-0.25.0.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
+ dbos/__init__.py,sha256=3NQfGlBiiUSM_v88STdVP3rNZvGkUL_9WbSotKb8Voo,873
6
+ dbos/__main__.py,sha256=G7Exn-MhGrVJVDbgNlpzhfh8WMX_72t3_oJaFT9Lmt8,653
7
+ dbos/_admin_server.py,sha256=FLUacm9WGIPjB5s3QhdpMCilc8JHJOF0KMNStF82qs0,6625
8
+ dbos/_app_db.py,sha256=R3sbh--84A4i-dTz8IXYmxO4b4s5VSwiPQvi_le52mg,6109
9
9
  dbos/_classproperty.py,sha256=f0X-_BySzn3yFDRKB2JpCbLYQ9tLwt1XftfshvY7CBs,626
10
+ dbos/_client.py,sha256=XKjR0a3JA9Xfo9VJx48EcdyiVDaA10FvI7Y_I1v27Ng,7384
10
11
  dbos/_cloudutils/authentication.py,sha256=V0fCWQN9stCkhbuuxgPTGpvuQcDqfU3KAxPAh01vKW4,5007
11
12
  dbos/_cloudutils/cloudutils.py,sha256=YC7jGsIopT0KveLsqbRpQk2KlRBk-nIRC_UCgep4f3o,7797
12
13
  dbos/_cloudutils/databases.py,sha256=_shqaqSvhY4n2ScgQ8IP5PDZvzvcx3YBKV8fj-cxhSY,8543
13
- dbos/_conductor/conductor.py,sha256=udu8atyYYrs5bCfokie9ttjHlIg0FMo1p0-24IoneFs,15252
14
- dbos/_conductor/protocol.py,sha256=MWY3SuIeY6GN2Vg3wQjcxiT0d4zz4ccGzdEkmYYJ6t0,5633
15
- dbos/_context.py,sha256=Ue5qu3rzLfRmPkz-UUZi9ZS8iXpapRN0NTM4mbA2QmQ,17738
16
- dbos/_core.py,sha256=_a_rSkAWNLoHqzQbkqez0mpctkjDs301123ti3wmKHk,41340
14
+ dbos/_conductor/conductor.py,sha256=7elKINsgl4s1Tg5DwrU-K7xQ5vQvmDAIfAvUgfwpGN0,16784
15
+ dbos/_conductor/protocol.py,sha256=xN7pmooyF1pqbH1b6WhllU5718P7zSb_b0KCwA6bzcs,6716
16
+ dbos/_context.py,sha256=3He4w46OTFbR7h8U1MLcdaU10wNyIPBSRqzLkdggv7U,19368
17
+ dbos/_core.py,sha256=kIj_4wlIff8ptlACJKXAPSNoyJIt2h44swjMKxfwv0k,45789
17
18
  dbos/_croniter.py,sha256=XHAyUyibs_59sJQfSNWkP7rqQY6_XrlfuuCxk4jYqek,47559
18
- dbos/_db_wizard.py,sha256=YEW2qoy6hfHQv2fZ_4nHiPUeHMFofPpNTolJ1Kvw7AQ,8394
19
- dbos/_dbos.py,sha256=ymQnOZ8RQehcPVAjjJipoW8StxM7bktTyT_4a_Zlse8,43599
20
- dbos/_dbos_config.py,sha256=rWGy8mB7uLGRgkAybBEz-ogsJQYJpXY41cXNy5eITMs,21513
19
+ dbos/_db_wizard.py,sha256=VnMa6OL87Lc-XPDD1RnXp8NjsJE8YgiQLj3wtWAXp-8,8252
20
+ dbos/_dbos.py,sha256=AKfB61vvz5shPoEpKxqrqoiDemintKMqyBxhESRRJE8,45231
21
+ dbos/_dbos_config.py,sha256=7Qm3FARP3lTKZS0gSxDHLbpaDCT30GzfyERxfCde4bc,21566
21
22
  dbos/_debug.py,sha256=mmgvLkqlrljMBBow9wk01PPur9kUf2rI_11dTJXY4gw,1822
22
23
  dbos/_error.py,sha256=B6Y9XLS1f6yrawxB2uAEYFMxFwk9BHhdxPNddKco-Fw,5399
23
- dbos/_fastapi.py,sha256=ke03vqsSYDnO6XeOtOVFXj0-f-v1MGsOxa9McaROvNc,3616
24
+ dbos/_fastapi.py,sha256=PhaKftbApHnjtYEOw0EYna_3K0cmz__J9of7mRJWzu4,3704
24
25
  dbos/_flask.py,sha256=DZKUZR5-xOzPI7tYZ53r2PvvHVoAb8SYwLzMVFsVfjI,2608
25
26
  dbos/_kafka.py,sha256=o6DbwnsYRDtvVTZVsN7BAK8cdP79AfoWX3Q7CGY2Yuo,4199
26
27
  dbos/_kafka_message.py,sha256=NYvOXNG3Qn7bghn1pv3fg4Pbs86ILZGcK4IB-MLUNu0,409
27
- dbos/_logger.py,sha256=pSP-CyzHUR6ypousTaeKe2zYMKSqvrbsFru8HJpBHsA,3546
28
+ dbos/_logger.py,sha256=qv2srteCF2rSRjCK1VGOck3ieIkwUe9Lvbv60mJc16E,4069
28
29
  dbos/_migrations/env.py,sha256=38SIGVbmn_VV2x2u1aHLcPOoWgZ84eCymf3g_NljmbU,1626
29
30
  dbos/_migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
30
31
  dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py,sha256=ICLPl8CN9tQXMsLDsAj8z1TsL831-Z3F8jSBvrR-wyw,736
@@ -34,8 +35,9 @@ dbos/_migrations/versions/a3b18ad34abe_added_triggers.py,sha256=Rv0ZsZYZ_WdgGEUL
34
35
  dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py,sha256=8PyFi8rd6CN-mUro43wGhsg5wcQWKZPRHD6jw8R5pVc,986
35
36
  dbos/_migrations/versions/d76646551a6c_workflow_queue.py,sha256=G942nophZ2uC2vc4hGBC02Ptng1715roTjY3xiyzZU4,729
36
37
  dbos/_migrations/versions/eab0cc1d9a14_job_queue.py,sha256=uvhFOtqbBreCePhAxZfIT0qCAI7BiZTou9wt6QnbY7c,1412
37
- dbos/_outcome.py,sha256=FDMgWVjZ06vm9xO-38H17mTqBImUYQxgKs_bDCSIAhE,6648
38
- dbos/_queue.py,sha256=OWUtbBAqdkDAArFWkwlF8STxykV4iQmrZxrF-_lavh4,3341
38
+ dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py,sha256=m90Lc5YH0ZISSq1MyxND6oq3RZrZKrIqEsZtwJ1jWxA,1049
39
+ dbos/_outcome.py,sha256=EXxBg4jXCVJsByDQ1VOCIedmbeq_03S6d-p1vqQrLFU,6810
40
+ dbos/_queue.py,sha256=HqeybpS7kujs9laM-n0j7LWcJdwMl9okqm2hNSrUab8,3367
39
41
  dbos/_recovery.py,sha256=4KyZb0XJEUGH7ekYT1kpx38i6y5vygPeH75Ta7RZjYo,2596
40
42
  dbos/_registrations.py,sha256=_zy6k944Ll8QwqU12Kr3OP23ukVtm8axPNN1TS_kJRc,6717
41
43
  dbos/_request.py,sha256=cX1B3Atlh160phgS35gF1VEEV4pD126c9F3BDgBmxZU,929
@@ -43,26 +45,26 @@ dbos/_roles.py,sha256=iOsgmIAf1XVzxs3gYWdGRe1B880YfOw5fpU7Jwx8_A8,2271
43
45
  dbos/_scheduler.py,sha256=boG4BdcncFa3WxR97T5Oou4ppR0TgrEa2QQkjzpFEHU,2028
44
46
  dbos/_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
47
  dbos/_schemas/application_database.py,sha256=KeyoPrF7hy_ODXV7QNike_VFSD74QBRfQ76D7QyE9HI,966
46
- dbos/_schemas/system_database.py,sha256=16146P4TLjAGjTYykOs_KUd2c_geJ5fuhk0ko85C65M,5211
48
+ dbos/_schemas/system_database.py,sha256=W9eSpL7SZzQkxcEZ4W07BOcwkkDr35b9oCjUOgfHWek,5336
47
49
  dbos/_serialization.py,sha256=YCYv0qKAwAZ1djZisBC7khvKqG-5OcIv9t9EC5PFIog,1743
48
- dbos/_sys_db.py,sha256=YzQv26TcF9W6nDDr9hbN147KnVmgBoodjWVop_sLkC4,64891
50
+ dbos/_sys_db.py,sha256=fEkJbIzavLX-7K_TFnJe8ST58cpWShpBIarhEVXu6Po,62816
49
51
  dbos/_templates/dbos-db-starter/README.md,sha256=GhxhBj42wjTt1fWEtwNriHbJuKb66Vzu89G4pxNHw2g,930
50
52
  dbos/_templates/dbos-db-starter/__package/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- dbos/_templates/dbos-db-starter/__package/main.py,sha256=eI0SS9Nwj-fldtiuSzIlIG6dC91GXXwdRsoHxv6S_WI,2719
53
+ dbos/_templates/dbos-db-starter/__package/main.py,sha256=nJMN3ZD2lmwg4Dcgmiwqc-tQGuCJuJal2Xl85iA277U,2453
52
54
  dbos/_templates/dbos-db-starter/__package/schema.py,sha256=7Z27JGC8yy7Z44cbVXIREYxtUhU4JVkLCp5Q7UahVQ0,260
53
55
  dbos/_templates/dbos-db-starter/alembic.ini,sha256=VKBn4Gy8mMuCdY7Hip1jmo3wEUJ1VG1aW7EqY0_n-as,3695
54
- dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos,sha256=Z-JC7wp-E9l7NiacjT7E66M812fYFVU3FSS7mNjb6XE,492
56
+ dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos,sha256=0wPktElM7kMB3OPHTXw4xBk9bgGKMqOHrrr7x_R23Z8,446
55
57
  dbos/_templates/dbos-db-starter/migrations/env.py.dbos,sha256=GUV6sjkDzf9Vl6wkGEd0RSkK-ftRfV6EUwSQdd0qFXg,2392
56
58
  dbos/_templates/dbos-db-starter/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
57
59
  dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py,sha256=MpS7LGaJS0CpvsjhfDkp9EJqvMvVCjRPfUp4c0aE2ys,941
58
60
  dbos/_templates/dbos-db-starter/start_postgres_docker.py,sha256=lQVLlYO5YkhGPEgPqwGc7Y8uDKse9HsWv5fynJEFJHM,1681
59
61
  dbos/_tracer.py,sha256=dFDSFlta-rfA3-ahIRLYwnnoAOmlavdxAGllqwFgnCA,2440
60
62
  dbos/_utils.py,sha256=wjOJzxN66IzL9p4dwcEmQACRQah_V09G6mJI2exQfOM,155
61
- dbos/_workflow_commands.py,sha256=CEzR5XghoZscbc2RHb9G-7Eoo4MMuzfeTo-QBZu4VPY,4690
63
+ dbos/_workflow_commands.py,sha256=SYp2khc9RSf6tjllG9CqT1zjBQnFTFq33ePXpvmRwME,5892
62
64
  dbos/cli/_github_init.py,sha256=Y_bDF9gfO2jB1id4FV5h1oIxEJRWyqVjhb7bNEa5nQ0,3224
63
- dbos/cli/_template_init.py,sha256=AfuMaO8bmr9WsPNHr6j2cp7kjVVZDUpH7KpbTg0hhFs,2722
64
- dbos/cli/cli.py,sha256=pet2vf4GLlSDfxfQbsplM9uewD6pJK2ZpLgZlwgBU5w,15627
65
+ dbos/cli/_template_init.py,sha256=-WW3kbq0W_Tq4WbMqb1UGJG3xvJb3woEY5VspG95Srk,2857
66
+ dbos/cli/cli.py,sha256=G55sZJxfmvUGvWr0hoIWwVZBy-fJdpCsTsZmuHT1CjA,16049
65
67
  dbos/dbos-config.schema.json,sha256=HtF_njVTGHLdzBGZ4OrGQz3qbPPT0Go-iwd1PgFVTNg,5847
66
68
  dbos/py.typed,sha256=QfzXT1Ktfk3Rj84akygc7_42z0lRpCq0Ilh8OXI6Zas,44
67
69
  version/__init__.py,sha256=L4sNxecRuqdtSFdpUGX3TtBi9KL3k7YsZVIvv-fv9-A,1678
68
- dbos-0.24.0a15.dist-info/RECORD,,
70
+ dbos-0.25.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: pdm-backend (2.4.3)
2
+ Generator: pdm-backend (2.4.4)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any