dbos 2.3.0a4__tar.gz → 2.3.0a5__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.
- {dbos-2.3.0a4 → dbos-2.3.0a5}/PKG-INFO +1 -1
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_logger.py +23 -16
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_tracer.py +24 -19
- {dbos-2.3.0a4 → dbos-2.3.0a5}/pyproject.toml +1 -1
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_queue.py +1 -1
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_spans.py +1 -5
- {dbos-2.3.0a4 → dbos-2.3.0a5}/LICENSE +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/README.md +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/__init__.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/__main__.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_admin_server.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_app_db.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_classproperty.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_client.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_conductor/conductor.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_conductor/protocol.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_context.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_core.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_croniter.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_dbos.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_dbos_config.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_debouncer.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_debug.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_docker_pg_helper.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_error.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_event_loop.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_fastapi.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_flask.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_kafka.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_kafka_message.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_migration.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_outcome.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_queue.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_recovery.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_registrations.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_roles.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_scheduler.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_schemas/__init__.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_schemas/application_database.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_schemas/system_database.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_serialization.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_sys_db.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_sys_db_postgres.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_sys_db_sqlite.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/README.md +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/__package/main.py.dbos +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/migrations/create_table.py.dbos +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_utils.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_workflow_commands.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/cli/_github_init.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/cli/_template_init.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/cli/cli.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/cli/migration.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/dbos-config.schema.json +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/py.typed +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/__init__.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/atexit_no_ctor.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/atexit_no_launch.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/classdefs.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/client_collateral.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/client_worker.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/conftest.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/dupname_classdefs1.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/dupname_classdefsa.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/more_classdefs.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/queuedworkflow.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/script_without_fastapi.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_admin_server.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_async.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_async_workflow_management.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_classdecorators.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_cli.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_client.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_concurrency.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_config.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_croniter.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_dbos.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_debouncer.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_debug.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_docker_secrets.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_failures.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_fastapi.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_fastapi_roles.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_flask.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_kafka.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_outcome.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_package.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_scheduler.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_schema_migration.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_singleton.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_sqlalchemy.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_streaming.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_workflow_introspection.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/tests/test_workflow_management.py +0 -0
- {dbos-2.3.0a4 → dbos-2.3.0a5}/version/__init__.py +0 -0
|
@@ -68,30 +68,37 @@ def config_logger(config: "ConfigFile") -> None:
|
|
|
68
68
|
)
|
|
69
69
|
disable_otlp = config.get("telemetry", {}).get("disable_otlp", False) # type: ignore
|
|
70
70
|
|
|
71
|
-
if not disable_otlp
|
|
71
|
+
if not disable_otlp:
|
|
72
72
|
|
|
73
|
-
from opentelemetry._logs import set_logger_provider
|
|
73
|
+
from opentelemetry._logs import get_logger_provider, set_logger_provider
|
|
74
74
|
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
|
|
75
75
|
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
|
76
76
|
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
|
|
77
77
|
from opentelemetry.sdk.resources import Resource
|
|
78
78
|
from opentelemetry.semconv.attributes.service_attributes import SERVICE_NAME
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
# Only set up OTLP provider and exporter if endpoints are provided
|
|
81
|
+
log_provider = get_logger_provider()
|
|
82
|
+
if otlp_logs_endpoints is not None:
|
|
83
|
+
if not isinstance(log_provider, LoggerProvider):
|
|
84
|
+
log_provider = LoggerProvider(
|
|
85
|
+
Resource.create(
|
|
86
|
+
attributes={
|
|
87
|
+
SERVICE_NAME: config["name"],
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
set_logger_provider(log_provider)
|
|
92
|
+
|
|
93
|
+
for e in otlp_logs_endpoints:
|
|
94
|
+
log_provider.add_log_record_processor(
|
|
95
|
+
BatchLogRecordProcessor(
|
|
96
|
+
OTLPLogExporter(endpoint=e),
|
|
97
|
+
export_timeout_millis=5000,
|
|
98
|
+
)
|
|
93
99
|
)
|
|
94
|
-
|
|
100
|
+
|
|
101
|
+
# Even if no endpoints are provided, we still need a LoggerProvider to create the LoggingHandler
|
|
95
102
|
global _otlp_handler
|
|
96
103
|
_otlp_handler = LoggingHandler(logger_provider=log_provider)
|
|
97
104
|
|
|
@@ -25,6 +25,10 @@ class DBOSTracer:
|
|
|
25
25
|
def config(self, config: ConfigFile) -> None:
|
|
26
26
|
self.otlp_attributes = config.get("telemetry", {}).get("otlp_attributes", {}) # type: ignore
|
|
27
27
|
self.disable_otlp = config.get("telemetry", {}).get("disable_otlp", False) # type: ignore
|
|
28
|
+
otlp_traces_endpoints = (
|
|
29
|
+
config.get("telemetry", {}).get("OTLPExporter", {}).get("tracesEndpoint") # type: ignore
|
|
30
|
+
)
|
|
31
|
+
|
|
28
32
|
if not self.disable_otlp:
|
|
29
33
|
from opentelemetry import trace
|
|
30
34
|
from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
|
|
@@ -38,25 +42,26 @@ class DBOSTracer:
|
|
|
38
42
|
)
|
|
39
43
|
from opentelemetry.semconv.attributes.service_attributes import SERVICE_NAME
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
tracer_provider = trace.get_tracer_provider()
|
|
46
|
+
|
|
47
|
+
# Only set up OTLP provider and exporter if endpoints are provided
|
|
48
|
+
if otlp_traces_endpoints is not None:
|
|
49
|
+
if not isinstance(tracer_provider, TracerProvider):
|
|
50
|
+
resource = Resource(
|
|
51
|
+
attributes={
|
|
52
|
+
SERVICE_NAME: config["name"],
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
tracer_provider = TracerProvider(resource=resource)
|
|
57
|
+
if os.environ.get("DBOS__CONSOLE_TRACES", None) is not None:
|
|
58
|
+
processor = BatchSpanProcessor(ConsoleSpanExporter())
|
|
59
|
+
tracer_provider.add_span_processor(processor)
|
|
60
|
+
trace.set_tracer_provider(tracer_provider)
|
|
61
|
+
|
|
62
|
+
for e in otlp_traces_endpoints:
|
|
63
|
+
processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=e))
|
|
64
|
+
tracer_provider.add_span_processor(processor)
|
|
60
65
|
|
|
61
66
|
def set_provider(self, provider: "Optional[TracerProvider]") -> None:
|
|
62
67
|
self.provider = provider
|
|
@@ -1476,7 +1476,7 @@ def test_unsetting_timeout(dbos: DBOS) -> None:
|
|
|
1476
1476
|
queue.enqueue(child)
|
|
1477
1477
|
|
|
1478
1478
|
child_one, child_two = str(uuid.uuid4()), str(uuid.uuid4())
|
|
1479
|
-
with SetWorkflowTimeout(
|
|
1479
|
+
with SetWorkflowTimeout(2.0):
|
|
1480
1480
|
queue.enqueue(parent, child_one, child_two).get_result()
|
|
1481
1481
|
|
|
1482
1482
|
# Verify child one, which has a propagated timeout, is cancelled
|
|
@@ -5,7 +5,6 @@ import pytest
|
|
|
5
5
|
from fastapi import FastAPI
|
|
6
6
|
from fastapi.testclient import TestClient
|
|
7
7
|
from inline_snapshot import snapshot
|
|
8
|
-
from opentelemetry._logs import set_logger_provider
|
|
9
8
|
from opentelemetry.sdk import trace as tracesdk
|
|
10
9
|
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
|
11
10
|
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor, InMemoryLogExporter
|
|
@@ -17,6 +16,7 @@ from dbos import DBOS, DBOSConfig
|
|
|
17
16
|
from dbos._logger import dbos_logger
|
|
18
17
|
from dbos._tracer import dbos_tracer
|
|
19
18
|
from dbos._utils import GlobalParams
|
|
19
|
+
from tests.conftest import default_config
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
@dataclass
|
|
@@ -65,7 +65,6 @@ def test_spans(config: DBOSConfig) -> None:
|
|
|
65
65
|
log_processor = BatchLogRecordProcessor(log_exporter)
|
|
66
66
|
log_provider = LoggerProvider()
|
|
67
67
|
log_provider.add_log_record_processor(log_processor)
|
|
68
|
-
set_logger_provider(log_provider)
|
|
69
68
|
dbos_logger.addHandler(LoggingHandler(logger_provider=log_provider))
|
|
70
69
|
|
|
71
70
|
test_workflow()
|
|
@@ -192,7 +191,6 @@ async def test_spans_async(dbos: DBOS) -> None:
|
|
|
192
191
|
log_processor = BatchLogRecordProcessor(log_exporter)
|
|
193
192
|
log_provider = LoggerProvider()
|
|
194
193
|
log_provider.add_log_record_processor(log_processor)
|
|
195
|
-
set_logger_provider(log_provider)
|
|
196
194
|
dbos_logger.addHandler(LoggingHandler(logger_provider=log_provider))
|
|
197
195
|
|
|
198
196
|
await test_workflow()
|
|
@@ -303,7 +301,6 @@ def test_wf_fastapi(dbos_fastapi: Tuple[DBOS, FastAPI]) -> None:
|
|
|
303
301
|
log_processor = BatchLogRecordProcessor(log_exporter)
|
|
304
302
|
log_provider = LoggerProvider()
|
|
305
303
|
log_provider.add_log_record_processor(log_processor)
|
|
306
|
-
set_logger_provider(log_provider)
|
|
307
304
|
dbos_logger.addHandler(LoggingHandler(logger_provider=log_provider))
|
|
308
305
|
|
|
309
306
|
client = TestClient(app)
|
|
@@ -378,7 +375,6 @@ def test_disable_otlp_no_spans(config: DBOSConfig) -> None:
|
|
|
378
375
|
log_processor = BatchLogRecordProcessor(log_exporter)
|
|
379
376
|
log_provider = LoggerProvider()
|
|
380
377
|
log_provider.add_log_record_processor(log_processor)
|
|
381
|
-
set_logger_provider(log_provider)
|
|
382
378
|
dbos_logger.addHandler(LoggingHandler(logger_provider=log_provider))
|
|
383
379
|
|
|
384
380
|
test_workflow()
|
|
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
|
{dbos-2.3.0a4 → dbos-2.3.0a5}/dbos/_templates/dbos-db-starter/migrations/create_table.py.dbos
RENAMED
|
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
|