Skip to content

Commit ee931e7

Browse files
authored
feat: Add logid support to CozeEventError exception (#50)
- Enhanced CozeEventError to include logid for better traceability
1 parent ea5c02b commit ee931e7

File tree

7 files changed

+27
-37
lines changed

7 files changed

+27
-37
lines changed

cozepy/chat/__init__.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -379,11 +379,8 @@ def _create(
379379
if not stream:
380380
return self._requester.request("post", url, Chat, body=body, stream=stream)
381381

382-
return Stream(
383-
self._requester.request("post", url, Chat, body=body, stream=stream),
384-
fields=["event", "data"],
385-
handler=_chat_stream_handler,
386-
)
382+
steam_iters, logid = self._requester.request("post", url, Chat, body=body, stream=stream)
383+
return Stream(steam_iters, fields=["event", "data"], handler=_chat_stream_handler, logid=logid)
387384

388385
def retrieve(
389386
self,
@@ -440,11 +437,8 @@ def submit_tool_outputs(
440437
if not stream:
441438
return self._requester.request("post", url, Chat, params=params, body=body, stream=stream)
442439

443-
return Stream(
444-
self._requester.request("post", url, Chat, params=params, body=body, stream=stream),
445-
fields=["event", "data"],
446-
handler=_chat_stream_handler,
447-
)
440+
steam_iters, logid = self._requester.request("post", url, Chat, params=params, body=body, stream=stream)
441+
return Stream(steam_iters, fields=["event", "data"], handler=_chat_stream_handler, logid=logid)
448442

449443
def cancel(
450444
self,

cozepy/exception.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ class CozeEventError(CozeError):
4242
base class for all event errors
4343
"""
4444

45-
def __init__(self, field: str = "", data: str = ""):
45+
def __init__(self, field: str = "", data: str = "", logid: str = ""):
4646
self.field = field
4747
self.data = data
48+
self.logid = logid
4849
if field:
49-
super().__init__(f"invalid event, field: {field}, data: {data}")
50+
super().__init__(f"invalid event, field: {field}, data: {data}, logid: {logid}")
5051
else:
51-
super().__init__(f"invalid event, data: {data}")
52+
super().__init__(f"invalid event, data: {data}, logid: {logid}")

cozepy/model.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,11 @@ def __repr__(self):
6969

7070

7171
class Stream(Generic[T]):
72-
def __init__(self, iters: Iterator[str], fields: List[str], handler: Callable[[Dict[str, str]], T]):
72+
def __init__(self, iters: Iterator[str], fields: List[str], handler: Callable[[Dict[str, str]], T], logid: str):
7373
self._iters = iters
7474
self._fields = fields
7575
self._handler = handler
76+
self._logid = logid
7677

7778
def __iter__(self):
7879
return self
@@ -100,5 +101,5 @@ def _extra_field_data(self, line: str, data: Dict[str, str]) -> Tuple[str, str]:
100101
if data[field] == "":
101102
return field, line[len(field) + 1 :].strip()
102103
else:
103-
raise CozeEventError(field, line)
104-
raise CozeEventError("", line)
104+
raise CozeEventError(field, line, self._logid)
105+
raise CozeEventError("", line, self._logid)

cozepy/request.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def request(
5757
files: dict = None,
5858
stream: bool = False,
5959
data_field: str = "data",
60-
) -> Union[T, List[T], Iterator[str], None]:
60+
) -> Union[T, List[T], Tuple[Iterator[str], str], None]:
6161
"""
6262
Send a request to the server.
6363
"""
@@ -72,10 +72,10 @@ def request(
7272
)
7373
log_debug("request %s#%s sending, params=%s, json=%s, stream=%s", method, url, params, body, stream)
7474
response = self._client.send(request, stream=stream)
75+
logid = response.headers.get("x-tt-logid")
7576
if stream:
76-
return response.iter_lines()
77+
return response.iter_lines(), logid
7778

78-
logid = response.headers.get("x-tt-logid")
7979
code, msg, data = self._parse_requests_code_msg(method, url, response, data_field)
8080

8181
if code is not None and code > 0:

cozepy/workflows/runs/__init__.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,8 @@ def stream(
191191
"bot_id": bot_id,
192192
"ext": ext,
193193
}
194-
return Stream(
195-
self._requester.request("post", url, None, body=body, stream=True),
196-
fields=["id", "event", "data"],
197-
handler=_workflow_stream_handler,
198-
)
194+
steam_iters, logid = self._requester.request("post", url, None, body=body, stream=True)
195+
return Stream(steam_iters, fields=["id", "event", "data"], handler=_workflow_stream_handler, logid=logid)
199196

200197
def resume(
201198
self,
@@ -221,8 +218,5 @@ def resume(
221218
"resume_data": resume_data,
222219
"interrupt_type": interrupt_type,
223220
}
224-
return Stream(
225-
self._requester.request("post", url, None, body=body, stream=True),
226-
fields=["id", "event", "data"],
227-
handler=_workflow_stream_handler,
228-
)
221+
steam_iters, logid = self._requester.request("post", url, None, body=body, stream=True)
222+
return Stream(steam_iters, fields=["id", "event", "data"], handler=_workflow_stream_handler, logid=logid)

tests/test_exception.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ def test_coze_error():
1717
err = CozePKCEAuthError("authorization_pending")
1818
assert err.error == "authorization_pending"
1919

20-
err = CozeEventError("event", "xxx")
21-
assert str(err) == "invalid event, field: event, data: xxx"
20+
err = CozeEventError("event", "xxx", "logid")
21+
assert str(err) == "invalid event, field: event, data: xxx, logid: logid"
2222

23-
err = CozeEventError("", "xxx")
24-
assert str(err) == "invalid event, data: xxx"
23+
err = CozeEventError("", "xxx", "logid")
24+
assert str(err) == "invalid event, data: xxx, logid: logid"

tests/test_model.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ def mock_handler(d: Dict[str, str]):
2222

2323
def test_stream_invalid_event():
2424
items = ["event:x"]
25-
s = Stream(iter(items), ["field"], mock_handler)
25+
s = Stream(iter(items), ["field"], mock_handler, "mocked-logid")
2626

27-
with pytest.raises(CozeEventError, match="invalid event, data: event:x"):
27+
with pytest.raises(CozeEventError, match="invalid event, data: event:x, logid: mocked-logid"):
2828
next(s)
2929

3030

3131
def test_stream_invalid_field():
3232
items = ["event:x1", "event:x2"]
33-
s = Stream(iter(items), ["event", "second"], mock_handler)
33+
s = Stream(iter(items), ["event", "second"], mock_handler, "mocked-logid")
3434

35-
with pytest.raises(CozeEventError, match="invalid event, field: event, data: event:x2"):
35+
with pytest.raises(CozeEventError, match="invalid event, field: event, data: event:x2, logid: mocked-logid"):
3636
next(s)

0 commit comments

Comments
 (0)