dbos 0.26.0a1__tar.gz → 0.26.0a3__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.26.0a1 → dbos-0.26.0a3}/PKG-INFO +1 -1
  2. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_admin_server.py +7 -1
  3. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_client.py +2 -4
  4. {dbos-0.26.0a1 → dbos-0.26.0a3}/pyproject.toml +1 -1
  5. {dbos-0.26.0a1 → dbos-0.26.0a3}/LICENSE +0 -0
  6. {dbos-0.26.0a1 → dbos-0.26.0a3}/README.md +0 -0
  7. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/__init__.py +0 -0
  8. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/__main__.py +0 -0
  9. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_app_db.py +0 -0
  10. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_classproperty.py +0 -0
  11. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_cloudutils/authentication.py +0 -0
  12. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_cloudutils/cloudutils.py +0 -0
  13. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_cloudutils/databases.py +0 -0
  14. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_conductor/conductor.py +0 -0
  15. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_conductor/protocol.py +0 -0
  16. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_context.py +0 -0
  17. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_core.py +0 -0
  18. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_croniter.py +0 -0
  19. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_db_wizard.py +0 -0
  20. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_dbos.py +0 -0
  21. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_dbos_config.py +0 -0
  22. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_debug.py +0 -0
  23. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_error.py +0 -0
  24. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_fastapi.py +0 -0
  25. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_flask.py +0 -0
  26. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_kafka.py +0 -0
  27. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_kafka_message.py +0 -0
  28. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_logger.py +0 -0
  29. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/env.py +0 -0
  30. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/script.py.mako +0 -0
  31. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
  32. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
  33. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
  34. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
  35. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
  36. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
  37. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
  38. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
  39. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_outcome.py +0 -0
  40. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_queue.py +0 -0
  41. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_recovery.py +0 -0
  42. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_registrations.py +0 -0
  43. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_request.py +0 -0
  44. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_roles.py +0 -0
  45. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_scheduler.py +0 -0
  46. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_schemas/__init__.py +0 -0
  47. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_schemas/application_database.py +0 -0
  48. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_schemas/system_database.py +0 -0
  49. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_serialization.py +0 -0
  50. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_sys_db.py +0 -0
  51. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/README.md +0 -0
  52. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
  53. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/__package/main.py +0 -0
  54. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
  55. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
  56. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
  57. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
  58. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
  59. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
  60. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
  61. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_tracer.py +0 -0
  62. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_utils.py +0 -0
  63. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/_workflow_commands.py +0 -0
  64. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/cli/_github_init.py +0 -0
  65. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/cli/_template_init.py +0 -0
  66. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/cli/cli.py +0 -0
  67. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/dbos-config.schema.json +0 -0
  68. {dbos-0.26.0a1 → dbos-0.26.0a3}/dbos/py.typed +0 -0
  69. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/__init__.py +0 -0
  70. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/atexit_no_ctor.py +0 -0
  71. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/atexit_no_launch.py +0 -0
  72. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/classdefs.py +0 -0
  73. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/client_collateral.py +0 -0
  74. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/client_worker.py +0 -0
  75. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/conftest.py +0 -0
  76. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/more_classdefs.py +0 -0
  77. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/queuedworkflow.py +0 -0
  78. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_admin_server.py +0 -0
  79. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_async.py +0 -0
  80. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_classdecorators.py +0 -0
  81. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_client.py +0 -0
  82. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_concurrency.py +0 -0
  83. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_config.py +0 -0
  84. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_croniter.py +0 -0
  85. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_dbos.py +0 -0
  86. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_dbwizard.py +0 -0
  87. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_debug.py +0 -0
  88. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_docker_secrets.py +0 -0
  89. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_failures.py +0 -0
  90. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_fastapi.py +0 -0
  91. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_fastapi_roles.py +0 -0
  92. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_flask.py +0 -0
  93. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_kafka.py +0 -0
  94. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_outcome.py +0 -0
  95. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_package.py +0 -0
  96. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_queue.py +0 -0
  97. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_scheduler.py +0 -0
  98. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_schema_migration.py +0 -0
  99. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_singleton.py +0 -0
  100. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_spans.py +0 -0
  101. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_sqlalchemy.py +0 -0
  102. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_workflow_cancel.py +0 -0
  103. {dbos-0.26.0a1 → dbos-0.26.0a3}/tests/test_workflow_cmds.py +0 -0
  104. {dbos-0.26.0a1 → dbos-0.26.0a3}/version/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.26.0a1
3
+ Version: 0.26.0a3
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -9,6 +9,7 @@ from typing import TYPE_CHECKING, Any, List, TypedDict
9
9
 
10
10
  from ._logger import dbos_logger
11
11
  from ._recovery import recover_pending_workflows
12
+ from ._utils import GlobalParams
12
13
 
13
14
  if TYPE_CHECKING:
14
15
  from ._dbos import DBOS
@@ -44,6 +45,7 @@ class AdminServer:
44
45
  class AdminRequestHandler(BaseHTTPRequestHandler):
45
46
  def __init__(self, dbos: DBOS, *args: Any, **kwargs: Any) -> None:
46
47
  self.dbos = dbos
48
+ self.is_deactivated = False
47
49
  super().__init__(*args, **kwargs)
48
50
 
49
51
  def _end_headers(self) -> None:
@@ -59,10 +61,14 @@ class AdminRequestHandler(BaseHTTPRequestHandler):
59
61
  self._end_headers()
60
62
  self.wfile.write("healthy".encode("utf-8"))
61
63
  elif self.path == _deactivate_path:
64
+ if not self.is_deactivated:
65
+ dbos_logger.info(
66
+ f"Deactivating DBOS executor {GlobalParams.executor_id} with version {GlobalParams.app_version}. This executor will complete existing workflows but will not start new workflows."
67
+ )
68
+ self.is_deactivated = True
62
69
  # Stop all scheduled workflows, queues, and kafka loops
63
70
  for event in self.dbos.stop_events:
64
71
  event.set()
65
-
66
72
  self.send_response(200)
67
73
  self._end_headers()
68
74
  self.wfile.write("deactivated".encode("utf-8"))
@@ -22,10 +22,9 @@ R = TypeVar("R", covariant=True) # A generic type for workflow return values
22
22
 
23
23
  class EnqueueOptions(TypedDict):
24
24
  workflow_name: str
25
- workflow_class_name: NotRequired[str]
26
25
  queue_name: str
27
- app_version: NotRequired[str]
28
26
  workflow_id: NotRequired[str]
27
+ app_version: NotRequired[str]
29
28
 
30
29
 
31
30
  class WorkflowHandleClientPolling(Generic[R]):
@@ -86,7 +85,6 @@ class DBOSClient:
86
85
  workflow_name = options["workflow_name"]
87
86
  queue_name = options["queue_name"]
88
87
 
89
- workflow_class_name = options.get("workflow_class_name")
90
88
  app_version = options.get("app_version")
91
89
  max_recovery_attempts = options.get("max_recovery_attempts")
92
90
  if max_recovery_attempts is None:
@@ -99,7 +97,7 @@ class DBOSClient:
99
97
  "workflow_uuid": workflow_id,
100
98
  "status": WorkflowStatusString.ENQUEUED.value,
101
99
  "name": workflow_name,
102
- "class_name": workflow_class_name,
100
+ "class_name": None,
103
101
  "queue_name": queue_name,
104
102
  "app_version": app_version,
105
103
  "config_name": None,
@@ -28,7 +28,7 @@ dependencies = [
28
28
  ]
29
29
  requires-python = ">=3.9"
30
30
  readme = "README.md"
31
- version = "0.26.0a1"
31
+ version = "0.26.0a3"
32
32
 
33
33
  [project.license]
34
34
  text = "MIT"
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes