Skip to content

Fix agent default callback handler #170

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

awsarron
Copy link
Member

@awsarron awsarron commented Jun 3, 2025

Description

Fix agent default callback handler

This PR expands on #68.

Related Issues

N/A

Documentation PR

N/A

Type of Change

  • Bug fix

Testing

  • hatch fmt
  • hatch run test-lint
  • hatch test --all
  • Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli

Checklist

  • I have read the CONTRIBUTING document
  • I have added tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Sourabh Sarupria and others added 5 commits June 3, 2025 10:57
1. Type Annotation Improvements:
   - Changed kwargs: Any to kwargs: Dict[str, Any] in _run_loop method
   - Changed dict[str, Any] to Dict[str, Any] in _execute_event_loop_cycle
   - Improved all Callable type annotations to Callable[..., Any]

2. Default Parameter Value Fix:
   - Changed callback_handler default from PrintingCallbackHandler() to None
   - This avoids the anti-pattern of using a mutable default parameter value

3. Parameter Mutation Protection:
   - Added .copy() to kwargs in both __call__ and stream_async methods
   - This prevents modifications to the kwargs dictionary from affecting the original
This addresses PR feedback by:
1. Adding a sentinel object _DEFAULT_CALLBACK_HANDLER to distinguish between default and explicit None
2. Using the sentinel as the default parameter value for callback_handler
3. Creating a new PrintingCallbackHandler instance when the sentinel is used
4. Preserving the behavior where explicitly passing None uses null_callback_handler
5. Updating the docstring to reflect these changes
@awsarron awsarron merged commit 9ce8f3d into strands-agents:main Jun 3, 2025
10 checks passed
@awsarron awsarron deleted the fix-agent-default-callback-handler branch June 3, 2025 16:44
jer96 pushed a commit to lukehau/sdk-python that referenced this pull request Jun 3, 2025
Co-authored-by: Sourabh Sarupria <[email protected]>
Co-authored-by: Sourabh Sarupria <[email protected]>
Unshure pushed a commit to Unshure/sdk-python that referenced this pull request Jul 2, 2025
Co-authored-by: Sourabh Sarupria <[email protected]>
Co-authored-by: Sourabh Sarupria <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants