dbos 2.4.0a7__py3-none-any.whl → 2.6.0a8__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 dbos might be problematic. Click here for more details.

@@ -4,10 +4,8 @@ from typing import TYPE_CHECKING, List, Optional, Union
4
4
  from dbos._context import get_local_dbos_context
5
5
  from dbos._utils import generate_uuid
6
6
 
7
- from ._app_db import ApplicationDatabase
8
7
  from ._sys_db import (
9
8
  GetWorkflowsInput,
10
- StepInfo,
11
9
  SystemDatabase,
12
10
  WorkflowStatus,
13
11
  WorkflowStatusString,
@@ -101,19 +99,8 @@ def get_workflow(sys_db: SystemDatabase, workflow_id: str) -> Optional[WorkflowS
101
99
  return infos[0]
102
100
 
103
101
 
104
- def list_workflow_steps(
105
- sys_db: SystemDatabase, app_db: Optional[ApplicationDatabase], workflow_id: str
106
- ) -> List[StepInfo]:
107
- steps = sys_db.get_workflow_steps(workflow_id)
108
- transactions = app_db.get_transactions(workflow_id) if app_db else []
109
- merged_steps = steps + transactions
110
- merged_steps.sort(key=lambda step: step["function_id"])
111
- return merged_steps
112
-
113
-
114
102
  def fork_workflow(
115
103
  sys_db: SystemDatabase,
116
- app_db: Optional[ApplicationDatabase],
117
104
  workflow_id: str,
118
105
  start_step: int,
119
106
  *,
@@ -126,8 +113,6 @@ def fork_workflow(
126
113
  ctx.id_assigned_for_next_workflow = ""
127
114
  else:
128
115
  forked_workflow_id = generate_uuid()
129
- if app_db:
130
- app_db.clone_workflow_transactions(workflow_id, forked_workflow_id, start_step)
131
116
  sys_db.fork_workflow(
132
117
  workflow_id,
133
118
  forked_workflow_id,
dbos/cli/cli.py CHANGED
@@ -1,9 +1,9 @@
1
1
  import json
2
+ import logging
2
3
  import os
3
4
  import platform
4
5
  import signal
5
6
  import subprocess
6
- import time
7
7
  import typing
8
8
  from os import path
9
9
  from typing import Annotated, Any, List, Optional, Tuple
@@ -13,7 +13,7 @@ import typer
13
13
 
14
14
  from dbos._context import SetWorkflowID
15
15
  from dbos._debug import debug_workflow, parse_start_command
16
- from dbos.cli.migration import grant_dbos_schema_permissions, migrate_dbos_databases
16
+ from dbos.cli.migration import run_dbos_database_migrations
17
17
 
18
18
  from .._client import DBOSClient
19
19
  from .._dbos_config import (
@@ -25,6 +25,7 @@ from .._dbos_config import (
25
25
  load_config,
26
26
  )
27
27
  from .._docker_pg_helper import start_docker_pg, stop_docker_pg
28
+ from .._logger import dbos_logger
28
29
  from .._sys_db import SystemDatabase
29
30
  from .._utils import GlobalParams
30
31
  from ..cli._github_init import create_template_from_github
@@ -49,6 +50,7 @@ def _get_db_url(
49
50
  Otherwise fallback to the same SQLite Postgres URL than the DBOS library.
50
51
  Note that for the latter to be possible, a configuration file must have been found, with an application name set.
51
52
  """
53
+ dbos_logger.setLevel(logging.WARNING) # The CLI should not emit INFO logs
52
54
  if os.environ.get("DBOS__CLOUD") == "true":
53
55
  system_database_url = os.environ.get("DBOS_SYSTEM_DATABASE_URL")
54
56
  application_database_url = os.environ.get("DBOS_DATABASE_URL")
@@ -72,7 +74,7 @@ def _get_db_url(
72
74
  _app_db_name = _app_name_to_db_name(config["name"])
73
75
  # Fallback on the same defaults than the DBOS library
74
76
  default_url = f"sqlite:///{_app_db_name}.sqlite"
75
- return default_url, default_url
77
+ return default_url, None
76
78
  except (FileNotFoundError, OSError):
77
79
  typer.echo(
78
80
  f"Error: Missing database URL: please set it using CLI flags or your dbos-config.yaml file.",
@@ -294,25 +296,13 @@ def migrate(
294
296
  schema = "dbos"
295
297
  typer.echo(f"DBOS system schema: {schema}")
296
298
 
297
- # First, run DBOS migrations on the system database and the application database
298
- migrate_dbos_databases(
299
- app_database_url=application_database_url,
299
+ run_dbos_database_migrations(
300
300
  system_database_url=system_database_url,
301
+ app_database_url=application_database_url,
301
302
  schema=schema,
303
+ application_role=application_role,
302
304
  )
303
305
 
304
- # Next, assign permissions on the DBOS schema to the application role, if any
305
- if application_role:
306
- if application_database_url:
307
- grant_dbos_schema_permissions(
308
- database_url=application_database_url,
309
- role_name=application_role,
310
- schema=schema,
311
- )
312
- grant_dbos_schema_permissions(
313
- database_url=system_database_url, role_name=application_role, schema=schema
314
- )
315
-
316
306
  # Next, run any custom migration commands specified in the configuration
317
307
  if os.path.exists("dbos-config.yaml"):
318
308
  config = load_config(silent=True)
dbos/cli/migration.py CHANGED
@@ -8,8 +8,35 @@ from dbos._serialization import DefaultSerializer
8
8
  from dbos._sys_db import SystemDatabase
9
9
 
10
10
 
11
+ def run_dbos_database_migrations(
12
+ system_database_url: str,
13
+ *,
14
+ app_database_url: Optional[str] = None,
15
+ schema: str = "dbos",
16
+ application_role: Optional[str] = None,
17
+ ) -> None:
18
+ # First, run DBOS migrations on the system database and (optionally) the application database
19
+ migrate_dbos_databases(
20
+ system_database_url=system_database_url,
21
+ app_database_url=app_database_url,
22
+ schema=schema,
23
+ )
24
+
25
+ # Then, assign permissions on the DBOS schema to the application role, if any
26
+ if application_role:
27
+ if app_database_url:
28
+ grant_dbos_schema_permissions(
29
+ database_url=app_database_url,
30
+ role_name=application_role,
31
+ schema=schema,
32
+ )
33
+ grant_dbos_schema_permissions(
34
+ database_url=system_database_url, role_name=application_role, schema=schema
35
+ )
36
+
37
+
11
38
  def migrate_dbos_databases(
12
- app_database_url: Optional[str], system_database_url: str, schema: str
39
+ system_database_url: str, app_database_url: Optional[str], schema: str
13
40
  ) -> None:
14
41
  app_db = None
15
42
  sys_db = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 2.4.0a7
3
+ Version: 2.6.0a8
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -1,43 +1,43 @@
1
- dbos-2.4.0a7.dist-info/METADATA,sha256=QfQAxKiyjgeLossCW9-CWaqwuGYS0Oo3YXCqUMPybB4,14532
2
- dbos-2.4.0a7.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
- dbos-2.4.0a7.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
- dbos-2.4.0a7.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
- dbos/__init__.py,sha256=M7FdFSBGhcvaLIXrNw_0eR68ijwMWV7_UEyimHMP_F4,1039
1
+ dbos-2.6.0a8.dist-info/METADATA,sha256=Q5YT8N3zg_HKf39l8yJ9eYkxjNatipzHYhay___kURw,14532
2
+ dbos-2.6.0a8.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
3
+ dbos-2.6.0a8.dist-info/entry_points.txt,sha256=_QOQ3tVfEjtjBlr1jS4sHqHya9lI2aIEIWkz8dqYp14,58
4
+ dbos-2.6.0a8.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
5
+ dbos/__init__.py,sha256=V6xIct0dCicUds9El1z4cHUPVlEWDqAtvrO0Uo2Tvxo,1131
6
6
  dbos/__main__.py,sha256=G7Exn-MhGrVJVDbgNlpzhfh8WMX_72t3_oJaFT9Lmt8,653
7
7
  dbos/_admin_server.py,sha256=Kce_Cv6JXZBABzfOcNJdVHOwEukmp7SvO24TSa-gLIM,16371
8
- dbos/_app_db.py,sha256=3XHvTePe1JaAI42rO3waWGoEeDyXkFKGzTFwJxQHUmo,16464
8
+ dbos/_app_db.py,sha256=NpLnA1-WCMp7lOxyYVQ1iQMMleQ6FxUAhpJWcAQKtm8,14259
9
9
  dbos/_classproperty.py,sha256=f0X-_BySzn3yFDRKB2JpCbLYQ9tLwt1XftfshvY7CBs,626
10
- dbos/_client.py,sha256=Upl9tqrMKWQKDv8L13zaGbI03uWF2Cw3c7W_Cg-Bsls,20018
11
- dbos/_conductor/conductor.py,sha256=8QNK2kXH2fG_YUg6E2fKGEhtIwFMcZIeelgP9b0kwrQ,24283
12
- dbos/_conductor/protocol.py,sha256=nVjpcSw_OPoCM7NBU_IRWnk9dFQjOgAkg0ufhj8lFzI,8901
10
+ dbos/_client.py,sha256=sMm9biHRrpWt0HRlcdmcxwZFmudB2YRzV0o3QMxKBZQ,20186
11
+ dbos/_conductor/conductor.py,sha256=Yp1K6Fqx4iFmftIyvV60Q50ZczMQU86luuLItTIRAVI,26540
12
+ dbos/_conductor/protocol.py,sha256=mCQU5sjgUWYSbAt5QPUWd-Fq-R9AQASgzkgprBnQy78,9338
13
13
  dbos/_context.py,sha256=GOoSpv1BE4jAXtMzTvPfy2VR6Rr4fSqTb0IjgCR_ER4,28165
14
- dbos/_core.py,sha256=FCspRQFRMFyHpkl4vqR8IEw3aitD-VWB77CMVQrlyy8,50257
14
+ dbos/_core.py,sha256=JVTqgtx0vR-xWNQAYqnhN3OWfnnacmlj6BLrPFzajE4,53656
15
15
  dbos/_croniter.py,sha256=XHAyUyibs_59sJQfSNWkP7rqQY6_XrlfuuCxk4jYqek,47559
16
- dbos/_dbos.py,sha256=KUD5YJUYhPasx0yLZHpqjLVqcnE8UYWIpK7OZJlNR6M,60050
17
- dbos/_dbos_config.py,sha256=eV8_jBRLotWwx0_aGO7VoqbeB0vyN9dmIgG4G22tIeE,24814
16
+ dbos/_dbos.py,sha256=30XRfHCvg4fmgP6bwlgoOH2D44DEOvpKxs5dY-Gtae0,60218
17
+ dbos/_dbos_config.py,sha256=-gLgDuWlooVfkiXF8IoQn2P4Q6yDqu1HfZoKD2BcUOo,23981
18
18
  dbos/_debouncer.py,sha256=G3QwqNCmdWC0zDy3LMV4kfK771aI-Kx8ULBgU7NXAwE,15294
19
19
  dbos/_debug.py,sha256=0MfgNqutCUhI4PEmmra9x7f3DiFE_0nscfUCHdLimEY,1415
20
20
  dbos/_docker_pg_helper.py,sha256=xySum4hTA8TVMBODoG19u4cXQAB1vCock-jwM2pnmSI,7791
21
21
  dbos/_error.py,sha256=GwO0Ng4d4iB52brY09-Ss6Cz_V28Xc0D0cRCzZ6XmNM,8688
22
22
  dbos/_event_loop.py,sha256=cvaFN9-II3MsHEOq8QoICc_8qSKrjikMlLfuhC3Y8Dk,2923
23
- dbos/_fastapi.py,sha256=2Dss2CpAbiGo2dNTrcfMHufUTdj_gUukJ_qZHbwBQao,3422
23
+ dbos/_fastapi.py,sha256=OgYaLVaIljFliRt3LUJq6DCPOUkS1qmrTmB1-_JKV3A,3468
24
24
  dbos/_flask.py,sha256=_ST-eLLrg_KVj1eUvbeT2XeDIlECyvG9uOp3KCSjb2A,1653
25
25
  dbos/_kafka.py,sha256=cA3hXyT-FR4LQZnaBMVLTZn7oko76rcTUC_kOo6aSis,4352
26
26
  dbos/_kafka_message.py,sha256=NYvOXNG3Qn7bghn1pv3fg4Pbs86ILZGcK4IB-MLUNu0,409
27
- dbos/_logger.py,sha256=vJhmTltDGFSZCpfcnj5EGJJWYgf-b-7taV2thwM67Rc,5160
28
- dbos/_migration.py,sha256=GJdxHhMUnsr3pjrGwi1f4PT76ABnn9kFUyqWp4Hakmw,11701
27
+ dbos/_logger.py,sha256=99z2NuLsPy9Z0c1XeV0D8bQE6lrFG60_m9m3FBN1XcM,5576
28
+ dbos/_migration.py,sha256=KI_iH96SoMu6cMt4WRux0kgtgajJkrBrNvfFbQ1tGyg,12703
29
29
  dbos/_outcome.py,sha256=7HvosMfEHTh1U5P6xok7kFTGLwa2lPaul0YApb3UnN4,8191
30
- dbos/_queue.py,sha256=GmqZHl9smES1KSmpauhSdsnZFJHDyfvRArmC-jBibhw,6228
30
+ dbos/_queue.py,sha256=WbTvaaj522kTxkoGGsGC405xCupsmMzU2UXiijJV2z4,8330
31
31
  dbos/_recovery.py,sha256=K-wlFhdf4yGRm6cUzyhcTjQUS0xp2T5rdNMLiiBErYg,2882
32
32
  dbos/_registrations.py,sha256=bEOntObnWaBylnebr5ZpcX2hk7OVLDd1z4BvW4_y3zA,7380
33
33
  dbos/_roles.py,sha256=kCuhhg8XLtrHCgKgm44I0abIRTGHltf88OwjEKAUggk,2317
34
34
  dbos/_scheduler.py,sha256=PLiCSUujlfEfojTnHwzY-P_AEOVEx7bvWvU5BuMgLPY,2708
35
35
  dbos/_schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  dbos/_schemas/application_database.py,sha256=SypAS9l9EsaBHFn9FR8jmnqt01M74d9AF1AMa4m2hhI,1040
37
- dbos/_schemas/system_database.py,sha256=tQAFCnEyZ7bEXZm3FbGIYk5SNGk-AHA3R_vuR0hfH8s,5717
37
+ dbos/_schemas/system_database.py,sha256=i_ex-MxNobpwX4VThwIndI9igsfJ7DyICd3u7ytev7I,6549
38
38
  dbos/_serialization.py,sha256=ZGrkN5UclSLOqMVZgYpT72pw1l888ZXRoYuu3pIg3PA,2957
39
- dbos/_sys_db.py,sha256=nxxIgwtzoHCRWXydwQHQ65YOTMFmUVX_p8EDZftUXXg,86259
40
- dbos/_sys_db_postgres.py,sha256=_3m3hF6Pc23iZfUlIFYtDuC1Tw6KsjYqnDQE0HZpjt4,6965
39
+ dbos/_sys_db.py,sha256=hEC_uoRuzhwVRnIkfBKZKLx-fqA57HXmzVbhyD6RfpM,95476
40
+ dbos/_sys_db_postgres.py,sha256=oYrF1t5N7nMPx_taEVdveg729UYTnAw3zu0UcTHa3wA,7249
41
41
  dbos/_sys_db_sqlite.py,sha256=ifjKdy-Z9vlVIBf5L6XnSaNjiBdvqPE73asVHim4A5Q,6998
42
42
  dbos/_templates/dbos-db-starter/README.md,sha256=GhxhBj42wjTt1fWEtwNriHbJuKb66Vzu89G4pxNHw2g,930
43
43
  dbos/_templates/dbos-db-starter/__package/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -46,14 +46,14 @@ dbos/_templates/dbos-db-starter/__package/schema.py,sha256=7Z27JGC8yy7Z44cbVXIRE
46
46
  dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos,sha256=0wPktElM7kMB3OPHTXw4xBk9bgGKMqOHrrr7x_R23Z8,446
47
47
  dbos/_templates/dbos-db-starter/migrations/create_table.py.dbos,sha256=pVm2Q0AsxS8pg85llbrXFD6jMccMqGjhGRjTEvS-hXk,942
48
48
  dbos/_templates/dbos-db-starter/start_postgres_docker.py,sha256=lQVLlYO5YkhGPEgPqwGc7Y8uDKse9HsWv5fynJEFJHM,1681
49
- dbos/_tracer.py,sha256=jVCn4EiPl8Lo21oN39yELAhS79JQilqSDLLFhkFEPCc,3993
49
+ dbos/_tracer.py,sha256=nD6a6LKMMfC0b3zCsy1ai6zk4bMCgNSaeHpE_tCsip0,4365
50
50
  dbos/_utils.py,sha256=OHFOQ1r5goT75eRRiddJd-s0-ik3zt3jSOIMUoElEhQ,2007
51
- dbos/_workflow_commands.py,sha256=qQFFb4iQ1qReC4iwCTipDBVff0pjxtmeHM9uDdNg9Xg,5184
51
+ dbos/_workflow_commands.py,sha256=YV5hHwAwtU3NB4qSQ2j-YYOlMAJwXNkCyEJ5qkFmM_E,4602
52
52
  dbos/cli/_github_init.py,sha256=R_94Fnn40CAmPy-zM00lwHi0ndyfv57TmIooADjmag4,3378
53
53
  dbos/cli/_template_init.py,sha256=AltKk256VocgvxLpuTxpjJyACrdHFjbGoqYhHzeLae4,2649
54
- dbos/cli/cli.py,sha256=AHz_JJj_qWCTRV8yT1RSA-hISFVIJrE9eUalApw9sxg,27149
55
- dbos/cli/migration.py,sha256=jRAr4H7Bpf-PfmLoOA6qXk9i15Cl1TehUz-cphjvYJM,3805
54
+ dbos/cli/cli.py,sha256=iSE6qQ7wVEDscDIlZlVgOAdpJI2EG7dNE04syFyc2Q0,26728
55
+ dbos/cli/migration.py,sha256=oNgoMwrq_3L9McBlfMBZFjPkcfu_bW7_V6WhZJgXbDM,4703
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.4.0a7.dist-info/RECORD,,
59
+ dbos-2.6.0a8.dist-info/RECORD,,
File without changes