Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(psycopg): support async iteration (#9940)
Motivation: Previously, using async iteration with `psycopg` (`async for`) would throw an exception. Example: ``` def connect_to_db(): # db connection logic... async def testfunc(): connectstr = get_conn_str() async with AsyncConnectionPool( conninfo=connectstr, min_size=4, max_size=30 ) as async_pool: async with async_pool.connection() as conn: async with conn.cursor() as cur: await cur.execute( sql.SQL( """ SELECT * FROM table1 LIMIT 5 """ ) ) async for row in cur: print(row) ``` Running `ddtrace-run python test.py` would return `TypeError: 'async for' requires an object with __aiter__ method, got Psycopg3TracedAsyncCursor`. This fix implements the `__aiter__` method for the `TracedAsyncCursor` parent class, and has `Psycopg3TracedAsyncCursor` inherit from it. ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) --------- Co-authored-by: Munir Abdinur <munir.abdinur@datadoghq.com>
- Loading branch information