fix: support dingtalk-stream >= 0.20 async SDK changes#9828
Closed
nightq wants to merge 1 commit into
Closed
Conversation
Fixes NousResearch#9752 Root cause: dingtalk-stream >= 0.20 made three breaking changes: 1. start() changed from sync to async — asyncio.to_thread() doesn't work 2. process() changed from sync def to async def — SDK awaits return value 3. Callback message is now CallbackMessage with data in .data dict, not ChatbotMessage with direct attributes Fix: - Detect start() sync/async at runtime with inspect.iscoroutinefunction() - Add async_process() handler for new SDK while keeping process() for old - Add _extract_chatbot_message() to reconstruct ChatbotMessage from CallbackMessage.data dict for new SDK versions
Contributor
|
Closing as superseded by #11471 (#11471) which salvaged @kevinskysunny's minimal fix (#11257) and added a follow-up for the broken Thanks for the fix — a lot of contributors hit this SDK break at the same time. Your investigation helped confirm the root cause. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the DingTalk adapter for dingtalk-stream >= 0.20 which made three breaking async changes.
Root Cause
start()changed sync → async:asyncio.to_thread()fails on coroutines with "coroutine was never awaited"process()changed sync → async: SDK now awaits the return value, but(STATUS_OK, "OK")tuple can't be awaitedCallbackMessagewith data in.datadict instead ofChatbotMessagewith direct attributes →_extract_text()got nothing → "Empty message, skipping"Fix
inspect.iscoroutinefunction()to detect sync vs asyncstart()async_process()for new SDK while keepingprocess()for backward compat_extract_chatbot_message()to reconstruct a ChatbotMessage-like object fromCallbackMessage.datadict (handles both dict and JSON string)Test Plan
_extract_chatbot_message(): dict data, JSON string data, missing data, invalid JSONCloses #9752