iii-sdk 0.11.1.dev1__tar.gz → 0.11.2.dev2__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.
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/PKG-INFO +1 -1
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/pyproject.toml +1 -1
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry.py +21 -1
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/.gitignore +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/README.md +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/__init__.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/channels.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/format_utils.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii_constants.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii_types.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/logger.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/otel_worker_gauges.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/state.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/stream.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry_exporters.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry_types.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/triggers.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/types.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/utils.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/worker_metrics.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/conftest.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_api_triggers.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_async_api.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_bridge.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_channel_close_delay.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_context_propagation.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_data_channels.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_format_utils.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_healthcheck.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_hold_process.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_http_external_functions_integration.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_iii_registration_dedup.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_init_api.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_invocation_exception.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_logger_function_ids.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_logger_otel.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_middleware.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_pubsub.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_queue_integration.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_rbac_workers.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_register_function_args.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_state.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_streams.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_streams_runtime_annotations.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_sync_api.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry_exporters.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry_types.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_trace_helpers.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_trigger_metadata.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_utils.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_worker_metadata.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_worker_metrics.py +0 -0
- {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/uv.lock +0 -0
|
@@ -26,6 +26,23 @@ _fetch_patched: bool = False
|
|
|
26
26
|
_DEFAULT_SERVICE_NAME = "iii-python-sdk"
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
def _append_otel_path(base: str) -> str:
|
|
30
|
+
"""Normalize an engine WS URL into the dedicated ``/otel`` endpoint.
|
|
31
|
+
|
|
32
|
+
The engine exposes ``/otel`` for telemetry-only WS connections; routing
|
|
33
|
+
there keeps this socket out of ``worker_registry`` (otherwise it shows
|
|
34
|
+
up as a ghost null-metadata worker alongside the real worker). Query
|
|
35
|
+
strings and fragments are preserved.
|
|
36
|
+
"""
|
|
37
|
+
from urllib.parse import urlsplit, urlunsplit
|
|
38
|
+
|
|
39
|
+
parts = urlsplit(base)
|
|
40
|
+
path = parts.path.rstrip("/")
|
|
41
|
+
if not path.endswith("/otel"):
|
|
42
|
+
path = f"{path}/otel"
|
|
43
|
+
return urlunsplit((parts.scheme, parts.netloc, path, parts.query, parts.fragment))
|
|
44
|
+
|
|
45
|
+
|
|
29
46
|
def init_otel(
|
|
30
47
|
config: OtelConfig | None = None,
|
|
31
48
|
loop: asyncio.AbstractEventLoop | None = None,
|
|
@@ -81,7 +98,10 @@ def init_otel(
|
|
|
81
98
|
from .telemetry_exporters import EngineSpanExporter, SharedEngineConnection
|
|
82
99
|
|
|
83
100
|
ws_url = cfg.engine_ws_url or os.environ.get("III_URL") or "ws://localhost:49134"
|
|
84
|
-
|
|
101
|
+
# Route OTEL to the engine's dedicated `/otel` endpoint so the
|
|
102
|
+
# telemetry socket doesn't get registered in `worker_registry` as a
|
|
103
|
+
# ghost null-metadata worker alongside every real worker.
|
|
104
|
+
_connection = SharedEngineConnection(_append_otel_path(ws_url))
|
|
85
105
|
if loop is not None:
|
|
86
106
|
_connection.start(loop)
|
|
87
107
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_http_external_functions_integration.py
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
|