iii-observability 0.19.0.dev2__tar.gz → 0.19.0.dev3__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 (19) hide show
  1. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/PKG-INFO +1 -1
  2. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/pyproject.toml +1 -1
  3. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/http_instrumentation.py +19 -0
  4. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/.gitignore +0 -0
  5. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/README.md +0 -0
  6. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/__init__.py +0 -0
  7. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/baggage_span_processor.py +0 -0
  8. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/logger.py +0 -0
  9. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/payload.py +0 -0
  10. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/py.typed +0 -0
  11. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/reconnection.py +0 -0
  12. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/span_ops.py +0 -0
  13. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/telemetry.py +0 -0
  14. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/telemetry_exporters.py +0 -0
  15. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/src/iii_observability/telemetry_types.py +0 -0
  16. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/tests/__init__.py +0 -0
  17. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/tests/test_http_instrumentation.py +0 -0
  18. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/tests/test_telemetry.py +0 -0
  19. {iii_observability-0.19.0.dev2 → iii_observability-0.19.0.dev3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iii-observability
3
- Version: 0.19.0.dev2
3
+ Version: 0.19.0.dev3
4
4
  Summary: OpenTelemetry and logging primitives shared across iii SDKs.
5
5
  Project-URL: Homepage, https://github.com/iii-hq/iii
6
6
  Project-URL: Repository, https://github.com/iii-hq/iii
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "iii-observability"
7
- version = "0.19.0.dev2"
7
+ version = "0.19.0.dev3"
8
8
  description = "OpenTelemetry and logging primitives shared across iii SDKs."
9
9
  authors = [{ name = "III" }]
10
10
  license = { text = "Apache-2.0" }
@@ -7,6 +7,8 @@ traceparent into outgoing headers, and records exceptions on network errors.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
+ import os
11
+
10
12
  import httpx
11
13
  from opentelemetry import trace
12
14
  from opentelemetry.propagate import inject
@@ -20,6 +22,19 @@ def _span_name(method: str, path: str | None) -> str:
20
22
  return f"{method} {path}" if path else method
21
23
 
22
24
 
25
+ def _fetch_ignore_url_patterns() -> list[str]:
26
+ """Substring patterns from OTEL_FETCH_IGNORE_URLS (comma-separated)."""
27
+ return [
28
+ s.strip()
29
+ for s in (os.environ.get("OTEL_FETCH_IGNORE_URLS") or "").split(",")
30
+ if s.strip()
31
+ ]
32
+
33
+
34
+ def _should_ignore_fetch_url(url: str) -> bool:
35
+ return any(pattern in url for pattern in _fetch_ignore_url_patterns())
36
+
37
+
23
38
  async def execute_traced_request(
24
39
  client: httpx.AsyncClient,
25
40
  request: httpx.Request,
@@ -32,6 +47,10 @@ async def execute_traced_request(
32
47
  - Records exceptions for network-level errors.
33
48
  """
34
49
  url = request.url
50
+ url_str = str(url)
51
+ if _should_ignore_fetch_url(url_str):
52
+ return await client.send(request)
53
+
35
54
  method = request.method.upper()
36
55
  path = url.path or None
37
56
  query = url.query