TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

Description

@Harmon758

How do you use Sentry?

Sentry Saas (sentry.io)

Version

1.27.0

Steps to Reproduce

D:\>py -3.11 -m venv .venv
D:\>cd .venv
D:\.venv>Scripts\activate.bat
(.venv) D:\.venv>pip install aiohttp sentry-sdk
Collecting aiohttp
Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
Collecting sentry-sdk
Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
Collecting attrs>=17.3.0
Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Collecting charset-normalizer<4.0,>=2.0
Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
Collecting multidict<7.0,>=4.5
Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
Collecting async-timeout<5.0,>=4.0.0a3
Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
Collecting frozenlist>=1.1.1
Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
Collecting aiosignal>=1.1.2
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting certifi
Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
Collecting urllib3>=1.26.11
Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
Collecting idna>=2.0
Using cached idna-3.4-py3-none-any.whl (61 kB)
Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
[notice] A new release of pip available: 22.3 -> 23.1.2
[notice] To update, run: python.exe -m pip install --upgrade pip
(.venv) D:\.venv>python
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sentry_sdk
>>> sentry_sdk.init(debug=True)
[sentry] DEBUG: Setting up integrations (with default = True)
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
[sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
[sentry] DEBUG: Setting up previously not enabled integration logging
[sentry] DEBUG: Setting up previously not enabled integration stdlib
[sentry] DEBUG: Setting up previously not enabled integration excepthook
[sentry] DEBUG: Setting up previously not enabled integration dedupe
[sentry] DEBUG: Setting up previously not enabled integration atexit
[sentry] DEBUG: Setting up previously not enabled integration modules
[sentry] DEBUG: Setting up previously not enabled integration argv
[sentry] DEBUG: Setting up previously not enabled integration threading
[sentry] DEBUG: Setting up previously not enabled integration aiohttp
[sentry] DEBUG: Setting up previously not enabled integration redis
[sentry] DEBUG: Did not enable default integration redis: Redis client not installed
[sentry] DEBUG: Enabling integration logging
[sentry] DEBUG: Enabling integration stdlib
[sentry] DEBUG: Enabling integration excepthook
[sentry] DEBUG: Enabling integration dedupe
[sentry] DEBUG: Enabling integration atexit
[sentry] DEBUG: Enabling integration modules
[sentry] DEBUG: Enabling integration argv
[sentry] DEBUG: Enabling integration threading
[sentry] DEBUG: Enabling integration aiohttp
[sentry] DEBUG: Enabling integration redis
[sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
<sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
>>> import aiohttp
>>> aiohttp.ClientSession(trace_configs=None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
client_trace_configs = list(kwargs.get("trace_configs", ()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not iterable

Expected Result

Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

Actual Result

TypeError: 'NoneType' object is not iterable is raised, due to:

client_trace_configs=list(kwargs.get("trace_configs", ()))
as part of:
old_client_session_init=ClientSession.__init__
definit(*args, **kwargs):
# type: (Any, Any) -> ClientSession
hub=Hub.current
ifhub.get_integration(AioHttpIntegration) isNone:
returnold_client_session_init(*args, **kwargs)
client_trace_configs=list(kwargs.get("trace_configs", ()))
trace_config=create_trace_config()
client_trace_configs.append(trace_config)
kwargs["trace_configs"] =client_trace_configs
returnold_client_session_init(*args, **kwargs)
ClientSession.__init__=init
which was added in #1761.

I originally encountered this through discord.py:

Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
data =awaitself.http.static_login(token.strip())
File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
client_trace_configs =list(kwargs.get("trace_configs", ()))
TypeError: 'NoneType' object is not iterable

https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

Metadata

Metadata

Assignees

No one assigned

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

    Description

    @Harmon758

    How do you use Sentry?

    Sentry Saas (sentry.io)

    Version

    1.27.0

    Steps to Reproduce

    D:\>py -3.11 -m venv .venv
    D:\>cd .venv
    D:\.venv>Scripts\activate.bat
    (.venv) D:\.venv>pip install aiohttp sentry-sdk
    Collecting aiohttp
    Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
    Collecting sentry-sdk
    Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
    Collecting attrs>=17.3.0
    Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
    Collecting charset-normalizer<4.0,>=2.0
    Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
    Collecting multidict<7.0,>=4.5
    Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
    Collecting async-timeout<5.0,>=4.0.0a3
    Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
    Collecting yarl<2.0,>=1.0
    Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
    Collecting frozenlist>=1.1.1
    Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
    Collecting aiosignal>=1.1.2
    Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
    Collecting certifi
    Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
    Collecting urllib3>=1.26.11
    Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
    Collecting idna>=2.0
    Using cached idna-3.4-py3-none-any.whl (61 kB)
    Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
    Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
    [notice] A new release of pip available: 22.3 -> 23.1.2
    [notice] To update, run: python.exe -m pip install --upgrade pip
    (.venv) D:\.venv>python
    Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sentry_sdk
    >>> sentry_sdk.init(debug=True)
    [sentry] DEBUG: Setting up integrations (with default = True)
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
    [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
    [sentry] DEBUG: Setting up previously not enabled integration logging
    [sentry] DEBUG: Setting up previously not enabled integration stdlib
    [sentry] DEBUG: Setting up previously not enabled integration excepthook
    [sentry] DEBUG: Setting up previously not enabled integration dedupe
    [sentry] DEBUG: Setting up previously not enabled integration atexit
    [sentry] DEBUG: Setting up previously not enabled integration modules
    [sentry] DEBUG: Setting up previously not enabled integration argv
    [sentry] DEBUG: Setting up previously not enabled integration threading
    [sentry] DEBUG: Setting up previously not enabled integration aiohttp
    [sentry] DEBUG: Setting up previously not enabled integration redis
    [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
    [sentry] DEBUG: Enabling integration logging
    [sentry] DEBUG: Enabling integration stdlib
    [sentry] DEBUG: Enabling integration excepthook
    [sentry] DEBUG: Enabling integration dedupe
    [sentry] DEBUG: Enabling integration atexit
    [sentry] DEBUG: Enabling integration modules
    [sentry] DEBUG: Enabling integration argv
    [sentry] DEBUG: Enabling integration threading
    [sentry] DEBUG: Enabling integration aiohttp
    [sentry] DEBUG: Enabling integration redis
    [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
    <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
    >>> import aiohttp
    >>> aiohttp.ClientSession(trace_configs=None)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
    client_trace_configs = list(kwargs.get("trace_configs", ()))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    TypeError: 'NoneType' object is not iterable

    Expected Result

    Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

    Actual Result

    TypeError: 'NoneType' object is not iterable is raised, due to:

    client_trace_configs=list(kwargs.get("trace_configs", ()))
    as part of:
    old_client_session_init=ClientSession.__init__
    definit(*args, **kwargs):
    # type: (Any, Any) -> ClientSession
    hub=Hub.current
    ifhub.get_integration(AioHttpIntegration) isNone:
    returnold_client_session_init(*args, **kwargs)
    client_trace_configs=list(kwargs.get("trace_configs", ()))
    trace_config=create_trace_config()
    client_trace_configs.append(trace_config)
    kwargs["trace_configs"] =client_trace_configs
    returnold_client_session_init(*args, **kwargs)
    ClientSession.__init__=init
    which was added in #1761.

    I originally encountered this through discord.py:

    Traceback (most recent call last):
    File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
    File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
    data =awaitself.http.static_login(token.strip())
    File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
    File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
    client_trace_configs =list(kwargs.get("trace_configs", ()))
    TypeError: 'NoneType' object is not iterable

    https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
    https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

    Metadata

    Metadata

    Assignees

    No one assigned

      Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

      Description

      @Harmon758

      How do you use Sentry?

      Sentry Saas (sentry.io)

      Version

      1.27.0

      Steps to Reproduce

      D:\>py -3.11 -m venv .venv
      D:\>cd .venv
      D:\.venv>Scripts\activate.bat
      (.venv) D:\.venv>pip install aiohttp sentry-sdk
      Collecting aiohttp
      Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
      Collecting sentry-sdk
      Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
      Collecting attrs>=17.3.0
      Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
      Collecting charset-normalizer<4.0,>=2.0
      Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
      Collecting multidict<7.0,>=4.5
      Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
      Collecting async-timeout<5.0,>=4.0.0a3
      Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
      Collecting yarl<2.0,>=1.0
      Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
      Collecting frozenlist>=1.1.1
      Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
      Collecting aiosignal>=1.1.2
      Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
      Collecting certifi
      Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
      Collecting urllib3>=1.26.11
      Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
      Collecting idna>=2.0
      Using cached idna-3.4-py3-none-any.whl (61 kB)
      Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
      Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
      [notice] A new release of pip available: 22.3 -> 23.1.2
      [notice] To update, run: python.exe -m pip install --upgrade pip
      (.venv) D:\.venv>python
      Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import sentry_sdk
      >>> sentry_sdk.init(debug=True)
      [sentry] DEBUG: Setting up integrations (with default = True)
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
      [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
      [sentry] DEBUG: Setting up previously not enabled integration logging
      [sentry] DEBUG: Setting up previously not enabled integration stdlib
      [sentry] DEBUG: Setting up previously not enabled integration excepthook
      [sentry] DEBUG: Setting up previously not enabled integration dedupe
      [sentry] DEBUG: Setting up previously not enabled integration atexit
      [sentry] DEBUG: Setting up previously not enabled integration modules
      [sentry] DEBUG: Setting up previously not enabled integration argv
      [sentry] DEBUG: Setting up previously not enabled integration threading
      [sentry] DEBUG: Setting up previously not enabled integration aiohttp
      [sentry] DEBUG: Setting up previously not enabled integration redis
      [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
      [sentry] DEBUG: Enabling integration logging
      [sentry] DEBUG: Enabling integration stdlib
      [sentry] DEBUG: Enabling integration excepthook
      [sentry] DEBUG: Enabling integration dedupe
      [sentry] DEBUG: Enabling integration atexit
      [sentry] DEBUG: Enabling integration modules
      [sentry] DEBUG: Enabling integration argv
      [sentry] DEBUG: Enabling integration threading
      [sentry] DEBUG: Enabling integration aiohttp
      [sentry] DEBUG: Enabling integration redis
      [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
      <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
      >>> import aiohttp
      >>> aiohttp.ClientSession(trace_configs=None)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
      client_trace_configs = list(kwargs.get("trace_configs", ()))
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      TypeError: 'NoneType' object is not iterable

      Expected Result

      Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

      Actual Result

      TypeError: 'NoneType' object is not iterable is raised, due to:

      client_trace_configs=list(kwargs.get("trace_configs", ()))
      as part of:
      old_client_session_init=ClientSession.__init__
      definit(*args, **kwargs):
      # type: (Any, Any) -> ClientSession
      hub=Hub.current
      ifhub.get_integration(AioHttpIntegration) isNone:
      returnold_client_session_init(*args, **kwargs)
      client_trace_configs=list(kwargs.get("trace_configs", ()))
      trace_config=create_trace_config()
      client_trace_configs.append(trace_config)
      kwargs["trace_configs"] =client_trace_configs
      returnold_client_session_init(*args, **kwargs)
      ClientSession.__init__=init
      which was added in #1761.

      I originally encountered this through discord.py:

      Traceback (most recent call last):
      File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
      File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
      data =awaitself.http.static_login(token.strip())
      File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
      File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
      client_trace_configs =list(kwargs.get("trace_configs", ()))
      TypeError: 'NoneType' object is not iterable

      https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
      https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

      Metadata

      Metadata

      Assignees

      No one assigned

        Projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

        Description

        @Harmon758

        How do you use Sentry?

        Sentry Saas (sentry.io)

        Version

        1.27.0

        Steps to Reproduce

        D:\>py -3.11 -m venv .venv
        D:\>cd .venv
        D:\.venv>Scripts\activate.bat
        (.venv) D:\.venv>pip install aiohttp sentry-sdk
        Collecting aiohttp
        Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
        Collecting sentry-sdk
        Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
        Collecting attrs>=17.3.0
        Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
        Collecting charset-normalizer<4.0,>=2.0
        Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
        Collecting multidict<7.0,>=4.5
        Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
        Collecting async-timeout<5.0,>=4.0.0a3
        Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
        Collecting yarl<2.0,>=1.0
        Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
        Collecting frozenlist>=1.1.1
        Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
        Collecting aiosignal>=1.1.2
        Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
        Collecting certifi
        Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
        Collecting urllib3>=1.26.11
        Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
        Collecting idna>=2.0
        Using cached idna-3.4-py3-none-any.whl (61 kB)
        Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
        Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
        [notice] A new release of pip available: 22.3 -> 23.1.2
        [notice] To update, run: python.exe -m pip install --upgrade pip
        (.venv) D:\.venv>python
        Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import sentry_sdk
        >>> sentry_sdk.init(debug=True)
        [sentry] DEBUG: Setting up integrations (with default = True)
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
        [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
        [sentry] DEBUG: Setting up previously not enabled integration logging
        [sentry] DEBUG: Setting up previously not enabled integration stdlib
        [sentry] DEBUG: Setting up previously not enabled integration excepthook
        [sentry] DEBUG: Setting up previously not enabled integration dedupe
        [sentry] DEBUG: Setting up previously not enabled integration atexit
        [sentry] DEBUG: Setting up previously not enabled integration modules
        [sentry] DEBUG: Setting up previously not enabled integration argv
        [sentry] DEBUG: Setting up previously not enabled integration threading
        [sentry] DEBUG: Setting up previously not enabled integration aiohttp
        [sentry] DEBUG: Setting up previously not enabled integration redis
        [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
        [sentry] DEBUG: Enabling integration logging
        [sentry] DEBUG: Enabling integration stdlib
        [sentry] DEBUG: Enabling integration excepthook
        [sentry] DEBUG: Enabling integration dedupe
        [sentry] DEBUG: Enabling integration atexit
        [sentry] DEBUG: Enabling integration modules
        [sentry] DEBUG: Enabling integration argv
        [sentry] DEBUG: Enabling integration threading
        [sentry] DEBUG: Enabling integration aiohttp
        [sentry] DEBUG: Enabling integration redis
        [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
        <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
        >>> import aiohttp
        >>> aiohttp.ClientSession(trace_configs=None)
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
        client_trace_configs = list(kwargs.get("trace_configs", ()))
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        TypeError: 'NoneType' object is not iterable

        Expected Result

        Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

        Actual Result

        TypeError: 'NoneType' object is not iterable is raised, due to:

        client_trace_configs=list(kwargs.get("trace_configs", ()))
        as part of:
        old_client_session_init=ClientSession.__init__
        definit(*args, **kwargs):
        # type: (Any, Any) -> ClientSession
        hub=Hub.current
        ifhub.get_integration(AioHttpIntegration) isNone:
        returnold_client_session_init(*args, **kwargs)
        client_trace_configs=list(kwargs.get("trace_configs", ()))
        trace_config=create_trace_config()
        client_trace_configs.append(trace_config)
        kwargs["trace_configs"] =client_trace_configs
        returnold_client_session_init(*args, **kwargs)
        ClientSession.__init__=init
        which was added in #1761.

        I originally encountered this through discord.py:

        Traceback (most recent call last):
        File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
        File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
        data =awaitself.http.static_login(token.strip())
        File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
        File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
        client_trace_configs =list(kwargs.get("trace_configs", ()))
        TypeError: 'NoneType' object is not iterable

        https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
        https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

        Metadata

        Metadata

        Assignees

        No one assigned

          Projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

          Description

          @Harmon758

          How do you use Sentry?

          Sentry Saas (sentry.io)

          Version

          1.27.0

          Steps to Reproduce

          D:\>py -3.11 -m venv .venv
          D:\>cd .venv
          D:\.venv>Scripts\activate.bat
          (.venv) D:\.venv>pip install aiohttp sentry-sdk
          Collecting aiohttp
          Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
          Collecting sentry-sdk
          Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
          Collecting attrs>=17.3.0
          Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
          Collecting charset-normalizer<4.0,>=2.0
          Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
          Collecting multidict<7.0,>=4.5
          Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
          Collecting async-timeout<5.0,>=4.0.0a3
          Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
          Collecting yarl<2.0,>=1.0
          Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
          Collecting frozenlist>=1.1.1
          Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
          Collecting aiosignal>=1.1.2
          Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
          Collecting certifi
          Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
          Collecting urllib3>=1.26.11
          Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
          Collecting idna>=2.0
          Using cached idna-3.4-py3-none-any.whl (61 kB)
          Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
          Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
          [notice] A new release of pip available: 22.3 -> 23.1.2
          [notice] To update, run: python.exe -m pip install --upgrade pip
          (.venv) D:\.venv>python
          Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
          Type "help", "copyright", "credits" or "license" for more information.
          >>> import sentry_sdk
          >>> sentry_sdk.init(debug=True)
          [sentry] DEBUG: Setting up integrations (with default = True)
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
          [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
          [sentry] DEBUG: Setting up previously not enabled integration logging
          [sentry] DEBUG: Setting up previously not enabled integration stdlib
          [sentry] DEBUG: Setting up previously not enabled integration excepthook
          [sentry] DEBUG: Setting up previously not enabled integration dedupe
          [sentry] DEBUG: Setting up previously not enabled integration atexit
          [sentry] DEBUG: Setting up previously not enabled integration modules
          [sentry] DEBUG: Setting up previously not enabled integration argv
          [sentry] DEBUG: Setting up previously not enabled integration threading
          [sentry] DEBUG: Setting up previously not enabled integration aiohttp
          [sentry] DEBUG: Setting up previously not enabled integration redis
          [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
          [sentry] DEBUG: Enabling integration logging
          [sentry] DEBUG: Enabling integration stdlib
          [sentry] DEBUG: Enabling integration excepthook
          [sentry] DEBUG: Enabling integration dedupe
          [sentry] DEBUG: Enabling integration atexit
          [sentry] DEBUG: Enabling integration modules
          [sentry] DEBUG: Enabling integration argv
          [sentry] DEBUG: Enabling integration threading
          [sentry] DEBUG: Enabling integration aiohttp
          [sentry] DEBUG: Enabling integration redis
          [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
          <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
          >>> import aiohttp
          >>> aiohttp.ClientSession(trace_configs=None)
          Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
          client_trace_configs = list(kwargs.get("trace_configs", ()))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          TypeError: 'NoneType' object is not iterable

          Expected Result

          Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

          Actual Result

          TypeError: 'NoneType' object is not iterable is raised, due to:

          client_trace_configs=list(kwargs.get("trace_configs", ()))
          as part of:
          old_client_session_init=ClientSession.__init__
          definit(*args, **kwargs):
          # type: (Any, Any) -> ClientSession
          hub=Hub.current
          ifhub.get_integration(AioHttpIntegration) isNone:
          returnold_client_session_init(*args, **kwargs)
          client_trace_configs=list(kwargs.get("trace_configs", ()))
          trace_config=create_trace_config()
          client_trace_configs.append(trace_config)
          kwargs["trace_configs"] =client_trace_configs
          returnold_client_session_init(*args, **kwargs)
          ClientSession.__init__=init
          which was added in #1761.

          I originally encountered this through discord.py:

          Traceback (most recent call last):
          File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
          File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
          data =awaitself.http.static_login(token.strip())
          File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
          File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
          client_trace_configs =list(kwargs.get("trace_configs", ()))
          TypeError: 'NoneType' object is not iterable

          https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
          https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

          Metadata

          Metadata

          Assignees

          No one assigned

            Projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

            Description

            @Harmon758

            How do you use Sentry?

            Sentry Saas (sentry.io)

            Version

            1.27.0

            Steps to Reproduce

            D:\>py -3.11 -m venv .venv
            D:\>cd .venv
            D:\.venv>Scripts\activate.bat
            (.venv) D:\.venv>pip install aiohttp sentry-sdk
            Collecting aiohttp
            Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
            Collecting sentry-sdk
            Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
            Collecting attrs>=17.3.0
            Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
            Collecting charset-normalizer<4.0,>=2.0
            Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
            Collecting multidict<7.0,>=4.5
            Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
            Collecting async-timeout<5.0,>=4.0.0a3
            Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
            Collecting yarl<2.0,>=1.0
            Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
            Collecting frozenlist>=1.1.1
            Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
            Collecting aiosignal>=1.1.2
            Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
            Collecting certifi
            Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
            Collecting urllib3>=1.26.11
            Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
            Collecting idna>=2.0
            Using cached idna-3.4-py3-none-any.whl (61 kB)
            Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
            Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
            [notice] A new release of pip available: 22.3 -> 23.1.2
            [notice] To update, run: python.exe -m pip install --upgrade pip
            (.venv) D:\.venv>python
            Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
            Type "help", "copyright", "credits" or "license" for more information.
            >>> import sentry_sdk
            >>> sentry_sdk.init(debug=True)
            [sentry] DEBUG: Setting up integrations (with default = True)
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
            [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
            [sentry] DEBUG: Setting up previously not enabled integration logging
            [sentry] DEBUG: Setting up previously not enabled integration stdlib
            [sentry] DEBUG: Setting up previously not enabled integration excepthook
            [sentry] DEBUG: Setting up previously not enabled integration dedupe
            [sentry] DEBUG: Setting up previously not enabled integration atexit
            [sentry] DEBUG: Setting up previously not enabled integration modules
            [sentry] DEBUG: Setting up previously not enabled integration argv
            [sentry] DEBUG: Setting up previously not enabled integration threading
            [sentry] DEBUG: Setting up previously not enabled integration aiohttp
            [sentry] DEBUG: Setting up previously not enabled integration redis
            [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
            [sentry] DEBUG: Enabling integration logging
            [sentry] DEBUG: Enabling integration stdlib
            [sentry] DEBUG: Enabling integration excepthook
            [sentry] DEBUG: Enabling integration dedupe
            [sentry] DEBUG: Enabling integration atexit
            [sentry] DEBUG: Enabling integration modules
            [sentry] DEBUG: Enabling integration argv
            [sentry] DEBUG: Enabling integration threading
            [sentry] DEBUG: Enabling integration aiohttp
            [sentry] DEBUG: Enabling integration redis
            [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
            <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
            >>> import aiohttp
            >>> aiohttp.ClientSession(trace_configs=None)
            Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
            File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
            client_trace_configs = list(kwargs.get("trace_configs", ()))
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            TypeError: 'NoneType' object is not iterable

            Expected Result

            Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

            Actual Result

            TypeError: 'NoneType' object is not iterable is raised, due to:

            client_trace_configs=list(kwargs.get("trace_configs", ()))
            as part of:
            old_client_session_init=ClientSession.__init__
            definit(*args, **kwargs):
            # type: (Any, Any) -> ClientSession
            hub=Hub.current
            ifhub.get_integration(AioHttpIntegration) isNone:
            returnold_client_session_init(*args, **kwargs)
            client_trace_configs=list(kwargs.get("trace_configs", ()))
            trace_config=create_trace_config()
            client_trace_configs.append(trace_config)
            kwargs["trace_configs"] =client_trace_configs
            returnold_client_session_init(*args, **kwargs)
            ClientSession.__init__=init
            which was added in #1761.

            I originally encountered this through discord.py:

            Traceback (most recent call last):
            File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
            File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
            data =awaitself.http.static_login(token.strip())
            File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
            File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
            client_trace_configs =list(kwargs.get("trace_configs", ()))
            TypeError: 'NoneType' object is not iterable

            https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
            https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

            Metadata

            Metadata

            Assignees

            No one assigned

              Projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

              Description

              @Harmon758

              How do you use Sentry?

              Sentry Saas (sentry.io)

              Version

              1.27.0

              Steps to Reproduce

              D:\>py -3.11 -m venv .venv
              D:\>cd .venv
              D:\.venv>Scripts\activate.bat
              (.venv) D:\.venv>pip install aiohttp sentry-sdk
              Collecting aiohttp
              Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
              Collecting sentry-sdk
              Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
              Collecting attrs>=17.3.0
              Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
              Collecting charset-normalizer<4.0,>=2.0
              Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
              Collecting multidict<7.0,>=4.5
              Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
              Collecting async-timeout<5.0,>=4.0.0a3
              Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
              Collecting yarl<2.0,>=1.0
              Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
              Collecting frozenlist>=1.1.1
              Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
              Collecting aiosignal>=1.1.2
              Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
              Collecting certifi
              Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
              Collecting urllib3>=1.26.11
              Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
              Collecting idna>=2.0
              Using cached idna-3.4-py3-none-any.whl (61 kB)
              Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
              Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
              [notice] A new release of pip available: 22.3 -> 23.1.2
              [notice] To update, run: python.exe -m pip install --upgrade pip
              (.venv) D:\.venv>python
              Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
              Type "help", "copyright", "credits" or "license" for more information.
              >>> import sentry_sdk
              >>> sentry_sdk.init(debug=True)
              [sentry] DEBUG: Setting up integrations (with default = True)
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
              [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
              [sentry] DEBUG: Setting up previously not enabled integration logging
              [sentry] DEBUG: Setting up previously not enabled integration stdlib
              [sentry] DEBUG: Setting up previously not enabled integration excepthook
              [sentry] DEBUG: Setting up previously not enabled integration dedupe
              [sentry] DEBUG: Setting up previously not enabled integration atexit
              [sentry] DEBUG: Setting up previously not enabled integration modules
              [sentry] DEBUG: Setting up previously not enabled integration argv
              [sentry] DEBUG: Setting up previously not enabled integration threading
              [sentry] DEBUG: Setting up previously not enabled integration aiohttp
              [sentry] DEBUG: Setting up previously not enabled integration redis
              [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
              [sentry] DEBUG: Enabling integration logging
              [sentry] DEBUG: Enabling integration stdlib
              [sentry] DEBUG: Enabling integration excepthook
              [sentry] DEBUG: Enabling integration dedupe
              [sentry] DEBUG: Enabling integration atexit
              [sentry] DEBUG: Enabling integration modules
              [sentry] DEBUG: Enabling integration argv
              [sentry] DEBUG: Enabling integration threading
              [sentry] DEBUG: Enabling integration aiohttp
              [sentry] DEBUG: Enabling integration redis
              [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
              <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
              >>> import aiohttp
              >>> aiohttp.ClientSession(trace_configs=None)
              Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
              File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
              client_trace_configs = list(kwargs.get("trace_configs", ()))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              TypeError: 'NoneType' object is not iterable

              Expected Result

              Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

              Actual Result

              TypeError: 'NoneType' object is not iterable is raised, due to:

              client_trace_configs=list(kwargs.get("trace_configs", ()))
              as part of:
              old_client_session_init=ClientSession.__init__
              definit(*args, **kwargs):
              # type: (Any, Any) -> ClientSession
              hub=Hub.current
              ifhub.get_integration(AioHttpIntegration) isNone:
              returnold_client_session_init(*args, **kwargs)
              client_trace_configs=list(kwargs.get("trace_configs", ()))
              trace_config=create_trace_config()
              client_trace_configs.append(trace_config)
              kwargs["trace_configs"] =client_trace_configs
              returnold_client_session_init(*args, **kwargs)
              ClientSession.__init__=init
              which was added in #1761.

              I originally encountered this through discord.py:

              Traceback (most recent call last):
              File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
              File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
              data =awaitself.http.static_login(token.strip())
              File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
              File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
              client_trace_configs =list(kwargs.get("trace_configs", ()))
              TypeError: 'NoneType' object is not iterable

              https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
              https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

              Metadata

              Metadata

              Assignees

              No one assigned

                Projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                TypeError from aiohttp integration when explicitly passing None for ClientSession's trace_configs kwarg #2229

                Description

                @Harmon758

                How do you use Sentry?

                Sentry Saas (sentry.io)

                Version

                1.27.0

                Steps to Reproduce

                D:\>py -3.11 -m venv .venv
                D:\>cd .venv
                D:\.venv>Scripts\activate.bat
                (.venv) D:\.venv>pip install aiohttp sentry-sdk
                Collecting aiohttp
                Downloading aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 317.2/317.2 kB 3.9 MB/s eta 0:00:00
                Collecting sentry-sdk
                Using cached sentry_sdk-1.27.0-py2.py3-none-any.whl (211 kB)
                Collecting attrs>=17.3.0
                Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
                Collecting charset-normalizer<4.0,>=2.0
                Downloading charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.7/96.7 kB 5.4 MB/s eta 0:00:00
                Collecting multidict<7.0,>=4.5
                Downloading multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
                Collecting async-timeout<5.0,>=4.0.0a3
                Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
                Collecting yarl<2.0,>=1.0
                Downloading yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.2/60.2 kB ? eta 0:00:00
                Collecting frozenlist>=1.1.1
                Downloading frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
                Collecting aiosignal>=1.1.2
                Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
                Collecting certifi
                Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
                Collecting urllib3>=1.26.11
                Downloading urllib3-2.0.3-py3-none-any.whl (123 kB)
                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.6/123.6 kB 7.6 MB/s eta 0:00:00
                Collecting idna>=2.0
                Using cached idna-3.4-py3-none-any.whl (61 kB)
                Installing collected packages: urllib3, multidict, idna, frozenlist, charset-normalizer, certifi, attrs, async-timeout, yarl, sentry-sdk, aiosignal, aiohttp
                Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 sentry-sdk-1.27.0 urllib3-2.0.3 yarl-1.9.2
                [notice] A new release of pip available: 22.3 -> 23.1.2
                [notice] To update, run: python.exe -m pip install --upgrade pip
                (.venv) D:\.venv>python
                Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
                Type "help", "copyright", "credits" or "license" for more information.
                >>> import sentry_sdk
                >>> sentry_sdk.init(debug=True)
                [sentry] DEBUG: Setting up integrations (with default = True)
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.django.DjangoIntegration: Django not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.flask.FlaskIntegration: Flask is not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.starlette.StarletteIntegration: Starlette is not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.fastapi.FastApiIntegration: Starlette is not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.bottle.BottleIntegration: Bottle not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.falcon.FalconIntegration: Falcon not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sanic.SanicIntegration: Sanic not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.celery.CeleryIntegration: Celery not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.rq.RqIntegration: RQ not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.tornado.TornadoIntegration: Tornado not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.sqlalchemy.SqlalchemyIntegration: SQLAlchemy not installed.
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.pyramid.PyramidIntegration: Pyramid not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.boto3.Boto3Integration: botocore is not installed
                [sentry] DEBUG: Did not import default integration sentry_sdk.integrations.httpx.HttpxIntegration: httpx is not installed
                [sentry] DEBUG: Setting up previously not enabled integration logging
                [sentry] DEBUG: Setting up previously not enabled integration stdlib
                [sentry] DEBUG: Setting up previously not enabled integration excepthook
                [sentry] DEBUG: Setting up previously not enabled integration dedupe
                [sentry] DEBUG: Setting up previously not enabled integration atexit
                [sentry] DEBUG: Setting up previously not enabled integration modules
                [sentry] DEBUG: Setting up previously not enabled integration argv
                [sentry] DEBUG: Setting up previously not enabled integration threading
                [sentry] DEBUG: Setting up previously not enabled integration aiohttp
                [sentry] DEBUG: Setting up previously not enabled integration redis
                [sentry] DEBUG: Did not enable default integration redis: Redis client not installed
                [sentry] DEBUG: Enabling integration logging
                [sentry] DEBUG: Enabling integration stdlib
                [sentry] DEBUG: Enabling integration excepthook
                [sentry] DEBUG: Enabling integration dedupe
                [sentry] DEBUG: Enabling integration atexit
                [sentry] DEBUG: Enabling integration modules
                [sentry] DEBUG: Enabling integration argv
                [sentry] DEBUG: Enabling integration threading
                [sentry] DEBUG: Enabling integration aiohttp
                [sentry] DEBUG: Enabling integration redis
                [sentry] DEBUG: Setting SDK name to 'sentry.python.aiohttp'
                <sentry_sdk.hub._InitGuard object at 0x000001A36AFE1010>
                >>> import aiohttp
                >>> aiohttp.ClientSession(trace_configs=None)
                Traceback (most recent call last):
                File "<stdin>", line 1, in <module>
                File "D:\.venv\Lib\site-packages\sentry_sdk\integrations\aiohttp.py", line 186, in init
                client_trace_configs = list(kwargs.get("trace_configs", ()))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                TypeError: 'NoneType' object is not iterable

                Expected Result

                Passing None for trace_configs when initializing aiohttp.ClientSession should not error.

                Actual Result

                TypeError: 'NoneType' object is not iterable is raised, due to:

                client_trace_configs=list(kwargs.get("trace_configs", ()))
                as part of:
                old_client_session_init=ClientSession.__init__
                definit(*args, **kwargs):
                # type: (Any, Any) -> ClientSession
                hub=Hub.current
                ifhub.get_integration(AioHttpIntegration) isNone:
                returnold_client_session_init(*args, **kwargs)
                client_trace_configs=list(kwargs.get("trace_configs", ()))
                trace_config=create_trace_config()
                client_trace_configs.append(trace_config)
                kwargs["trace_configs"] =client_trace_configs
                returnold_client_session_init(*args, **kwargs)
                ClientSession.__init__=init
                which was added in #1761.

                I originally encountered this through discord.py:

                Traceback (most recent call last):
                File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 706, in startawaitself.login(token)
                File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/client.py", line 560, in login
                data =awaitself.http.static_login(token.strip())
                File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/discord/http.py", line 549, in static_loginself.__session = aiohttp.ClientSession(
                File "/opt/hostedtoolcache/Python/3.10.10/x64/lib/python3.10/site-packages/sentry_sdk/integrations/aiohttp.py", line 186, in init
                client_trace_configs =list(kwargs.get("trace_configs", ()))
                TypeError: 'NoneType' object is not iterable

                https://github.com/Harmon758/Harmonbot/actions/runs/5457981724/jobs/9932576322?pr=5638#step:8:22
                https://github.com/Rapptz/discord.py/blob/c448932fa0a35e347f3e963436df62f575aa740b/discord/http.py#L790-L794

                Metadata

                Metadata

                Assignees

                No one assigned

                  Projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions