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.
Files changed (55) hide show
  1. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/PKG-INFO +1 -1
  2. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/pyproject.toml +1 -1
  3. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry.py +21 -1
  4. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/.gitignore +0 -0
  5. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/README.md +0 -0
  6. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/__init__.py +0 -0
  7. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/channels.py +0 -0
  8. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/format_utils.py +0 -0
  9. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii.py +0 -0
  10. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii_constants.py +0 -0
  11. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/iii_types.py +0 -0
  12. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/logger.py +0 -0
  13. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/otel_worker_gauges.py +0 -0
  14. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/state.py +0 -0
  15. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/stream.py +0 -0
  16. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry_exporters.py +0 -0
  17. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/telemetry_types.py +0 -0
  18. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/triggers.py +0 -0
  19. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/types.py +0 -0
  20. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/utils.py +0 -0
  21. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/src/iii/worker_metrics.py +0 -0
  22. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/conftest.py +0 -0
  23. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_api_triggers.py +0 -0
  24. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_async_api.py +0 -0
  25. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_bridge.py +0 -0
  26. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_channel_close_delay.py +0 -0
  27. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_context_propagation.py +0 -0
  28. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_data_channels.py +0 -0
  29. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_format_utils.py +0 -0
  30. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_healthcheck.py +0 -0
  31. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_hold_process.py +0 -0
  32. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_http_external_functions_integration.py +0 -0
  33. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_iii_registration_dedup.py +0 -0
  34. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_init_api.py +0 -0
  35. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_invocation_exception.py +0 -0
  36. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_logger_function_ids.py +0 -0
  37. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_logger_otel.py +0 -0
  38. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_middleware.py +0 -0
  39. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_pubsub.py +0 -0
  40. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_queue_integration.py +0 -0
  41. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_rbac_workers.py +0 -0
  42. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_register_function_args.py +0 -0
  43. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_state.py +0 -0
  44. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_streams.py +0 -0
  45. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_streams_runtime_annotations.py +0 -0
  46. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_sync_api.py +0 -0
  47. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry.py +0 -0
  48. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry_exporters.py +0 -0
  49. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_telemetry_types.py +0 -0
  50. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_trace_helpers.py +0 -0
  51. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_trigger_metadata.py +0 -0
  52. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_utils.py +0 -0
  53. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_worker_metadata.py +0 -0
  54. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/tests/test_worker_metrics.py +0 -0
  55. {iii_sdk-0.11.1.dev1 → iii_sdk-0.11.2.dev2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iii-sdk
3
- Version: 0.11.1.dev1
3
+ Version: 0.11.2.dev2
4
4
  Summary: III SDK for Python
5
5
  Project-URL: Homepage, https://github.com/iii-hq/sdk
6
6
  Project-URL: Repository, https://github.com/iii-hq/sdk
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "iii-sdk"
7
- version = "0.11.1.dev1"
7
+ version = "0.11.2.dev2"
8
8
  description = "III SDK for Python"
9
9
  authors = [{ name = "III" }]
10
10
  license = { text = "Apache-2.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
- _connection = SharedEngineConnection(ws_url)
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