dbos 0.27.0a4__tar.gz → 0.27.0a7__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.
Files changed (104) hide show
  1. {dbos-0.27.0a4 → dbos-0.27.0a7}/PKG-INFO +1 -1
  2. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/__init__.py +7 -1
  3. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_admin_server.py +1 -1
  4. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/cli/cli.py +11 -11
  5. {dbos-0.27.0a4 → dbos-0.27.0a7}/pyproject.toml +1 -1
  6. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_async.py +1 -1
  7. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_dbos.py +9 -6
  8. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_queue.py +2 -1
  9. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_spans.py +2 -2
  10. {dbos-0.27.0a4 → dbos-0.27.0a7}/LICENSE +0 -0
  11. {dbos-0.27.0a4 → dbos-0.27.0a7}/README.md +0 -0
  12. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/__main__.py +0 -0
  13. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_app_db.py +0 -0
  14. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_classproperty.py +0 -0
  15. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_client.py +0 -0
  16. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_conductor/conductor.py +0 -0
  17. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_conductor/protocol.py +0 -0
  18. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_context.py +0 -0
  19. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_core.py +0 -0
  20. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_croniter.py +0 -0
  21. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_dbos.py +0 -0
  22. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_dbos_config.py +0 -0
  23. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_debug.py +0 -0
  24. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_docker_pg_helper.py +0 -0
  25. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_error.py +0 -0
  26. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_event_loop.py +0 -0
  27. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_fastapi.py +0 -0
  28. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_flask.py +0 -0
  29. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_kafka.py +0 -0
  30. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_kafka_message.py +0 -0
  31. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_logger.py +0 -0
  32. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/env.py +0 -0
  33. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/script.py.mako +0 -0
  34. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
  35. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
  36. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
  37. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/83f3732ae8e7_workflow_timeout.py +0 -0
  38. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
  39. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
  40. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
  41. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
  42. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
  43. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_outcome.py +0 -0
  44. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_queue.py +0 -0
  45. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_recovery.py +0 -0
  46. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_registrations.py +0 -0
  47. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_request.py +0 -0
  48. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_roles.py +0 -0
  49. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_scheduler.py +0 -0
  50. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_schemas/__init__.py +0 -0
  51. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_schemas/application_database.py +0 -0
  52. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_schemas/system_database.py +0 -0
  53. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_serialization.py +0 -0
  54. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_sys_db.py +0 -0
  55. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/README.md +0 -0
  56. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
  57. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/__package/main.py +0 -0
  58. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
  59. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
  60. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
  61. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
  62. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
  63. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
  64. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
  65. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_tracer.py +0 -0
  66. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_utils.py +0 -0
  67. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/_workflow_commands.py +0 -0
  68. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/cli/_github_init.py +0 -0
  69. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/cli/_template_init.py +0 -0
  70. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/dbos-config.schema.json +0 -0
  71. {dbos-0.27.0a4 → dbos-0.27.0a7}/dbos/py.typed +0 -0
  72. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/__init__.py +0 -0
  73. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/atexit_no_ctor.py +0 -0
  74. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/atexit_no_launch.py +0 -0
  75. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/classdefs.py +0 -0
  76. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/client_collateral.py +0 -0
  77. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/client_worker.py +0 -0
  78. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/conftest.py +0 -0
  79. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/dupname_classdefs1.py +0 -0
  80. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/dupname_classdefsa.py +0 -0
  81. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/more_classdefs.py +0 -0
  82. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/queuedworkflow.py +0 -0
  83. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_admin_server.py +0 -0
  84. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_classdecorators.py +0 -0
  85. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_client.py +0 -0
  86. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_concurrency.py +0 -0
  87. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_config.py +0 -0
  88. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_croniter.py +0 -0
  89. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_debug.py +0 -0
  90. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_docker_secrets.py +0 -0
  91. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_failures.py +0 -0
  92. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_fastapi.py +0 -0
  93. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_fastapi_roles.py +0 -0
  94. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_flask.py +0 -0
  95. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_kafka.py +0 -0
  96. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_outcome.py +0 -0
  97. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_package.py +0 -0
  98. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_scheduler.py +0 -0
  99. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_schema_migration.py +0 -0
  100. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_singleton.py +0 -0
  101. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_sqlalchemy.py +0 -0
  102. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_workflow_introspection.py +0 -0
  103. {dbos-0.27.0a4 → dbos-0.27.0a7}/tests/test_workflow_management.py +0 -0
  104. {dbos-0.27.0a4 → dbos-0.27.0a7}/version/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.27.0a4
3
+ Version: 0.27.0a7
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -1,6 +1,11 @@
1
1
  from . import _error as error
2
2
  from ._client import DBOSClient, EnqueueOptions
3
- from ._context import DBOSContextEnsure, DBOSContextSetAuth, SetWorkflowID
3
+ from ._context import (
4
+ DBOSContextEnsure,
5
+ DBOSContextSetAuth,
6
+ SetWorkflowID,
7
+ SetWorkflowTimeout,
8
+ )
4
9
  from ._dbos import DBOS, DBOSConfiguredInstance, WorkflowHandle, WorkflowHandleAsync
5
10
  from ._dbos_config import ConfigFile, DBOSConfig, get_dbos_database_url, load_config
6
11
  from ._kafka_message import KafkaMessage
@@ -19,6 +24,7 @@ __all__ = [
19
24
  "GetWorkflowsInput",
20
25
  "KafkaMessage",
21
26
  "SetWorkflowID",
27
+ "SetWorkflowTimeout",
22
28
  "WorkflowHandle",
23
29
  "WorkflowHandleAsync",
24
30
  "WorkflowStatus",
@@ -209,7 +209,7 @@ class AdminRequestHandler(BaseHTTPRequestHandler):
209
209
  self._end_headers()
210
210
 
211
211
  def _handle_steps(self, workflow_id: str) -> None:
212
- steps = self.dbos._sys_db.get_workflow_steps(workflow_id)
212
+ steps = self.dbos.list_workflow_steps(workflow_id)
213
213
 
214
214
  updated_steps = [
215
215
  {
@@ -372,7 +372,7 @@ def list(
372
372
  typer.Option(
373
373
  "--sort-desc",
374
374
  "-d",
375
- help="Sort the results in descending order",
375
+ help="Sort the results in descending order (older first)",
376
376
  ),
377
377
  ] = False,
378
378
  offset: Annotated[
@@ -442,7 +442,7 @@ def steps(
442
442
  help="Cancel a workflow so it is no longer automatically retried or restarted"
443
443
  )
444
444
  def cancel(
445
- uuid: Annotated[str, typer.Argument()],
445
+ workflow_id: Annotated[str, typer.Argument()],
446
446
  db_url: Annotated[
447
447
  typing.Optional[str],
448
448
  typer.Option(
@@ -452,12 +452,12 @@ def cancel(
452
452
  ),
453
453
  ] = None,
454
454
  ) -> None:
455
- start_client(db_url=db_url).cancel_workflow(workflow_id=uuid)
455
+ start_client(db_url=db_url).cancel_workflow(workflow_id=workflow_id)
456
456
 
457
457
 
458
458
  @workflow.command(help="Resume a workflow that has been cancelled")
459
459
  def resume(
460
- uuid: Annotated[str, typer.Argument()],
460
+ workflow_id: Annotated[str, typer.Argument()],
461
461
  db_url: Annotated[
462
462
  typing.Optional[str],
463
463
  typer.Option(
@@ -467,12 +467,12 @@ def resume(
467
467
  ),
468
468
  ] = None,
469
469
  ) -> None:
470
- start_client(db_url=db_url).resume_workflow(workflow_id=uuid)
470
+ start_client(db_url=db_url).resume_workflow(workflow_id=workflow_id)
471
471
 
472
472
 
473
473
  @workflow.command(help="Restart a workflow from the beginning with a new id")
474
474
  def restart(
475
- uuid: Annotated[str, typer.Argument()],
475
+ workflow_id: Annotated[str, typer.Argument()],
476
476
  db_url: Annotated[
477
477
  typing.Optional[str],
478
478
  typer.Option(
@@ -484,7 +484,7 @@ def restart(
484
484
  ) -> None:
485
485
  status = (
486
486
  start_client(db_url=db_url)
487
- .fork_workflow(workflow_id=uuid, start_step=1)
487
+ .fork_workflow(workflow_id=workflow_id, start_step=1)
488
488
  .get_status()
489
489
  )
490
490
  print(jsonpickle.encode(status, unpicklable=False))
@@ -494,13 +494,13 @@ def restart(
494
494
  help="fork a workflow from the beginning with a new id and from a step"
495
495
  )
496
496
  def fork(
497
- uuid: Annotated[str, typer.Argument()],
497
+ workflow_id: Annotated[str, typer.Argument()],
498
498
  step: Annotated[
499
499
  int,
500
500
  typer.Option(
501
501
  "--step",
502
502
  "-s",
503
- help="Restart from this step (default: first step)",
503
+ help="Restart from this step",
504
504
  ),
505
505
  ] = 1,
506
506
  db_url: Annotated[
@@ -514,7 +514,7 @@ def fork(
514
514
  ) -> None:
515
515
  status = (
516
516
  start_client(db_url=db_url)
517
- .fork_workflow(workflow_id=uuid, start_step=step)
517
+ .fork_workflow(workflow_id=workflow_id, start_step=step)
518
518
  .get_status()
519
519
  )
520
520
  print(jsonpickle.encode(status, unpicklable=False))
@@ -579,7 +579,7 @@ def list_queue(
579
579
  typer.Option(
580
580
  "--sort-desc",
581
581
  "-d",
582
- help="Sort the results in descending order",
582
+ help="Sort the results in descending order (older first)",
583
583
  ),
584
584
  ] = False,
585
585
  offset: Annotated[
@@ -28,7 +28,7 @@ dependencies = [
28
28
  ]
29
29
  requires-python = ">=3.9"
30
30
  readme = "README.md"
31
- version = "0.27.0a4"
31
+ version = "0.27.0a7"
32
32
 
33
33
  [project.license]
34
34
  text = "MIT"
@@ -7,7 +7,7 @@ import pytest
7
7
  import sqlalchemy as sa
8
8
 
9
9
  # Public API
10
- from dbos import DBOS, Queue, SetWorkflowID, WorkflowHandleAsync
10
+ from dbos import DBOS, Queue, SetWorkflowID, SetWorkflowTimeout, WorkflowHandleAsync
11
11
  from dbos._context import SetWorkflowTimeout, assert_current_dbos_context
12
12
  from dbos._dbos import WorkflowHandle
13
13
  from dbos._dbos_config import ConfigFile
@@ -12,14 +12,17 @@ import pytest
12
12
  import sqlalchemy as sa
13
13
 
14
14
  # Public API
15
- from dbos import DBOS, ConfigFile, SetWorkflowID, WorkflowHandle, WorkflowStatusString
16
-
17
- # Private API because this is a test
18
- from dbos._context import (
15
+ from dbos import (
16
+ DBOS,
17
+ ConfigFile,
18
+ SetWorkflowID,
19
19
  SetWorkflowTimeout,
20
- assert_current_dbos_context,
21
- get_local_dbos_context,
20
+ WorkflowHandle,
21
+ WorkflowStatusString,
22
22
  )
23
+
24
+ # Private API because this is a test
25
+ from dbos._context import assert_current_dbos_context, get_local_dbos_context
23
26
  from dbos._error import (
24
27
  DBOSConflictingRegistrationError,
25
28
  DBOSMaxStepRetriesExceeded,
@@ -16,9 +16,10 @@ from dbos import (
16
16
  DBOSConfiguredInstance,
17
17
  Queue,
18
18
  SetWorkflowID,
19
+ SetWorkflowTimeout,
19
20
  WorkflowHandle,
20
21
  )
21
- from dbos._context import SetWorkflowTimeout, assert_current_dbos_context
22
+ from dbos._context import assert_current_dbos_context
22
23
  from dbos._schemas.system_database import SystemSchema
23
24
  from dbos._sys_db import WorkflowStatusString
24
25
  from dbos._utils import GlobalParams
@@ -46,7 +46,7 @@ def test_spans(dbos: DBOS) -> None:
46
46
  assert span.context is not None
47
47
 
48
48
  assert spans[0].name == test_step.__name__
49
- assert spans[1].name == 'a new span'
49
+ assert spans[1].name == "a new span"
50
50
  assert spans[2].name == test_workflow.__name__
51
51
  assert spans[3].name == test_step.__name__
52
52
 
@@ -91,7 +91,7 @@ async def test_spans_async(dbos: DBOS) -> None:
91
91
  assert span.context is not None
92
92
 
93
93
  assert spans[0].name == test_step.__name__
94
- assert spans[1].name == 'a new span'
94
+ assert spans[1].name == "a new span"
95
95
  assert spans[2].name == test_workflow.__name__
96
96
  assert spans[3].name == test_step.__name__
97
97
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes