Skip to content

Build failure: python313Packages.aiohttp #512389

@h0nIg

Description

@h0nIg

Nixpkgs version

  • Unstable (26.05)

Steps to reproduce

building locally from staging branch

Can Hydra reproduce this build failure?

Hydra doesn’t try to build the package.

Link to Hydra build job

No response

Relevant log output

error: Cannot build '/nix/store/1f883a7zbngdx76xbh21brz2jr64l1mi-python3.13-aiohttp-3.13.5.drv'.
       Reason: builder failed with exit code 1.
       Output paths:
         /nix/store/4hgyasqpnizx4fqgi9jz2ygg7yylz7hl-python3.13-aiohttp-3.13.5
         /nix/store/rgcrhfpgxlqndbnmccgc4cqypvhxh676-python3.13-aiohttp-3.13.5-dist
       Last 1000 log lines:

       > [gw2] [ 99%] PASSED tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"-%a %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"]
       > tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%a "%{Referrer}i" %s-%a "%{Referrer}i" %s]
       > [gw3] [ 99%] PASSED tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%a "%{Referrer}i" %s-%a "%{Referrer}i" %s]
       > tests/test_worker.py::test__get_valid_log_format_exc[AsyncioWorker-pyloop]
       > [gw0] [ 99%] PASSED tests/test_worker.py::test__get_valid_log_format_exc[AsyncioWorker-pyloop]
       > tests/test_worker.py::test__run_exc[AsyncioWorker-pyloop]
       > tests/test_worker.py::test__run_ok_parent_changed[AsyncioWorker-pyloop]
       > [gw1] [ 99%] PASSED tests/test_worker.py::test__run_ok_parent_changed[AsyncioWorker-pyloop]
       > tests/test_worker.py::test__create_ssl_context_without_certs_and_ciphers[AsyncioWorker-pyloop]
       > [gw3] [ 99%] PASSED tests/test_worker.py::test__create_ssl_context_without_certs_and_ciphers[AsyncioWorker-pyloop]
       > tests/test_worker.py::test__create_ssl_context_with_ciphers[AsyncioWorker-pyloop]
       > [gw2] [ 99%] PASSED tests/test_worker.py::test__run_exc[AsyncioWorker-pyloop]
       > [gw0] [ 99%] PASSED tests/test_worker.py::test__create_ssl_context_with_ciphers[AsyncioWorker-pyloop]
       > tests/test_worker.py::test__create_ssl_context_with_ca_certs[AsyncioWorker-pyloop]
       > [gw2] [100%] PASSED tests/test_worker.py::test__create_ssl_context_with_ca_certs[AsyncioWorker-pyloop]
       >
       > =================================== FAILURES ===================================
       > _ test_parse_set_cookie_headers_uses_unquote_with_octal[name="\\012newline\\012"-name-\nnewline\n-"\\012newline\\012"] _
       > [gw3] linux -- Python 3.13.13 /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/bin/python3.13
       >
       > header = 'name="\\012newline\\012"', expected_name = 'name'
       > expected_value = '\nnewline\n', expected_coded = '"\\012newline\\012"'
       >
       >     @pytest.mark.parametrize(
       >         ("header", "expected_name", "expected_value", "expected_coded"),
       >         [
       >             # Test cookie values with octal escape sequences
       >             (r'name="\012newline\012"', "name", "\nnewline\n", r'"\012newline\012"'),
       >             (
       >                 r'tab="\011separated\011values"',
       >                 "tab",
       >                 "\tseparated\tvalues",
       >                 r'"\011separated\011values"',
       >             ),
       >             (
       >                 r'mixed="hello\040world\041"',
       >                 "mixed",
       >                 "hello world!",
       >                 r'"hello\040world\041"',
       >             ),
       >             (
       >                 r'complex="\042quoted\042 text with \012 newline"',
       >                 "complex",
       >                 '"quoted" text with \n newline',
       >                 r'"\042quoted\042 text with \012 newline"',
       >             ),
       >         ],
       >     )
       >     def test_parse_set_cookie_headers_uses_unquote_with_octal(
       >         header: str, expected_name: str, expected_value: str, expected_coded: str
       >     ) -> None:
       >         """Test that parse_set_cookie_headers correctly unquotes values with octal sequences and preserves coded_value."""
       > >       result = parse_set_cookie_headers([header])
       >                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >
       > expected_coded = '"\\012newline\\012"'
       > expected_name = 'name'
       > expected_value = '\nnewline\n'
       > header     = 'name="\\012newline\\012"'
       >
       > tests/test_cookie_helpers.py:1124:
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       > /nix/store/4hgyasqpnizx4fqgi9jz2ygg7yylz7hl-python3.13-aiohttp-3.13.5/lib/python3.13/site-packages/aiohttp/_cookie_helpers.py:329: in parse_set_cookie_headers
       >     current_morsel.__setstate__(  # type: ignore[attr-defined]
       >         current_morsel = <Morsel: None=None>
       >         header     = 'name="\\012newline\\012"'
       >         headers    = ['name="\\012newline\\012"']
       >         i          = 22
       >         key        = 'name'
       >         lower_key  = 'name'
       >         match      = <re.Match object; span=(0, 22), match='name="\\012newline\\012"'>
       >         morsel_seen = False
       >         n          = 22
       >         parsed_cookies = []
       >         value      = '"\\012newline\\012"'
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       >
       > self = <Morsel: None=None>
       > state = {'coded_value': '"\\012newline\\012"', 'key': 'name', 'value': '\nnewline\n'}
       >
       >     def __setstate__(self, state):
       >         key = state['key']
       >         value = state['value']
       >         coded_value = state['coded_value']
       >         if _has_control_character(key, value, coded_value):
       > >           raise CookieError("Control characters are not allowed in cookies "
       >                               f"{key!r} {value!r} {coded_value!r}")
       > E           http.cookies.CookieError: Control characters are not allowed in cookies 'name' '\nnewline\n' '"\\012newline\\012"'
       >
       > coded_value = '"\\012newline\\012"'
       > key        = 'name'
       > self       = <Morsel: None=None>
       > state      = {'coded_value': '"\\012newline\\012"', 'key': 'name', 'value': '\nnewline\n'}
       > value      = '\nnewline\n'
       >
       > /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/lib/python3.13/http/cookies.py:377: CookieError
       > _ test_parse_set_cookie_headers_uses_unquote_with_octal[tab="\\011separated\\011values"-tab-\tseparated\tvalues-"\\011separated\\011values"] _
       > [gw3] linux -- Python 3.13.13 /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/bin/python3.13
       >
       > header = 'tab="\\011separated\\011values"', expected_name = 'tab'
       > expected_value = '\tseparated\tvalues'
       > expected_coded = '"\\011separated\\011values"'
       >
       >     @pytest.mark.parametrize(
       >         ("header", "expected_name", "expected_value", "expected_coded"),
       >         [
       >             # Test cookie values with octal escape sequences
       >             (r'name="\012newline\012"', "name", "\nnewline\n", r'"\012newline\012"'),
       >             (
       >                 r'tab="\011separated\011values"',
       >                 "tab",
       >                 "\tseparated\tvalues",
       >                 r'"\011separated\011values"',
       >             ),
       >             (
       >                 r'mixed="hello\040world\041"',
       >                 "mixed",
       >                 "hello world!",
       >                 r'"hello\040world\041"',
       >             ),
       >             (
       >                 r'complex="\042quoted\042 text with \012 newline"',
       >                 "complex",
       >                 '"quoted" text with \n newline',
       >                 r'"\042quoted\042 text with \012 newline"',
       >             ),
       >         ],
       >     )
       >     def test_parse_set_cookie_headers_uses_unquote_with_octal(
       >         header: str, expected_name: str, expected_value: str, expected_coded: str
       >     ) -> None:
       >         """Test that parse_set_cookie_headers correctly unquotes values with octal sequences and preserves coded_value."""
       > >       result = parse_set_cookie_headers([header])
       >                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >
       > expected_coded = '"\\011separated\\011values"'
       > expected_name = 'tab'
       > expected_value = '\tseparated\tvalues'
       > header     = 'tab="\\011separated\\011values"'
       >
       > tests/test_cookie_helpers.py:1124:
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       > /nix/store/4hgyasqpnizx4fqgi9jz2ygg7yylz7hl-python3.13-aiohttp-3.13.5/lib/python3.13/site-packages/aiohttp/_cookie_helpers.py:329: in parse_set_cookie_headers
       >     current_morsel.__setstate__(  # type: ignore[attr-defined]
       >         current_morsel = <Morsel: None=None>
       >         header     = 'tab="\\011separated\\011values"'
       >         headers    = ['tab="\\011separated\\011values"']
       >         i          = 29
       >         key        = 'tab'
       >         lower_key  = 'tab'
       >         match      = <re.Match object; span=(0, 29), match='tab="\\011separated\\011values"'>
       >         morsel_seen = False
       >         n          = 29
       >         parsed_cookies = []
       >         value      = '"\\011separated\\011values"'
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       >
       > self = <Morsel: None=None>
       > state = {'coded_value': '"\\011separated\\011values"', 'key': 'tab', 'value': '\tseparated\tvalues'}
       >
       >     def __setstate__(self, state):
       >         key = state['key']
       >         value = state['value']
       >         coded_value = state['coded_value']
       >         if _has_control_character(key, value, coded_value):
       > >           raise CookieError("Control characters are not allowed in cookies "
       >                               f"{key!r} {value!r} {coded_value!r}")
       > E           http.cookies.CookieError: Control characters are not allowed in cookies 'tab' '\tseparated\tvalues' '"\\011separated\\011values"'
       >
       > coded_value = '"\\011separated\\011values"'
       > key        = 'tab'
       > self       = <Morsel: None=None>
       > state      = {'coded_value': '"\\011separated\\011values"', 'key': 'tab', 'value': '\tseparated\tvalues'}
       > value      = '\tseparated\tvalues'
       >
       > /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/lib/python3.13/http/cookies.py:377: CookieError
       > _ test_parse_set_cookie_headers_uses_unquote_with_octal[complex="\\042quoted\\042 text with \\012 newline"-complex-"quoted" text with \n newline-"\\042quoted\\042 text with \\012 newline"] _
       > [gw3] linux -- Python 3.13.13 /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/bin/python3.13
       >
       > header = 'complex="\\042quoted\\042 text with \\012 newline"'
       > expected_name = 'complex', expected_value = '"quoted" text with \n newline'
       > expected_coded = '"\\042quoted\\042 text with \\012 newline"'
       >
       >     @pytest.mark.parametrize(
       >         ("header", "expected_name", "expected_value", "expected_coded"),
       >         [
       >             # Test cookie values with octal escape sequences
       >             (r'name="\012newline\012"', "name", "\nnewline\n", r'"\012newline\012"'),
       >             (
       >                 r'tab="\011separated\011values"',
       >                 "tab",
       >                 "\tseparated\tvalues",
       >                 r'"\011separated\011values"',
       >             ),
       >             (
       >                 r'mixed="hello\040world\041"',
       >                 "mixed",
       >                 "hello world!",
       >                 r'"hello\040world\041"',
       >             ),
       >             (
       >                 r'complex="\042quoted\042 text with \012 newline"',
       >                 "complex",
       >                 '"quoted" text with \n newline',
       >                 r'"\042quoted\042 text with \012 newline"',
       >             ),
       >         ],
       >     )
       >     def test_parse_set_cookie_headers_uses_unquote_with_octal(
       >         header: str, expected_name: str, expected_value: str, expected_coded: str
       >     ) -> None:
       >         """Test that parse_set_cookie_headers correctly unquotes values with octal sequences and preserves coded_value."""
       > >       result = parse_set_cookie_headers([header])
       >                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >
       > expected_coded = '"\\042quoted\\042 text with \\012 newline"'
       > expected_name = 'complex'
       > expected_value = '"quoted" text with \n newline'
       > header     = 'complex="\\042quoted\\042 text with \\012 newline"'
       >
       > tests/test_cookie_helpers.py:1124:
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       > /nix/store/4hgyasqpnizx4fqgi9jz2ygg7yylz7hl-python3.13-aiohttp-3.13.5/lib/python3.13/site-packages/aiohttp/_cookie_helpers.py:329: in parse_set_cookie_headers
       >     current_morsel.__setstate__(  # type: ignore[attr-defined]
       >         current_morsel = <Morsel: None=None>
       >         header     = 'complex="\\042quoted\\042 text with \\012 newline"'
       >         headers    = ['complex="\\042quoted\\042 text with \\012 newline"']
       >         i          = 47
       >         key        = 'complex'
       >         lower_key  = 'complex'
       >         match      = <re.Match object; span=(0, 47), match='complex="\\042quoted\\042 text with \\012 newline>
       >         morsel_seen = False
       >         n          = 47
       >         parsed_cookies = []
       >         value      = '"\\042quoted\\042 text with \\012 newline"'
       > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
       >
       > self = <Morsel: None=None>
       > state = {'coded_value': '"\\042quoted\\042 text with \\012 newline"', 'key': 'complex', 'value': '"quoted" text with \n newline'}
       >
       >     def __setstate__(self, state):
       >         key = state['key']
       >         value = state['value']
       >         coded_value = state['coded_value']
       >         if _has_control_character(key, value, coded_value):
       > >           raise CookieError("Control characters are not allowed in cookies "
       >                               f"{key!r} {value!r} {coded_value!r}")
       > E           http.cookies.CookieError: Control characters are not allowed in cookies 'complex' '"quoted" text with \n newline' '"\\042quoted\\042 text with \\012 newline"'
       >
       > coded_value = '"\\042quoted\\042 text with \\012 newline"'
       > key        = 'complex'
       > self       = <Morsel: None=None>
       > state      = {'coded_value': '"\\042quoted\\042 text with \\012 newline"', 'key': 'complex', 'value': '"quoted" text with \n newline'}
       > value      = '"quoted" text with \n newline'
       >
       > /nix/store/wb047aczsfjjcknxardf9b0b32zdmkys-python3-3.13.13/lib/python3.13/http/cookies.py:377: CookieError
       > ============================= slowest 10 durations =============================
       > 9.51s call     tests/test_run_app.py::TestShutdown::test_shutdown_new_conn_rejected
       > 4.01s call     tests/test_run_app.py::TestShutdown::test_shutdown_pending_handler_responds
       > 2.51s call     tests/test_run_app.py::TestShutdown::test_shutdown_wait_for_handler
       > 2.41s call     tests/test_run_app.py::TestShutdown::test_shutdown_handler_cancellation_suppressed
       > 2.32s call     tests/test_client_functional.py::test_payload_decompress_size_limit_brotli[pyloop]
       > 2.01s call     tests/test_client_functional.py::test_read_timeout_between_chunks[pyloop]
       > 2.01s call     tests/test_client_functional.py::test_set_cookies_max_age[pyloop]
       > 1.61s call     tests/test_run_app.py::TestShutdown::test_shutdown_timeout_handler
       > 1.51s call     tests/test_run_app.py::TestShutdown::test_shutdown_timeout_not_reached
       > 1.34s call     tests/test_pytest_plugin.py::test_aiohttp_plugin
       > =========================== short test summary info ============================
       > SKIPPED [1] tests/autobahn/test_autobahn.py:13: could not import 'python_on_whales': No module named 'python_on_whales'
       > SKIPPED [1] tests/test_client_session.py:377: This test is for Python < 3.11 runtime warning behavior
       > SKIPPED [1] tests/test_client_session.py:1144: The check is applied in DEBUG mode only
       > SKIPPED [1] tests/test_connector.py:3786: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_connector.py:3794: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_connector.py:3805: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_connector.py:4005: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_cookie_helpers.py:433: Partitioned cookies support requires Python 3.14+
       > SKIPPED [1] tests/test_cookie_helpers.py:492: Partitioned cookies support requires Python 3.14+
       > SKIPPED [1] tests/test_cookie_helpers.py:532: Partitioned cookies support requires Python 3.14+
       > SKIPPED [1] tests/test_connector.py:2081: This test is for Python < 3.11 runtime warning behavior
       > SKIPPED [1] tests/test_connector.py:2164: Test for Python < 3.11
       > SKIPPED [1] tests/test_connector.py:2491: This test is for Python < 3.11 runtime warning behavior
       > SKIPPED [1] tests/test_multipart_helpers.py:99: need more smart parser which respects quoted text
       > SKIPPED [1] tests/test_multipart_helpers.py:446: should raise decoding error: %82 is invalid for latin1
       > SKIPPED [1] tests/test_multipart_helpers.py:455: should raise decoding error: %E4 is invalid for utf-8
       > SKIPPED [1] tests/test_multipart_helpers.py:510: urllib.parse.unquote is tolerate to standalone % chars
       > SKIPPED [1] tests/test_multipart_helpers.py:519: urllib.parse.unquote is tolerate to standalone % chars
       > SKIPPED [1] tests/test_resolver.py:467: aiodns <3.2.0 required
       > SKIPPED [1] tests/test_proxy_functional.py:134: asyncio on this python supports TLS in TLS
       > SKIPPED [1] tests/test_proxy_functional.py:437: we need to reconsider how we test this
       > SKIPPED [1] tests/test_proxy_functional.py:459: we need to reconsider how we test this
       > SKIPPED [1] tests/test_urldispatch.py:1022: aiohttp folder is not placed in user's HOME
       > SKIPPED [1] tests/test_web_app.py:378: The check is applied in DEBUG mode only
       > SKIPPED [1] tests/test_web_runner.py:139: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_web_runner.py:151: Proactor Event loop present only in Windows
       > SKIPPED [1] tests/test_web_response.py:925: No partitioned support
       > XFAIL tests/test_client_functional.py::test_broken_connection[pyloop]
       > XFAIL tests/test_connector.py::test_del_with_scheduled_cleanup[pyloop]
       > XFAIL tests/test_http_parser.py::test_parse_unusual_request_line[c-parser-pyloop] - Regression test for Py parser. May match C behaviour later.
       > XFAIL tests/test_http_parser.py::test_http_request_parser_utf8_request_line[c-parser-pyloop] - Regression test for Py parser. May match C behaviour later.
       > XFAIL tests/test_http_parser.py::test_parse_uri_utf8[c-parser-pyloop] - Not valid HTTP. Maybe update py-parser to reject later.
       > FAILED tests/test_cookie_helpers.py::test_parse_set_cookie_headers_uses_unquote_with_octal[name="\\012newline\\012"-name-\nnewline\n-"\\012newline\\012"] - http.cookies.CookieError: Control characters are not allowed in cookies 'na...
       > FAILED tests/test_cookie_helpers.py::test_parse_set_cookie_headers_uses_unquote_with_octal[tab="\\011separated\\011values"-tab-\tseparated\tvalues-"\\011separated\\011values"] - http.cookies.CookieError: Control characters are not allowed in cookies 'ta...
       > FAILED tests/test_cookie_helpers.py::test_parse_set_cookie_headers_uses_unquote_with_octal[complex="\\042quoted\\042 text with \\012 newline"-complex-"quoted" text with \n newline-"\\042quoted\\042 text with \\012 newline"] - http.cookies.CookieError: Control characters are not allowed in cookies 'co...
       > = 3 failed, 4394 passed, 27 skipped, 5 xfailed, 2 subtests passed in 132.18s (0:02:12) =
       For full logs, run:
         nix log /nix/store/1f883a7zbngdx76xbh21brz2jr64l1mi-python3.13-aiohttp-3.13.5.drv

Additional context

No response

System metadata

  • system: "x86_64-linux"
  • host os: Linux 5.15.167.4-microsoft-standard-WSL2
  • multi-user?: no
  • sandbox: yes
  • version: nix-env (Nix) 2.32.6
  • nixpkgs: not found

Notify maintainers

@dotlambda


Note for maintainers: Please tag this issue in your pull request description. (i.e. Resolves #ISSUE.)

I assert that this issue is relevant for Nixpkgs

Is this issue important to you?

Add a 👍 reaction to issues you find important.

Metadata

Metadata

Assignees

No one assigned

    Labels

    0.kind: build failureA package fails to build2.status: wait-for-upstreamWaiting for upstream fix (or their other action).6.topic: pythonPython is a high-level, general-purpose programming language.
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions