dbos 0.24.0a15__tar.gz → 0.25.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.

Potentially problematic release.


This version of dbos might be problematic. Click here for more details.

Files changed (98) hide show
  1. {dbos-0.24.0a15 → dbos-0.25.0a3}/PKG-INFO +1 -1
  2. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_db_wizard.py +3 -7
  3. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_dbos.py +9 -0
  4. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_dbos_config.py +2 -1
  5. {dbos-0.24.0a15 → dbos-0.25.0a3}/pyproject.toml +1 -1
  6. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_config.py +1 -2
  7. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_dbos.py +2 -0
  8. {dbos-0.24.0a15 → dbos-0.25.0a3}/LICENSE +0 -0
  9. {dbos-0.24.0a15 → dbos-0.25.0a3}/README.md +0 -0
  10. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/__init__.py +0 -0
  11. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/__main__.py +0 -0
  12. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_admin_server.py +0 -0
  13. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_app_db.py +0 -0
  14. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_classproperty.py +0 -0
  15. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_cloudutils/authentication.py +0 -0
  16. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_cloudutils/cloudutils.py +0 -0
  17. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_cloudutils/databases.py +0 -0
  18. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_conductor/conductor.py +0 -0
  19. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_conductor/protocol.py +0 -0
  20. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_context.py +0 -0
  21. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_core.py +0 -0
  22. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_croniter.py +0 -0
  23. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_debug.py +0 -0
  24. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_error.py +0 -0
  25. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_fastapi.py +0 -0
  26. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_flask.py +0 -0
  27. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_kafka.py +0 -0
  28. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_kafka_message.py +0 -0
  29. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_logger.py +0 -0
  30. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/env.py +0 -0
  31. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/script.py.mako +0 -0
  32. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
  33. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
  34. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
  35. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
  36. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
  37. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
  38. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
  39. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_outcome.py +0 -0
  40. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_queue.py +0 -0
  41. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_recovery.py +0 -0
  42. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_registrations.py +0 -0
  43. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_request.py +0 -0
  44. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_roles.py +0 -0
  45. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_scheduler.py +0 -0
  46. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_schemas/__init__.py +0 -0
  47. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_schemas/application_database.py +0 -0
  48. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_schemas/system_database.py +0 -0
  49. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_serialization.py +0 -0
  50. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_sys_db.py +0 -0
  51. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/README.md +0 -0
  52. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
  53. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/__package/main.py +0 -0
  54. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
  55. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
  56. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
  57. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
  58. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
  59. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
  60. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
  61. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_tracer.py +0 -0
  62. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_utils.py +0 -0
  63. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/_workflow_commands.py +0 -0
  64. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/cli/_github_init.py +0 -0
  65. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/cli/_template_init.py +0 -0
  66. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/cli/cli.py +0 -0
  67. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/dbos-config.schema.json +0 -0
  68. {dbos-0.24.0a15 → dbos-0.25.0a3}/dbos/py.typed +0 -0
  69. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/__init__.py +0 -0
  70. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/atexit_no_ctor.py +0 -0
  71. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/atexit_no_launch.py +0 -0
  72. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/classdefs.py +0 -0
  73. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/conftest.py +0 -0
  74. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/more_classdefs.py +0 -0
  75. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/queuedworkflow.py +0 -0
  76. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_admin_server.py +0 -0
  77. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_async.py +0 -0
  78. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_classdecorators.py +0 -0
  79. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_concurrency.py +0 -0
  80. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_croniter.py +0 -0
  81. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_dbwizard.py +0 -0
  82. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_debug.py +0 -0
  83. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_failures.py +0 -0
  84. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_fastapi.py +0 -0
  85. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_fastapi_roles.py +0 -0
  86. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_flask.py +0 -0
  87. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_kafka.py +0 -0
  88. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_outcome.py +0 -0
  89. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_package.py +0 -0
  90. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_queue.py +0 -0
  91. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_scheduler.py +0 -0
  92. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_schema_migration.py +0 -0
  93. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_singleton.py +0 -0
  94. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_spans.py +0 -0
  95. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_sqlalchemy.py +0 -0
  96. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_workflow_cancel.py +0 -0
  97. {dbos-0.24.0a15 → dbos-0.25.0a3}/tests/test_workflow_cmds.py +0 -0
  98. {dbos-0.24.0a15 → dbos-0.25.0a3}/version/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbos
3
- Version: 0.24.0a15
3
+ Version: 0.25.0a3
4
4
  Summary: Ultra-lightweight durable execution in Python
5
5
  Author-Email: "DBOS, Inc." <contact@dbos.dev>
6
6
  License: MIT
@@ -49,6 +49,7 @@ def db_wizard(config: "ConfigFile") -> "ConfigFile":
49
49
 
50
50
  # 2. If the error is due to password authentication or the configuration is non-default, surface the error and exit.
51
51
  error_str = str(db_connection_error)
52
+ dbos_logger.debug(f"Error connecting to Postgres: {error_str}")
52
53
  if (
53
54
  "password authentication failed" in error_str
54
55
  or "28P01" in error_str
@@ -182,17 +183,12 @@ def _check_db_connectivity(config: "ConfigFile") -> Optional[Exception]:
182
183
  host=config["database"]["hostname"],
183
184
  port=config["database"]["port"],
184
185
  database="postgres",
185
- query={"connect_timeout": "1"},
186
+ query={"connect_timeout": "2"},
186
187
  )
187
188
  postgres_db_engine = create_engine(postgres_db_url)
188
189
  try:
189
190
  with postgres_db_engine.connect() as conn:
190
- val = conn.execute(text("SELECT 1")).scalar()
191
- if val != 1:
192
- dbos_logger.error(
193
- f"Unexpected value returned from database: expected 1, received {val}"
194
- )
195
- return Exception()
191
+ conn.execute(text("SELECT 1")).scalar()
196
192
  except Exception as e:
197
193
  return e
198
194
  finally:
@@ -981,6 +981,15 @@ class DBOS:
981
981
  ), "workflow_id is only available within a DBOS operation."
982
982
  return ctx.workflow_id
983
983
 
984
+ @classproperty
985
+ def step_id(cls) -> int:
986
+ """Return the step ID for the current context. This is a unique identifier of the current step within the workflow."""
987
+ ctx = assert_current_dbos_context()
988
+ assert (
989
+ ctx.is_within_workflow()
990
+ ), "step_id is only available within a DBOS workflow."
991
+ return ctx.function_id
992
+
984
993
  @classproperty
985
994
  def parent_workflow_id(cls) -> str:
986
995
  """
@@ -512,7 +512,8 @@ def overwrite_config(provided_config: ConfigFile) -> ConfigFile:
512
512
  "sys_db_name"
513
513
  ]
514
514
  provided_config["database"]["ssl"] = config_from_file["database"]["ssl"]
515
- provided_config["database"]["ssl_ca"] = config_from_file["database"]["ssl_ca"]
515
+ if "ssl_ca" in config_from_file["database"]:
516
+ provided_config["database"]["ssl_ca"] = config_from_file["database"]["ssl_ca"]
516
517
 
517
518
  # Telemetry config
518
519
  if "telemetry" not in provided_config or provided_config["telemetry"] is None:
@@ -27,7 +27,7 @@ dependencies = [
27
27
  ]
28
28
  requires-python = ">=3.9"
29
29
  readme = "README.md"
30
- version = "0.24.0a15"
30
+ version = "0.25.0a3"
31
31
 
32
32
  [project.license]
33
33
  text = "MIT"
@@ -1049,7 +1049,6 @@ def test_overwrite_config_minimal(mocker):
1049
1049
  app_db_name: appdbname
1050
1050
  sys_db_name: sysdbname
1051
1051
  ssl: true
1052
- ssl_ca: cert.pem
1053
1052
  migrate:
1054
1053
  - alembic upgrade head
1055
1054
  telemetry:
@@ -1079,7 +1078,7 @@ def test_overwrite_config_minimal(mocker):
1079
1078
  assert config["database"]["app_db_name"] == "appdbname"
1080
1079
  assert config["database"]["sys_db_name"] == "sysdbname"
1081
1080
  assert config["database"]["ssl"] == True
1082
- assert config["database"]["ssl_ca"] == "cert.pem"
1081
+ assert "ssl_ca" not in config["database"]
1083
1082
  assert config["telemetry"]["OTLPExporter"]["tracesEndpoint"] == [
1084
1083
  "thetracesendpoint"
1085
1084
  ]
@@ -38,6 +38,7 @@ def test_simple_workflow(dbos: DBOS) -> None:
38
38
 
39
39
  @DBOS.transaction(isolation_level="REPEATABLE READ")
40
40
  def test_transaction(var2: str) -> str:
41
+ assert DBOS.step_id == 1
41
42
  rows = DBOS.sql_session.execute(sa.text("SELECT 1")).fetchall()
42
43
  nonlocal txn_counter
43
44
  txn_counter += 1
@@ -46,6 +47,7 @@ def test_simple_workflow(dbos: DBOS) -> None:
46
47
 
47
48
  @DBOS.step()
48
49
  def test_step(var: str) -> str:
50
+ assert DBOS.step_id == 2
49
51
  nonlocal step_counter
50
52
  step_counter += 1
51
53
  DBOS.logger.info("I'm test_step")
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