Skip to content

Conversation

@alexander-alderman-webb
Copy link
Contributor

Description

Issues

Reminders

@github-actions
Copy link
Contributor

github-actions bot commented Feb 11, 2026

Semver Impact of This PR

🟢 Patch (bug fixes)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


Bug Fixes 🐛

  • fix(celery): Close the connection we're reading driver_type from by sentrivana in #5427
  • fix(openai-agents): Patch tool functions following library refactor by alexander-alderman-webb in #5445

Internal Changes 🔧

  • test(openai-agents): Avoid calling SDK-internal functions by alexander-alderman-webb in #5437
  • ref: Remove references to unsupported attribute types by alexander-alderman-webb in #5425
  • ci: Pin setuptools for linting and chalice tests by alexander-alderman-webb in #5438

🤖 This preview updates automatically when you update the PR.

@alexander-alderman-webb alexander-alderman-webb marked this pull request as ready for review February 11, 2026 10:32
@alexander-alderman-webb alexander-alderman-webb requested a review from a team as a code owner February 11, 2026 10:32
@github-actions
Copy link
Contributor

github-actions bot commented Feb 11, 2026

Codecov Results 📊

6 passed | Total: 6 | Pass Rate: 100% | Execution Time: 1.20s

All tests are passing successfully.

❌ Patch coverage is 5.00%. Project has 15306 uncovered lines.

Files with missing lines (181)
File Patch % Lines
utils.py 35.89% ⚠️ 584 Missing and 53 partials
langchain.py 3.28% ⚠️ 590 Missing
openai.py 5.57% ⚠️ 492 Missing
utils.py 0.00% ⚠️ 479 Missing
tracing_utils.py 28.67% ⚠️ 418 Missing and 20 partials
scope.py 62.61% ⚠️ 307 Missing and 68 partials
__init__.py 5.08% ⚠️ 374 Missing
starlette.py 5.34% ⚠️ 337 Missing
transport.py 23.04% ⚠️ 304 Missing and 2 partials
client.py 53.39% ⚠️ 234 Missing and 64 partials
mcp.py 5.24% ⚠️ 253 Missing
anthropic.py 9.19% ⚠️ 247 Missing
transaction_profiler.py 35.52% ⚠️ 216 Missing and 10 partials
tracing.py 62.95% ⚠️ 176 Missing and 49 partials
__init__.py 3.91% ⚠️ 221 Missing
langgraph.py 5.29% ⚠️ 215 Missing
utils.py 16.08% ⚠️ 214 Missing
span_processor.py 0.00% ⚠️ 205 Missing
__init__.py 5.14% ⚠️ 203 Missing
continuous_profiler.py 43.45% ⚠️ 177 Missing and 17 partials
strawberry.py 7.54% ⚠️ 184 Missing
aws_lambda.py 16.50% ⚠️ 167 Missing
spark_driver.py 0.00% ⚠️ 166 Missing
huggingface_hub.py 8.89% ⚠️ 164 Missing
sanic.py 9.60% ⚠️ 160 Missing
aiohttp.py 10.84% ⚠️ 148 Missing
cloud_resource_context.py 0.00% ⚠️ 145 Missing
ai_client.py 0.00% ⚠️ 145 Missing
rust_tracing.py 0.00% ⚠️ 143 Missing
litellm.py 0.00% ⚠️ 138 Missing
litestar.py 9.59% ⚠️ 132 Missing
starlite.py 8.33% ⚠️ 132 Missing
envelope.py 40.82% ⚠️ 116 Missing and 11 partials
falcon.py 8.94% ⚠️ 112 Missing
flask.py 12.50% ⚠️ 112 Missing
spotlight.py 28.47% ⚠️ 103 Missing and 8 partials
asgi.py 20.71% ⚠️ 111 Missing
cohere.py 12.70% ⚠️ 110 Missing
dramatiq.py 0.00% ⚠️ 110 Missing
agent_run.py 0.00% ⚠️ 110 Missing
arq.py 9.92% ⚠️ 109 Missing
asgi.py 0.00% ⚠️ 109 Missing
hub.py 45.60% ⚠️ 105 Missing and 3 partials
logging.py 32.68% ⚠️ 103 Missing and 3 partials
pymongo.py 10.17% ⚠️ 106 Missing
beat.py 8.62% ⚠️ 106 Missing
caching.py 0.00% ⚠️ 106 Missing
utils.py 0.00% ⚠️ 103 Missing
templates.py 0.00% ⚠️ 100 Missing
quart.py 16.10% ⚠️ 99 Missing
wsgi.py 22.66% ⚠️ 99 Missing
models.py 4.81% ⚠️ 99 Missing
gcp.py 0.00% ⚠️ 98 Missing
asyncpg.py 11.82% ⚠️ 97 Missing
otlp.py 0.00% ⚠️ 97 Missing
utils.py 13.39% ⚠️ 97 Missing
sessions.py 27.82% ⚠️ 96 Missing
pyramid.py 13.76% ⚠️ 94 Missing
tornado.py 14.55% ⚠️ 94 Missing
__init__.py 0.00% ⚠️ 93 Missing
_wsgi_common.py 28.35% ⚠️ 91 Missing
bottle.py 11.65% ⚠️ 91 Missing
middleware.py 0.00% ⚠️ 90 Missing
agent_run.py 0.00% ⚠️ 90 Missing
stdlib.py 35.82% ⚠️ 86 Missing and 2 partials
runner.py 0.00% ⚠️ 87 Missing
beam.py 0.00% ⚠️ 84 Missing
loguru.py 11.58% ⚠️ 84 Missing
ray.py 0.00% ⚠️ 84 Missing
asyncio.py 0.00% ⚠️ 80 Missing
invoke_agent.py 0.00% ⚠️ 79 Missing
session.py 15.56% ⚠️ 76 Missing
clickhouse_driver.py 17.58% ⚠️ 75 Missing
pure_eval.py 0.00% ⚠️ 73 Missing
worker.py 22.58% ⚠️ 72 Missing
ariadne.py 14.46% ⚠️ 71 Missing
gql.py 10.13% ⚠️ 71 Missing
sqlalchemy.py 10.26% ⚠️ 70 Missing
fastapi.py 15.85% ⚠️ 69 Missing
serializer.py 72.58% ⚠️ 51 Missing and 17 partials
monitoring.py 17.07% ⚠️ 68 Missing
graphene.py 12.82% ⚠️ 68 Missing
transactions.py 0.00% ⚠️ 67 Missing
_queue.py 26.67% ⚠️ 66 Missing
rq.py 15.38% ⚠️ 66 Missing
huey.py 17.72% ⚠️ 65 Missing
boto3.py 14.86% ⚠️ 63 Missing
utils.py 16.00% ⚠️ 63 Missing
streaming.py 0.00% ⚠️ 62 Missing
httpx.py 16.44% ⚠️ 61 Missing
api.py 59.73% ⚠️ 60 Missing
chalice.py 16.18% ⚠️ 57 Missing
propagator.py 0.00% ⚠️ 57 Missing
server.py 0.00% ⚠️ 56 Missing
spark_worker.py 0.00% ⚠️ 56 Missing
graph_nodes.py 0.00% ⚠️ 52 Missing
gnu_backtrace.py 0.00% ⚠️ 51 Missing
_async_common.py 0.00% ⚠️ 51 Missing
socket.py 0.00% ⚠️ 50 Missing
views.py 0.00% ⚠️ 50 Missing
tools.py 0.00% ⚠️ 49 Missing
caches.py 16.95% ⚠️ 49 Missing
_batcher.py 41.25% ⚠️ 47 Missing
invoke_agent.py 0.00% ⚠️ 46 Missing
traces.py 47.06% ⚠️ 45 Missing
_asgi_common.py 16.67% ⚠️ 45 Missing
signals_handlers.py 0.00% ⚠️ 44 Missing
utils.py 22.22% ⚠️ 42 Missing and 1 partials
client.py 0.00% ⚠️ 40 Missing
_sync_common.py 22.00% ⚠️ 39 Missing
executing.py 0.00% ⚠️ 38 Missing
client.py 0.00% ⚠️ 38 Missing
_span_batcher.py 35.71% ⚠️ 36 Missing
serverless.py 0.00% ⚠️ 36 Missing
__init__.py 10.00% ⚠️ 36 Missing
server.py 0.00% ⚠️ 35 Missing
threading.py 74.74% ⚠️ 24 Missing and 10 partials
sys_exit.py 0.00% ⚠️ 32 Missing
scrubber.py 71.01% ⚠️ 20 Missing and 11 partials
launchdarkly.py 0.00% ⚠️ 31 Missing
integration.py 0.00% ⚠️ 30 Missing
trytond.py 0.00% ⚠️ 29 Missing
error_tracing.py 0.00% ⚠️ 29 Missing
tools.py 0.00% ⚠️ 27 Missing
ai_client.py 13.33% ⚠️ 26 Missing
execute_tool.py 0.00% ⚠️ 26 Missing
_openai_completions_api.py 19.35% ⚠️ 25 Missing
redis_cluster.py 26.47% ⚠️ 25 Missing
_werkzeug.py 11.11% ⚠️ 24 Missing
__init__.py 84.44% ⚠️ 14 Missing and 10 partials
typer.py 0.00% ⚠️ 24 Missing
tasks.py 0.00% ⚠️ 24 Missing
_compat.py 41.03% ⚠️ 23 Missing
monitor.py 67.21% ⚠️ 20 Missing and 3 partials
queries.py 25.81% ⚠️ 23 Missing
logger.py 43.59% ⚠️ 22 Missing
decorator.py 37.14% ⚠️ 22 Missing
_log_batcher.py 0.00% ⚠️ 21 Missing
attachments.py 27.59% ⚠️ 21 Missing
unraisablehook.py 0.00% ⚠️ 21 Missing
openfeature.py 0.00% ⚠️ 20 Missing
execute_tool.py 0.00% ⚠️ 20 Missing
unleash.py 0.00% ⚠️ 19 Missing
model_request.py 0.00% ⚠️ 18 Missing
utils.py 0.00% ⚠️ 16 Missing
_lru_cache.py 60.00% ⚠️ 12 Missing and 3 partials
atexit.py 56.25% ⚠️ 14 Missing and 1 partials
excepthook.py 56.25% ⚠️ 14 Missing and 1 partials
redis.py 25.00% ⚠️ 15 Missing
_init_implementation.py 45.83% ⚠️ 13 Missing
__init__.py 27.78% ⚠️ 13 Missing
_types.py 60.00% ⚠️ 12 Missing
types.py 0.00% ⚠️ 12 Missing
dedupe.py 80.00% ⚠️ 8 Missing and 3 partials
redis_py_cluster_legacy.py 26.67% ⚠️ 11 Missing
api.py 37.50% ⚠️ 10 Missing
utils.py 41.18% ⚠️ 10 Missing
handoff.py 0.00% ⚠️ 10 Missing
metrics.py 47.06% ⚠️ 9 Missing
__init__.py 72.41% ⚠️ 8 Missing and 1 partials
_metrics_batcher.py 65.00% ⚠️ 7 Missing
consts.py 0.00% ⚠️ 7 Missing
rb.py 30.00% ⚠️ 7 Missing
_openai_responses_api.py 33.33% ⚠️ 6 Missing
debug.py 91.30% ⚠️ 2 Missing and 2 partials
consts.py 0.00% ⚠️ 4 Missing
__init__.py 20.00% ⚠️ 4 Missing
__init__.py 0.00% ⚠️ 4 Missing
feature_flags.py 93.75% ⚠️ 2 Missing and 1 partials
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 40.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
consts.py 99.16% ⚠️ 2 Missing
argv.py 100.00% ⚠️ 2 partials
modules.py 94.12% ⚠️ 1 Missing and 1 partials
statsig.py 91.30% ⚠️ 2 Missing
agent_workflow.py 71.43% ⚠️ 2 Missing
consts.py 0.00% ⚠️ 1 Missing
consts.py 0.00% ⚠️ 1 Missing

Generated by Codecov Action


def _patch_run_get_all_tools() -> None:
agents.run.get_all_tools = _create_run_loop_get_all_tools_wrapper(
run_loop.get_all_tools
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Monkey patch targets wrong module for v0.8+ tools

High Severity

_patch_run_get_all_tools wraps run_loop.get_all_tools but assigns the wrapper to agents.run.get_all_tools instead of run_loop.get_all_tools. Since the function was moved from a classmethod on AgentRunner to a standalone function in agents.run_internal.run_loop, the library's internal code likely calls it via the run_loop module — not via agents.run. Unlike all the other patches in this integration (which target classmethods on classes and rely on Python's descriptor protocol), this patches a module-level attribute that callers inside the library probably never look up, meaning the Sentry tool instrumentation would silently not work for v0.8+ users.

Fix in Cursor Fix in Web

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to patch the reference used in the library.



def _patch_run_get_all_tools() -> None:
agents.run.get_all_tools = _create_run_loop_get_all_tools_wrapper(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we're creating a lot of random indirection and cognitive overhead with these wrappers. I would just move the patching logic here in this function and remove those wrappers and just keep the _get_all_tools in the tools.py file.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

@staticmethod
def setup_once() -> None:
_patch_error_tracing()
_patch_tools()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's keep _patch_tools for the isolation and add the tools stuff in there

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to avoid having the same if condition in all the patch_* functions that boils down to checking the version. Could we consider breaking into _patch_run_get_all_tools() and _patch_agent_runner_get_all_tools(), or do we want different names for these functions that are not based on the location+name of what we're patching?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok then keep this for now, we'll look at the shape of the __init__ file at the end, and we remove all the wrappers first

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