dbos 0.25.0a16__tar.gz → 0.25.1__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 (103) hide show
  1. {dbos-0.25.0a16 → dbos-0.25.1}/PKG-INFO +1 -1
  2. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_context.py +4 -2
  3. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_core.py +15 -11
  4. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_dbos.py +3 -1
  5. {dbos-0.25.0a16 → dbos-0.25.1}/pyproject.toml +1 -1
  6. {dbos-0.25.0a16 → dbos-0.25.1}/LICENSE +0 -0
  7. {dbos-0.25.0a16 → dbos-0.25.1}/README.md +0 -0
  8. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/__init__.py +0 -0
  9. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/__main__.py +0 -0
  10. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_admin_server.py +0 -0
  11. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_app_db.py +0 -0
  12. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_classproperty.py +0 -0
  13. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_client.py +0 -0
  14. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_cloudutils/authentication.py +0 -0
  15. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_cloudutils/cloudutils.py +0 -0
  16. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_cloudutils/databases.py +0 -0
  17. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_conductor/conductor.py +0 -0
  18. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_conductor/protocol.py +0 -0
  19. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_croniter.py +0 -0
  20. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_db_wizard.py +0 -0
  21. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_dbos_config.py +0 -0
  22. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_debug.py +0 -0
  23. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_error.py +0 -0
  24. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_fastapi.py +0 -0
  25. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_flask.py +0 -0
  26. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_kafka.py +0 -0
  27. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_kafka_message.py +0 -0
  28. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_logger.py +0 -0
  29. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/env.py +0 -0
  30. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/script.py.mako +0 -0
  31. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
  32. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
  33. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
  34. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
  35. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
  36. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
  37. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
  38. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
  39. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_outcome.py +0 -0
  40. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_queue.py +0 -0
  41. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_recovery.py +0 -0
  42. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_registrations.py +0 -0
  43. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_request.py +0 -0
  44. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_roles.py +0 -0
  45. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_scheduler.py +0 -0
  46. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_schemas/__init__.py +0 -0
  47. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_schemas/application_database.py +0 -0
  48. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_schemas/system_database.py +0 -0
  49. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_serialization.py +0 -0
  50. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_sys_db.py +0 -0
  51. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/README.md +0 -0
  52. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
  53. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/__package/main.py +0 -0
  54. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
  55. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
  56. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
  57. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
  58. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
  59. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
  60. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
  61. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_tracer.py +0 -0
  62. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_utils.py +0 -0
  63. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/_workflow_commands.py +0 -0
  64. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/cli/_github_init.py +0 -0
  65. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/cli/_template_init.py +0 -0
  66. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/cli/cli.py +0 -0
  67. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/dbos-config.schema.json +0 -0
  68. {dbos-0.25.0a16 → dbos-0.25.1}/dbos/py.typed +0 -0
  69. {dbos-0.25.0a16 → dbos-0.25.1}/tests/__init__.py +0 -0
  70. {dbos-0.25.0a16 → dbos-0.25.1}/tests/atexit_no_ctor.py +0 -0
  71. {dbos-0.25.0a16 → dbos-0.25.1}/tests/atexit_no_launch.py +0 -0
  72. {dbos-0.25.0a16 → dbos-0.25.1}/tests/classdefs.py +0 -0
  73. {dbos-0.25.0a16 → dbos-0.25.1}/tests/client_collateral.py +0 -0
  74. {dbos-0.25.0a16 → dbos-0.25.1}/tests/client_worker.py +0 -0
  75. {dbos-0.25.0a16 → dbos-0.25.1}/tests/conftest.py +0 -0
  76. {dbos-0.25.0a16 → dbos-0.25.1}/tests/more_classdefs.py +0 -0
  77. {dbos-0.25.0a16 → dbos-0.25.1}/tests/queuedworkflow.py +0 -0
  78. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_admin_server.py +0 -0
  79. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_async.py +0 -0
  80. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_classdecorators.py +0 -0
  81. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_client.py +0 -0
  82. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_concurrency.py +0 -0
  83. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_config.py +0 -0
  84. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_croniter.py +0 -0
  85. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_dbos.py +0 -0
  86. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_dbwizard.py +0 -0
  87. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_debug.py +0 -0
  88. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_failures.py +0 -0
  89. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_fastapi.py +0 -0
  90. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_fastapi_roles.py +0 -0
  91. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_flask.py +0 -0
  92. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_kafka.py +0 -0
  93. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_outcome.py +0 -0
  94. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_package.py +0 -0
  95. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_queue.py +0 -0
  96. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_scheduler.py +0 -0
  97. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_schema_migration.py +0 -0
  98. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_singleton.py +0 -0
  99. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_spans.py +0 -0
  100. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_sqlalchemy.py +0 -0
  101. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_workflow_cancel.py +0 -0
  102. {dbos-0.25.0a16 → dbos-0.25.1}/tests/test_workflow_cmds.py +0 -0
  103. {dbos-0.25.0a16 → dbos-0.25.1}/version/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.25.0a16
3
+ Version: 0.25.1
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -195,8 +195,10 @@ class DBOSContext:
195
195
  def end_handler(self, exc_value: Optional[BaseException]) -> None:
196
196
  self._end_span(exc_value)
197
197
 
198
- def get_current_span(self) -> Span:
199
- return self.spans[-1]
198
+ def get_current_span(self) -> Optional[Span]:
199
+ if len(self.spans):
200
+ return self.spans[-1]
201
+ return None
200
202
 
201
203
  def _start_span(self, attributes: TracedAttributes) -> None:
202
204
  attributes["operationUUID"] = (
@@ -892,10 +892,12 @@ def decorate_transaction(
892
892
  except DBAPIError as dbapi_error:
893
893
  if dbapi_error.orig.sqlstate == "40001": # type: ignore
894
894
  # Retry on serialization failure
895
- ctx.get_current_span().add_event(
896
- "Transaction Serialization Failure",
897
- {"retry_wait_seconds": retry_wait_seconds},
898
- )
895
+ span = ctx.get_current_span()
896
+ if span:
897
+ span.add_event(
898
+ "Transaction Serialization Failure",
899
+ {"retry_wait_seconds": retry_wait_seconds},
900
+ )
899
901
  time.sleep(retry_wait_seconds)
900
902
  retry_wait_seconds = min(
901
903
  retry_wait_seconds * backoff_factor,
@@ -1004,13 +1006,15 @@ def decorate_step(
1004
1006
  f"Step being automatically retried. (attempt {attempt + 1} of {attempts}). {traceback.format_exc()}"
1005
1007
  )
1006
1008
  ctx = assert_current_dbos_context()
1007
- ctx.get_current_span().add_event(
1008
- f"Step attempt {attempt} failed",
1009
- {
1010
- "error": str(error),
1011
- "retryIntervalSeconds": interval_seconds,
1012
- },
1013
- )
1009
+ span = ctx.get_current_span()
1010
+ if span:
1011
+ span.add_event(
1012
+ f"Step attempt {attempt} failed",
1013
+ {
1014
+ "error": str(error),
1015
+ "retryIntervalSeconds": interval_seconds,
1016
+ },
1017
+ )
1014
1018
  return min(
1015
1019
  interval_seconds * (backoff_rate**attempt),
1016
1020
  max_retry_interval_seconds,
@@ -1083,7 +1083,9 @@ class DBOS:
1083
1083
  def span(cls) -> Span:
1084
1084
  """Return the tracing `Span` associated with the current context."""
1085
1085
  ctx = assert_current_dbos_context()
1086
- return ctx.get_current_span()
1086
+ span = ctx.get_current_span()
1087
+ assert span
1088
+ return span
1087
1089
 
1088
1090
  @classproperty
1089
1091
  def request(cls) -> Optional["Request"]:
@@ -28,7 +28,7 @@ dependencies = [
28
28
  ]
29
29
  requires-python = ">=3.9"
30
30
  readme = "README.md"
31
- version = "0.25.0a16"
31
+ version = "0.25.1"
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
File without changes