dbos 1.7.0a3__tar.gz → 1.7.0a4__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 (108) hide show
  1. {dbos-1.7.0a3 → dbos-1.7.0a4}/PKG-INFO +1 -1
  2. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_admin_server.py +6 -2
  3. {dbos-1.7.0a3 → dbos-1.7.0a4}/pyproject.toml +1 -1
  4. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_admin_server.py +24 -6
  5. {dbos-1.7.0a3 → dbos-1.7.0a4}/LICENSE +0 -0
  6. {dbos-1.7.0a3 → dbos-1.7.0a4}/README.md +0 -0
  7. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/__init__.py +0 -0
  8. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/__main__.py +0 -0
  9. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_app_db.py +0 -0
  10. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_classproperty.py +0 -0
  11. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_client.py +0 -0
  12. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_conductor/conductor.py +0 -0
  13. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_conductor/protocol.py +0 -0
  14. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_context.py +0 -0
  15. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_core.py +0 -0
  16. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_croniter.py +0 -0
  17. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_dbos.py +0 -0
  18. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_dbos_config.py +0 -0
  19. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_debug.py +0 -0
  20. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_docker_pg_helper.py +0 -0
  21. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_error.py +0 -0
  22. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_event_loop.py +0 -0
  23. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_fastapi.py +0 -0
  24. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_flask.py +0 -0
  25. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_kafka.py +0 -0
  26. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_kafka_message.py +0 -0
  27. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_logger.py +0 -0
  28. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/env.py +0 -0
  29. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/script.py.mako +0 -0
  30. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
  31. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/27ac6900c6ad_add_queue_dedup.py +0 -0
  32. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
  33. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
  34. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/66478e1b95e5_consolidate_queues.py +0 -0
  35. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/83f3732ae8e7_workflow_timeout.py +0 -0
  36. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/933e86bdac6a_add_queue_priority.py +0 -0
  37. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
  38. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
  39. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
  40. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/d994145b47b6_consolidate_inputs.py +0 -0
  41. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
  42. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
  43. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_outcome.py +0 -0
  44. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_queue.py +0 -0
  45. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_recovery.py +0 -0
  46. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_registrations.py +0 -0
  47. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_roles.py +0 -0
  48. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_scheduler.py +0 -0
  49. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_schemas/__init__.py +0 -0
  50. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_schemas/application_database.py +0 -0
  51. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_schemas/system_database.py +0 -0
  52. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_serialization.py +0 -0
  53. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_sys_db.py +0 -0
  54. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/README.md +0 -0
  55. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
  56. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/__package/main.py.dbos +0 -0
  57. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
  58. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
  59. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
  60. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
  61. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
  62. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
  63. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
  64. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_tracer.py +0 -0
  65. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_utils.py +0 -0
  66. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/_workflow_commands.py +0 -0
  67. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/cli/_github_init.py +0 -0
  68. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/cli/_template_init.py +0 -0
  69. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/cli/cli.py +0 -0
  70. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/dbos-config.schema.json +0 -0
  71. {dbos-1.7.0a3 → dbos-1.7.0a4}/dbos/py.typed +0 -0
  72. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/__init__.py +0 -0
  73. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/atexit_no_ctor.py +0 -0
  74. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/atexit_no_launch.py +0 -0
  75. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/classdefs.py +0 -0
  76. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/client_collateral.py +0 -0
  77. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/client_worker.py +0 -0
  78. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/conftest.py +0 -0
  79. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/dupname_classdefs1.py +0 -0
  80. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/dupname_classdefsa.py +0 -0
  81. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/more_classdefs.py +0 -0
  82. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/queuedworkflow.py +0 -0
  83. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_async.py +0 -0
  84. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_classdecorators.py +0 -0
  85. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_cli.py +0 -0
  86. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_client.py +0 -0
  87. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_concurrency.py +0 -0
  88. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_config.py +0 -0
  89. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_croniter.py +0 -0
  90. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_dbos.py +0 -0
  91. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_debug.py +0 -0
  92. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_docker_secrets.py +0 -0
  93. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_failures.py +0 -0
  94. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_fastapi.py +0 -0
  95. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_fastapi_roles.py +0 -0
  96. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_flask.py +0 -0
  97. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_kafka.py +0 -0
  98. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_outcome.py +0 -0
  99. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_package.py +0 -0
  100. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_queue.py +0 -0
  101. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_scheduler.py +0 -0
  102. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_schema_migration.py +0 -0
  103. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_singleton.py +0 -0
  104. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_spans.py +0 -0
  105. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_sqlalchemy.py +0 -0
  106. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_workflow_introspection.py +0 -0
  107. {dbos-1.7.0a3 → dbos-1.7.0a4}/tests/test_workflow_management.py +0 -0
  108. {dbos-1.7.0a3 → dbos-1.7.0a4}/version/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 1.7.0a3
3
+ Version: 1.7.0a4
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import json
4
4
  import re
5
5
  import threading
6
- from dataclasses import asdict
7
6
  from functools import partial
8
7
  from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
9
8
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, TypedDict
@@ -120,7 +119,12 @@ class AdminRequestHandler(BaseHTTPRequestHandler):
120
119
  self.send_response(404)
121
120
  self._end_headers()
122
121
  return
123
- response_body = json.dumps(workflows[0].__dict__).encode("utf-8")
122
+ workflow_output = (
123
+ conductor_protocol.WorkflowsOutput.from_workflow_information(
124
+ workflows[0]
125
+ )
126
+ )
127
+ response_body = json.dumps(workflow_output.__dict__).encode("utf-8")
124
128
  self.send_response(200)
125
129
  self.send_header("Content-Type", "application/json")
126
130
  self.send_header("Content-Length", str(len(response_body)))
@@ -27,7 +27,7 @@ dependencies = [
27
27
  ]
28
28
  requires-python = ">=3.9"
29
29
  readme = "README.md"
30
- version = "1.7.0a3"
30
+ version = "1.7.0a4"
31
31
 
32
32
  [project.license]
33
33
  text = "MIT"
@@ -639,16 +639,16 @@ def test_get_workflow_by_id(dbos: DBOS) -> None:
639
639
  pass
640
640
 
641
641
  @DBOS.workflow()
642
- def test_workflow_2() -> None:
643
- pass
642
+ def test_workflow_2(my_time: datetime) -> str:
643
+ return DBOS.workflow_id + " completed at " + my_time.isoformat()
644
644
 
645
645
  # Start workflows
646
646
  handle_1 = DBOS.start_workflow(test_workflow_1)
647
- handle_2 = DBOS.start_workflow(test_workflow_2)
647
+ handle_2 = DBOS.start_workflow(test_workflow_2, datetime.now())
648
648
 
649
649
  # Wait for workflows to complete
650
650
  handle_1.get_result()
651
- handle_2.get_result()
651
+ assert handle_2.get_result() is not None
652
652
 
653
653
  # Get the workflow ID of the second workflow
654
654
  workflow_id = handle_2.workflow_id
@@ -660,10 +660,28 @@ def test_get_workflow_by_id(dbos: DBOS) -> None:
660
660
  ), f"Expected status code 200, but got {response.status_code}"
661
661
 
662
662
  workflow_data = response.json()
663
- assert workflow_data["workflow_id"] == workflow_id, "Workflow ID mismatch"
663
+ assert workflow_data["WorkflowUUID"] == workflow_id, "Workflow ID mismatch"
664
664
  assert (
665
- workflow_data["status"] == "SUCCESS"
665
+ workflow_data["Status"] == "SUCCESS"
666
666
  ), "Expected workflow status to be SUCCESS"
667
+ assert workflow_data["WorkflowName"] == test_workflow_2.__qualname__
668
+ assert workflow_data["WorkflowClassName"] is None
669
+ assert workflow_data["WorkflowConfigName"] is None
670
+ assert workflow_data["AuthenticatedUser"] is None
671
+ assert workflow_data["AssumedRole"] is None
672
+ assert workflow_data["AuthenticatedRoles"] is None
673
+ assert workflow_data["Input"] is not None and len(workflow_data["Input"]) > 0
674
+ assert workflow_data["Output"] is not None and len(workflow_data["Output"]) > 0
675
+ assert workflow_data["Error"] is None
676
+ assert (
677
+ workflow_data["CreatedAt"] is not None and len(workflow_data["CreatedAt"]) > 0
678
+ )
679
+ assert (
680
+ workflow_data["UpdatedAt"] is not None and len(workflow_data["UpdatedAt"]) > 0
681
+ )
682
+ assert workflow_data["QueueName"] is None
683
+ assert workflow_data["ApplicationVersion"] == GlobalParams.app_version
684
+ assert workflow_data["ExecutorID"] == GlobalParams.executor_id
667
685
 
668
686
  # Test GET /workflows/:workflow_id for a non-existing workflow
669
687
  non_existing_workflow_id = "non-existing-id"
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes