============================= test session starts ==============================
platform darwin -- Python 3.13.7, pytest-9.0.2, pluggy-1.6.0 -- /Users/scaucheteux/Devs/adk-agentic-logging/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /Users/scaucheteux/Devs/adk-agentic-logging
configfile: pyproject.toml
plugins: anyio-4.12.1, asyncio-1.3.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 8 items

tests/integrations/test_adk_fastapi.py::test_fastapi_adk_integration FAILED [ 12%]
tests/integrations/test_fastapi.py::test_fastapi_middleware_success FAILED [ 25%]
tests/integrations/test_fastapi.py::test_fastapi_middleware_error FAILED [ 37%]
tests/test_core.py::test_context_isolation PASSED                        [ 50%]
tests/test_core.py::test_exception_recording PASSED                      [ 62%]
tests/test_enrichment.py::test_top_level_import PASSED                   [ 75%]
tests/test_enrichment.py::test_enrich_method PASSED                      [ 87%]
tests/test_enrichment.py::test_enrich_idempotency PASSED                 [100%]

=================================== FAILURES ===================================
_________________________ test_fastapi_adk_integration _________________________

capsys = <_pytest.capture.CaptureFixture object at 0x11029f4d0>

    def test_fastapi_adk_integration(capsys: pytest.CaptureFixture[str]) -> None:
        client = TestClient(app)
    
        # ADK-like payload
        payload = {"session_id": "session-123", "user_id": "user-456", "message": "hello"}
    
        response = client.post("/chat", json=payload)
        assert response.status_code == 200
    
        captured = capsys.readouterr()
        # Combine stdout and stderr since we use logging (stderr) vs previous print (stdout)
        log_output = (captured.out + captured.err).strip()
        log_lines = [line for line in log_output.split("\n") if line.strip()]
>       assert len(log_lines) > 0
E       assert 0 > 0
E        +  where 0 = len([])

tests/integrations/test_adk_fastapi.py:61: AssertionError
----------------------------- Captured stderr call -----------------------------
{"severity": "INFO", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "d0ebb65999d24291c51b4a59b39f07d9", "logging.googleapis.com/spanId": "8700b63aff885913", "http": {"method": "POST", "path": "/chat", "status": 200, "duration_ms": 0.9}, "adk": {"session_id": "session-123", "user_id": "user-456", "total_tokens": 100, "tool_calls_count": 0}}
------------------------------ Captured log call -------------------------------
INFO     adk.agentic:fastapi.py:106 {"severity": "INFO", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "d0ebb65999d24291c51b4a59b39f07d9", "logging.googleapis.com/spanId": "8700b63aff885913", "http": {"method": "POST", "path": "/chat", "status": 200, "duration_ms": 0.9}, "adk": {"session_id": "session-123", "user_id": "user-456", "total_tokens": 100, "tool_calls_count": 0}}
_______________________ test_fastapi_middleware_success ________________________

capsys = <_pytest.capture.CaptureFixture object at 0x1102f6210>

    def test_fastapi_middleware_success(capsys: pytest.CaptureFixture[str]) -> None:
        client = TestClient(app)
        response = client.get("/test")
        assert response.status_code == 200
    
        captured = capsys.readouterr()
        log_output = (captured.out + captured.err).strip()
>       log_line = json.loads(log_output)
                   ^^^^^^^^^^^^^^^^^^^^^^

tests/integrations/test_fastapi.py:31: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py:346: in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py:345: in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <json.decoder.JSONDecoder object at 0x104fa3230>, s = '', idx = 0

    def raw_decode(self, s, idx=0):
        """Decode a JSON document from ``s`` (a ``str`` beginning with
        a JSON document) and return a 2-tuple of the Python
        representation and the index in ``s`` where the document ended.
    
        This can be used to decode a JSON document from a string that may
        have extraneous data at the end.
    
        """
        try:
            obj, end = self.scan_once(s, idx)
        except StopIteration as err:
>           raise JSONDecodeError("Expecting value", s, err.value) from None
E           json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py:363: JSONDecodeError
----------------------------- Captured stderr call -----------------------------
{"severity": "INFO", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "1f1a783ba82edb496c0d106b56d7a78b", "logging.googleapis.com/spanId": "d92e6dcdd95cff92", "http": {"method": "GET", "path": "/test", "status": 200, "duration_ms": 0.38}}
------------------------------ Captured log call -------------------------------
INFO     adk.agentic:fastapi.py:106 {"severity": "INFO", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "1f1a783ba82edb496c0d106b56d7a78b", "logging.googleapis.com/spanId": "d92e6dcdd95cff92", "http": {"method": "GET", "path": "/test", "status": 200, "duration_ms": 0.38}}
________________________ test_fastapi_middleware_error _________________________

capsys = <_pytest.capture.CaptureFixture object at 0x1103d4550>

    def test_fastapi_middleware_error(capsys: pytest.CaptureFixture[str]) -> None:
        client = TestClient(app, raise_server_exceptions=False)
        response = client.get("/error")
        assert response.status_code == 500
    
        captured = capsys.readouterr()
        log_output = (captured.out + captured.err).strip()
>       log_line = json.loads(log_output)
                   ^^^^^^^^^^^^^^^^^^^^^^

tests/integrations/test_fastapi.py:47: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py:346: in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py:345: in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <json.decoder.JSONDecoder object at 0x104fa3230>, s = '', idx = 0

    def raw_decode(self, s, idx=0):
        """Decode a JSON document from ``s`` (a ``str`` beginning with
        a JSON document) and return a 2-tuple of the Python
        representation and the index in ``s`` where the document ended.
    
        This can be used to decode a JSON document from a string that may
        have extraneous data at the end.
    
        """
        try:
            obj, end = self.scan_once(s, idx)
        except StopIteration as err:
>           raise JSONDecodeError("Expecting value", s, err.value) from None
E           json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/decoder.py:363: JSONDecodeError
----------------------------- Captured stderr call -----------------------------
{"severity": "ERROR", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "c1adb3dc7e8c66b69165da471dd8b72f", "logging.googleapis.com/spanId": "7abe5a692f2a3442", "http": {"method": "GET", "path": "/error", "status": 500, "duration_ms": 0.17}, "error": {"type": "ValueError", "message": "oops", "module": "builtins"}}
------------------------------ Captured log call -------------------------------
INFO     adk.agentic:fastapi.py:106 {"severity": "ERROR", "timestamp": "2026-01-16T13:26:04Z", "message": "Request processed", "logging.googleapis.com/trace": "c1adb3dc7e8c66b69165da471dd8b72f", "logging.googleapis.com/spanId": "7abe5a692f2a3442", "http": {"method": "GET", "path": "/error", "status": 500, "duration_ms": 0.17}, "error": {"type": "ValueError", "message": "oops", "module": "builtins"}}
=========================== short test summary info ============================
FAILED tests/integrations/test_adk_fastapi.py::test_fastapi_adk_integration
FAILED tests/integrations/test_fastapi.py::test_fastapi_middleware_success - ...
FAILED tests/integrations/test_fastapi.py::test_fastapi_middleware_error - js...
========================= 3 failed, 5 passed in 0.58s ==========================
Trace 
d0ebb65999d24291c51b4a5
9b39f07d9
└── [13:26:04.174630] 
    POST /chat, span 
    8700b63aff885913
    ├── Kind : INTERNAL
    ├── Attributes : 
    │   ├── http.status
    │   │   _code : 200
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /trace : 
    │   │   d0ebb65999d
    │   │   24291c51b4a
    │   │   59b39f07d9
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /spanId : 
    │   │   8700b63aff8
    │   │   85913
    │   ├── http.method
    │   │   : POST
    │   ├── http.path :
    │   │   /chat
    │   ├── http.status
    │   │   : 200
    │   ├── http.durati
    │   │   on_ms : 0.9
    │   ├── adk.session
    │   │   _id : 
    │   │   session-123
    │   ├── adk.user_id
    │   │   : user-456
    │   ├── adk.total_t
    │   │   okens : 100
    │   └── adk.tool_ca
    │       lls_count :
    │       0
    ├── Resources : 
    │   ├── telemetry.s
    │   │   dk.language
    │   │    : python
    │   ├── telemetry.s
    │   │   dk.name : 
    │   │   opentelemet
    │   │   ry
    │   ├── telemetry.s
    │   │   dk.version 
    │   │   : 1.39.1
    │   └── service.nam
    │       e : 
    │       unknown_ser
    │       vice
    └── [13:26:04.17520
        2] ADK run, 
        span 
        68ab45edf633584
        6
        ├── Kind : 
        │   INTERNAL
        ├── Attributes 
        │   : 
        │   ├── logging
        │   │   .google
        │   │   apis.co
        │   │   m/trace
        │   │    : 
        │   │   d0ebb65
        │   │   999d242
        │   │   91c51b4
        │   │   a59b39f
        │   │   07d9
        │   ├── logging
        │   │   .google
        │   │   apis.co
        │   │   m/spanI
        │   │   d : 
        │   │   8700b63
        │   │   aff8859
        │   │   13
        │   ├── http.me
        │   │   thod : 
        │   │   POST
        │   ├── http.pa
        │   │   th : 
        │   │   /chat
        │   ├── adk.ses
        │   │   sion_id
        │   │    : 
        │   │   session
        │   │   -123
        │   ├── adk.use
        │   │   r_id : 
        │   │   user-45
        │   │   6
        │   ├── adk.tot
        │   │   al_toke
        │   │   ns : 
        │   │   100
        │   └── adk.too
        │       l_calls
        │       _count 
        │       : 0
        └── Resources :
            ├── telemet
            │   ry.sdk.
            │   languag
            │   e : 
            │   python
            ├── telemet
            │   ry.sdk.
            │   name : 
            │   opentel
            │   emetry
            ├── telemet
            │   ry.sdk.
            │   version
            │    : 
            │   1.39.1
            └── service
                .name :
                unknown
                _servic
                e
Trace 
c1adb3dc7e8c66b69165da4
71dd8b72f
└── [13:26:04.204337] 
    GET /error, span 
    7abe5a692f2a3442
    ├── Kind : INTERNAL
    ├── Status : 
    │   StatusCode.ERRO
    │   R
    ├── Description : 
    │   ValueError: 
    │   oops
    ├── Events : 
    │   ├── exception
    │   │   ├── excepti
    │   │   │   on.type
    │   │   │    : 
    │   │   │   ValueEr
    │   │   │   ror
    │   │   ├── excepti
    │   │   │   on.mess
    │   │   │   age : 
    │   │   │   oops
    │   │   ├── excepti
    │   │   │   on.stac
    │   │   │   ktrace 
    │   │   │   : 
    │   │   │   Traceba
    │   │   │   ck 
    │   │   │   (most 
    │   │   │   recent 
    │   │   │   call 
    │   │   │   last):
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/src/
    │   │   │   adk_age
    │   │   │   ntic_lo
    │   │   │   gging/i
    │   │   │   ntegrat
    │   │   │   ions/fa
    │   │   │   stapi.p
    │   │   │   y", 
    │   │   │   line 
    │   │   │   62, in 
    │   │   │   __call_
    │   │   │   _
    │   │   │       awa
    │   │   │   it 
    │   │   │   self.ap
    │   │   │   p(scope
    │   │   │   , 
    │   │   │   receive
    │   │   │   , 
    │   │   │   send_wr
    │   │   │   apper)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/m
    │   │   │   iddlewa
    │   │   │   re/exce
    │   │   │   ptions.
    │   │   │   py", 
    │   │   │   line 
    │   │   │   63, in 
    │   │   │   __call_
    │   │   │   _
    │   │   │       awa
    │   │   │   it 
    │   │   │   wrap_ap
    │   │   │   p_handl
    │   │   │   ing_exc
    │   │   │   eptions
    │   │   │   (self.a
    │   │   │   pp, 
    │   │   │   conn)(s
    │   │   │   cope, 
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/_
    │   │   │   excepti
    │   │   │   on_hand
    │   │   │   ler.py"
    │   │   │   , line 
    │   │   │   53, in 
    │   │   │   wrapped
    │   │   │   _app
    │   │   │       rai
    │   │   │   se exc
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/_
    │   │   │   excepti
    │   │   │   on_hand
    │   │   │   ler.py"
    │   │   │   , line 
    │   │   │   42, in 
    │   │   │   wrapped
    │   │   │   _app
    │   │   │       awa
    │   │   │   it 
    │   │   │   app(sco
    │   │   │   pe, 
    │   │   │   receive
    │   │   │   , 
    │   │   │   sender)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/fast
    │   │   │   api/mid
    │   │   │   dleware
    │   │   │   /asynce
    │   │   │   xitstac
    │   │   │   k.py", 
    │   │   │   line 
    │   │   │   18, in 
    │   │   │   __call_
    │   │   │   _
    │   │   │       awa
    │   │   │   it 
    │   │   │   self.ap
    │   │   │   p(scope
    │   │   │   , 
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/r
    │   │   │   outing.
    │   │   │   py", 
    │   │   │   line 
    │   │   │   716, in
    │   │   │   __call_
    │   │   │   _
    │   │   │       awa
    │   │   │   it 
    │   │   │   self.mi
    │   │   │   ddlewar
    │   │   │   e_stack
    │   │   │   (scope,
    │   │   │    
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/r
    │   │   │   outing.
    │   │   │   py", 
    │   │   │   line 
    │   │   │   736, in
    │   │   │   app
    │   │   │       awa
    │   │   │   it 
    │   │   │   route.h
    │   │   │   andle(s
    │   │   │   cope, 
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/r
    │   │   │   outing.
    │   │   │   py", 
    │   │   │   line 
    │   │   │   290, in
    │   │   │   handle
    │   │   │       awa
    │   │   │   it 
    │   │   │   self.ap
    │   │   │   p(scope
    │   │   │   , 
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/fast
    │   │   │   api/rou
    │   │   │   ting.py
    │   │   │   ", line
    │   │   │   115, in
    │   │   │   app
    │   │   │       awa
    │   │   │   it 
    │   │   │   wrap_ap
    │   │   │   p_handl
    │   │   │   ing_exc
    │   │   │   eptions
    │   │   │   (app, 
    │   │   │   request
    │   │   │   )(scope
    │   │   │   , 
    │   │   │   receive
    │   │   │   , send)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/_
    │   │   │   excepti
    │   │   │   on_hand
    │   │   │   ler.py"
    │   │   │   , line 
    │   │   │   53, in 
    │   │   │   wrapped
    │   │   │   _app
    │   │   │       rai
    │   │   │   se exc
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/star
    │   │   │   lette/_
    │   │   │   excepti
    │   │   │   on_hand
    │   │   │   ler.py"
    │   │   │   , line 
    │   │   │   42, in 
    │   │   │   wrapped
    │   │   │   _app
    │   │   │       awa
    │   │   │   it 
    │   │   │   app(sco
    │   │   │   pe, 
    │   │   │   receive
    │   │   │   , 
    │   │   │   sender)
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/fast
    │   │   │   api/rou
    │   │   │   ting.py
    │   │   │   ", line
    │   │   │   101, in
    │   │   │   app
    │   │   │       res
    │   │   │   ponse =
    │   │   │   await 
    │   │   │   f(reque
    │   │   │   st)
    │   │   │          
    │   │   │          
    │   │   │    ^^^^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/fast
    │   │   │   api/rou
    │   │   │   ting.py
    │   │   │   ", line
    │   │   │   355, in
    │   │   │   app
    │   │   │       raw
    │   │   │   _respon
    │   │   │   se = 
    │   │   │   await 
    │   │   │   run_end
    │   │   │   point_f
    │   │   │   unction
    │   │   │   (
    │   │   │          
    │   │   │          
    │   │   │        ^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^
    │   │   │       ...
    │   │   │   <3 
    │   │   │   lines>.
    │   │   │   ..
    │   │   │       )
    │   │   │       ^
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/.ven
    │   │   │   v/lib/p
    │   │   │   ython3.
    │   │   │   13/site
    │   │   │   -packag
    │   │   │   es/fast
    │   │   │   api/rou
    │   │   │   ting.py
    │   │   │   ", line
    │   │   │   243, in
    │   │   │   run_end
    │   │   │   point_f
    │   │   │   unction
    │   │   │       ret
    │   │   │   urn 
    │   │   │   await 
    │   │   │   dependa
    │   │   │   nt.call
    │   │   │   (**valu
    │   │   │   es)
    │   │   │          
    │   │   │       ^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^^^
    │   │   │   ^^^^^^
    │   │   │     File 
    │   │   │   "/Users
    │   │   │   /scauch
    │   │   │   eteux/D
    │   │   │   evs/adk
    │   │   │   -agenti
    │   │   │   c-loggi
    │   │   │   ng/test
    │   │   │   s/integ
    │   │   │   rations
    │   │   │   /test_f
    │   │   │   astapi.
    │   │   │   py", 
    │   │   │   line 
    │   │   │   21, in 
    │   │   │   read_er
    │   │   │   ror
    │   │   │       rai
    │   │   │   se 
    │   │   │   ValueEr
    │   │   │   ror("oo
    │   │   │   ps")
    │   │   │   ValueEr
    │   │   │   ror: 
    │   │   │   oops
    │   │   │   
    │   │   └── excepti
    │   │       on.esca
    │   │       ped : 
    │   │       False
    │   └── exception
    │       ├── excepti
    │       │   on.type
    │       │    : 
    │       │   ValueEr
    │       │   ror
    │       ├── excepti
    │       │   on.mess
    │       │   age : 
    │       │   oops
    │       ├── excepti
    │       │   on.stac
    │       │   ktrace 
    │       │   : 
    │       │   Traceba
    │       │   ck 
    │       │   (most 
    │       │   recent 
    │       │   call 
    │       │   last):
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/open
    │       │   telemet
    │       │   ry/trac
    │       │   e/__ini
    │       │   t__.py"
    │       │   , line 
    │       │   589, in
    │       │   use_spa
    │       │   n
    │       │       yie
    │       │   ld span
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/open
    │       │   telemet
    │       │   ry/sdk/
    │       │   trace/_
    │       │   _init__
    │       │   .py", 
    │       │   line 
    │       │   1105, 
    │       │   in 
    │       │   start_a
    │       │   s_curre
    │       │   nt_span
    │       │       yie
    │       │   ld span
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/src/
    │       │   adk_age
    │       │   ntic_lo
    │       │   gging/i
    │       │   ntegrat
    │       │   ions/fa
    │       │   stapi.p
    │       │   y", 
    │       │   line 
    │       │   78, in 
    │       │   __call_
    │       │   _
    │       │       rai
    │       │   se e
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/src/
    │       │   adk_age
    │       │   ntic_lo
    │       │   gging/i
    │       │   ntegrat
    │       │   ions/fa
    │       │   stapi.p
    │       │   y", 
    │       │   line 
    │       │   62, in 
    │       │   __call_
    │       │   _
    │       │       awa
    │       │   it 
    │       │   self.ap
    │       │   p(scope
    │       │   , 
    │       │   receive
    │       │   , 
    │       │   send_wr
    │       │   apper)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/m
    │       │   iddlewa
    │       │   re/exce
    │       │   ptions.
    │       │   py", 
    │       │   line 
    │       │   63, in 
    │       │   __call_
    │       │   _
    │       │       awa
    │       │   it 
    │       │   wrap_ap
    │       │   p_handl
    │       │   ing_exc
    │       │   eptions
    │       │   (self.a
    │       │   pp, 
    │       │   conn)(s
    │       │   cope, 
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/_
    │       │   excepti
    │       │   on_hand
    │       │   ler.py"
    │       │   , line 
    │       │   53, in 
    │       │   wrapped
    │       │   _app
    │       │       rai
    │       │   se exc
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/_
    │       │   excepti
    │       │   on_hand
    │       │   ler.py"
    │       │   , line 
    │       │   42, in 
    │       │   wrapped
    │       │   _app
    │       │       awa
    │       │   it 
    │       │   app(sco
    │       │   pe, 
    │       │   receive
    │       │   , 
    │       │   sender)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/fast
    │       │   api/mid
    │       │   dleware
    │       │   /asynce
    │       │   xitstac
    │       │   k.py", 
    │       │   line 
    │       │   18, in 
    │       │   __call_
    │       │   _
    │       │       awa
    │       │   it 
    │       │   self.ap
    │       │   p(scope
    │       │   , 
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/r
    │       │   outing.
    │       │   py", 
    │       │   line 
    │       │   716, in
    │       │   __call_
    │       │   _
    │       │       awa
    │       │   it 
    │       │   self.mi
    │       │   ddlewar
    │       │   e_stack
    │       │   (scope,
    │       │    
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/r
    │       │   outing.
    │       │   py", 
    │       │   line 
    │       │   736, in
    │       │   app
    │       │       awa
    │       │   it 
    │       │   route.h
    │       │   andle(s
    │       │   cope, 
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/r
    │       │   outing.
    │       │   py", 
    │       │   line 
    │       │   290, in
    │       │   handle
    │       │       awa
    │       │   it 
    │       │   self.ap
    │       │   p(scope
    │       │   , 
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/fast
    │       │   api/rou
    │       │   ting.py
    │       │   ", line
    │       │   115, in
    │       │   app
    │       │       awa
    │       │   it 
    │       │   wrap_ap
    │       │   p_handl
    │       │   ing_exc
    │       │   eptions
    │       │   (app, 
    │       │   request
    │       │   )(scope
    │       │   , 
    │       │   receive
    │       │   , send)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/_
    │       │   excepti
    │       │   on_hand
    │       │   ler.py"
    │       │   , line 
    │       │   53, in 
    │       │   wrapped
    │       │   _app
    │       │       rai
    │       │   se exc
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/star
    │       │   lette/_
    │       │   excepti
    │       │   on_hand
    │       │   ler.py"
    │       │   , line 
    │       │   42, in 
    │       │   wrapped
    │       │   _app
    │       │       awa
    │       │   it 
    │       │   app(sco
    │       │   pe, 
    │       │   receive
    │       │   , 
    │       │   sender)
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/fast
    │       │   api/rou
    │       │   ting.py
    │       │   ", line
    │       │   101, in
    │       │   app
    │       │       res
    │       │   ponse =
    │       │   await 
    │       │   f(reque
    │       │   st)
    │       │          
    │       │          
    │       │    ^^^^^^
    │       │   ^^^^^^^
    │       │   ^^^
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/fast
    │       │   api/rou
    │       │   ting.py
    │       │   ", line
    │       │   355, in
    │       │   app
    │       │       raw
    │       │   _respon
    │       │   se = 
    │       │   await 
    │       │   run_end
    │       │   point_f
    │       │   unction
    │       │   (
    │       │          
    │       │          
    │       │        ^^
    │       │   ^^^^^^^
    │       │   ^^^^^^^
    │       │   ^^^^^^^
    │       │   ^^^^^
    │       │       ...
    │       │   <3 
    │       │   lines>.
    │       │   ..
    │       │       )
    │       │       ^
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/.ven
    │       │   v/lib/p
    │       │   ython3.
    │       │   13/site
    │       │   -packag
    │       │   es/fast
    │       │   api/rou
    │       │   ting.py
    │       │   ", line
    │       │   243, in
    │       │   run_end
    │       │   point_f
    │       │   unction
    │       │       ret
    │       │   urn 
    │       │   await 
    │       │   dependa
    │       │   nt.call
    │       │   (**valu
    │       │   es)
    │       │          
    │       │       ^^^
    │       │   ^^^^^^^
    │       │   ^^^^^^^
    │       │   ^^^^^^^
    │       │   ^^^^^^
    │       │     File 
    │       │   "/Users
    │       │   /scauch
    │       │   eteux/D
    │       │   evs/adk
    │       │   -agenti
    │       │   c-loggi
    │       │   ng/test
    │       │   s/integ
    │       │   rations
    │       │   /test_f
    │       │   astapi.
    │       │   py", 
    │       │   line 
    │       │   21, in 
    │       │   read_er
    │       │   ror
    │       │       rai
    │       │   se 
    │       │   ValueEr
    │       │   ror("oo
    │       │   ps")
    │       │   ValueEr
    │       │   ror: 
    │       │   oops
    │       │   
    │       └── excepti
    │           on.esca
    │           ped : 
    │           False
    ├── Attributes : 
    │   ├── http.status
    │   │   _code : 500
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /trace : 
    │   │   c1adb3dc7e8
    │   │   c66b69165da
    │   │   471dd8b72f
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /spanId : 
    │   │   7abe5a692f2
    │   │   a3442
    │   ├── http.method
    │   │   : GET
    │   ├── http.path :
    │   │   /error
    │   ├── http.status
    │   │   : 500
    │   ├── http.durati
    │   │   on_ms : 
    │   │   0.17
    │   ├── error.type 
    │   │   : 
    │   │   ValueError
    │   ├── error.messa
    │   │   ge : oops
    │   ├── error.modul
    │   │   e : 
    │   │   builtins
    │   └── severity : 
    │       ERROR
    └── Resources : 
        ├── telemetry.s
        │   dk.language
        │    : python
        ├── telemetry.s
        │   dk.name : 
        │   opentelemet
        │   ry
        ├── telemetry.s
        │   dk.version 
        │   : 1.39.1
        └── service.nam
            e : 
            unknown_ser
            vice
Trace 
1f1a783ba82edb496c0d106
b56d7a78b
└── [13:26:04.195913] 
    GET /test, span 
    d92e6dcdd95cff92
    ├── Kind : INTERNAL
    ├── Attributes : 
    │   ├── http.status
    │   │   _code : 200
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /trace : 
    │   │   1f1a783ba82
    │   │   edb496c0d10
    │   │   6b56d7a78b
    │   ├── logging.goo
    │   │   gleapis.com
    │   │   /spanId : 
    │   │   d92e6dcdd95
    │   │   cff92
    │   ├── http.method
    │   │   : GET
    │   ├── http.path :
    │   │   /test
    │   ├── http.status
    │   │   : 200
    │   └── http.durati
    │       on_ms : 
    │       0.38
    └── Resources : 
        ├── telemetry.s
        │   dk.language
        │    : python
        ├── telemetry.s
        │   dk.name : 
        │   opentelemet
        │   ry
        ├── telemetry.s
        │   dk.version 
        │   : 1.39.1
        └── service.nam
            e : 
            unknown_ser
            vice
