Package: src:python-urllib3 Version: 2.3.0-1 Severity: serious Tags: ftbfs trixie sid
Dear maintainer: During a rebuild of all packages in unstable, your package failed to build: -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild /usr/share/dh-python/dhpython/build/__init__.py:30: DeprecationWarning: glob.glob1 is deprecated and will be removed in Python 3.15. Use glob.glob and pass a directory to its root_dir argument instead. for i in sorted(i[7:-3] for i in glob1(dirname(__file__), 'plugin_*.py')): /usr/share/dh-python/dhpython/build/base.py:136: DeprecationWarning: glob.glob1 is deprecated and will be removed in Python 3.15. Use glob.glob and pass a directory to its root_dir argument instead. res = glob1(context['dir'], ftpl) dh_autoreconf_clean -O--buildsystem=pybuild debian/rules override_dh_clean make[1]: Entering directory '/<<PKGBUILDDIR>>' dh_clean find . -type d -name .pytest_cache -exec rm -rf {} + make[1]: Leaving directory '/<<PKGBUILDDIR>>' debian/rules binary [... snipped ...] E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:07 +0000] [45611] [INFO] Running on https://[::1]:36633 (CTRL + C to quit) [2025-03-01 14:08:07 +0000] [45611] [INFO] Running on https://127.0.0.1:36633 (CTRL + C to quit) [2025-03-01 14:08:07 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:07 +0000] [45611] [INFO] Running on https://[::1]:37681 (CTRL + C to quit) [2025-03-01 14:08:07 +0000] [45611] [INFO] Running on https://127.0.0.1:37681 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:36633 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:36633 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://[::1]:37681 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:37681 (CTRL + C to quit) ____ TestHTTPSProxyVerification.test_https_proxy_assert_hostname[127.0.0.1] ____ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbc1a68b0> san_proxy_with_server = (ServerConfig(scheme='https', host='127.0.0.1', port=43557, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs28/ca.pem'), ServerConfig(scheme='https', host='localhost', port=36327, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs28/ca.pem')) def test_https_proxy_assert_hostname( self, san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = san_proxy_with_server destination_url = f"https://{server.host}:{server.port}" with proxy_from_url( proxy.base_url, ca_certs=proxy.ca_certs, proxy_assert_hostname=proxy.host ) as https: > https.request("GET", destination_url) test/with_dummyserver/test_proxy_poolmanager.py:772: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ urllib3/_request_methods.py:135: in request return self.request_encode_url( urllib3/_request_methods.py:182: in request_encode_url return self.urlopen(method, url, **extra_kw) urllib3/poolmanager.py:633: in urlopen return super().urlopen(method, url, redirect=redirect, **kw) urllib3/poolmanager.py:443: in urlopen response = conn.urlopen(method, u.request_uri, **kw) urllib3/connectionpool.py:773: in urlopen self._prepare_proxy(conn) urllib3/connectionpool.py:1042: in _prepare_proxy conn.connect() urllib3/connection.py:741: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( urllib3/connection.py:920: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( urllib3/util/ssl_.py:460: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) urllib3/util/ssl_.py:501: in _ssl_wrap_socket_impl SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ssl_context = <urllib3.contrib.pyopenssl.PyOpenSSLContext object at 0x7f2bb8c89050> @staticmethod def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: """ Raises a ProxySchemeUnsupported if the provided ssl_context can't be used for TLS in TLS. The only requirement is that the ssl_context provides the 'wrap_bio' methods. """ if not hasattr(ssl_context, "wrap_bio"): > raise ProxySchemeUnsupported( "TLS in TLS requires SSLContext.wrap_bio() which isn't " "available on non-native SSLContext" ) E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:10 +0000] [45611] [INFO] Running on https://[::1]:36327 (CTRL + C to quit) [2025-03-01 14:08:10 +0000] [45611] [INFO] Running on https://127.0.0.1:36327 (CTRL + C to quit) [2025-03-01 14:08:10 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:10 +0000] [45611] [INFO] Running on https://127.0.0.1:43557 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:36327 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:36327 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:43557 (CTRL + C to quit) _______ TestHTTPSProxyVerification.test_https_proxy_assert_hostname[::1] _______ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbbfbef90> san_proxy_with_server = (ServerConfig(scheme='https', host='::1', port=34251, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs29/ca.pem'), ServerConfig(scheme='https', host='localhost', port=41995, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs29/ca.pem')) def test_https_proxy_assert_hostname( self, san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = san_proxy_with_server destination_url = f"https://{server.host}:{server.port}" with proxy_from_url( proxy.base_url, ca_certs=proxy.ca_certs, proxy_assert_hostname=proxy.host ) as https: > https.request("GET", destination_url) test/with_dummyserver/test_proxy_poolmanager.py:772: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ urllib3/_request_methods.py:135: in request return self.request_encode_url( urllib3/_request_methods.py:182: in request_encode_url return self.urlopen(method, url, **extra_kw) urllib3/poolmanager.py:633: in urlopen return super().urlopen(method, url, redirect=redirect, **kw) urllib3/poolmanager.py:443: in urlopen response = conn.urlopen(method, u.request_uri, **kw) urllib3/connectionpool.py:773: in urlopen self._prepare_proxy(conn) urllib3/connectionpool.py:1042: in _prepare_proxy conn.connect() urllib3/connection.py:741: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( urllib3/connection.py:920: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( urllib3/util/ssl_.py:460: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) urllib3/util/ssl_.py:501: in _ssl_wrap_socket_impl SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ssl_context = <urllib3.contrib.pyopenssl.PyOpenSSLContext object at 0x7f2bb8bbb1d0> @staticmethod def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: """ Raises a ProxySchemeUnsupported if the provided ssl_context can't be used for TLS in TLS. The only requirement is that the ssl_context provides the 'wrap_bio' methods. """ if not hasattr(ssl_context, "wrap_bio"): > raise ProxySchemeUnsupported( "TLS in TLS requires SSLContext.wrap_bio() which isn't " "available on non-native SSLContext" ) E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:13 +0000] [45611] [INFO] Running on https://[::1]:41995 (CTRL + C to quit) [2025-03-01 14:08:13 +0000] [45611] [INFO] Running on https://127.0.0.1:41995 (CTRL + C to quit) [2025-03-01 14:08:13 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:13 +0000] [45611] [INFO] Running on https://[::1]:34251 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:41995 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:41995 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://[::1]:34251 (CTRL + C to quit) _ TestHTTPSProxyVerification.test_https_proxy_assert_hostname_non_matching[::1] _ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbbcc4d50> san_proxy_with_server = (ServerConfig(scheme='https', host='::1', port=33271, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs32/ca.pem'), ServerConfig(scheme='https', host='localhost', port=36643, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs32/ca.pem')) def test_https_proxy_assert_hostname_non_matching( self, san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = san_proxy_with_server destination_url = f"https://{server.host}:{server.port}" proxy_hostname = "example.com" with proxy_from_url( proxy.base_url, ca_certs=proxy.ca_certs, proxy_assert_hostname=proxy_hostname, ) as https: with pytest.raises(MaxRetryError) as e: https.request("GET", destination_url) proxy_host = self._get_certificate_formatted_proxy_host(proxy.host) msg = f"hostname \\'{proxy_hostname}\\' doesn\\'t match \\'{proxy_host}\\'" > assert msg in str(e) E assert "hostname \\'example.com\\' doesn\\'t match \\'0:0:0:0:0:0:0:1\\'" in '<ExceptionInfo MaxRetryError(\'HTTPSConnectionPool(host=\\\'localhost\\\', port=36643): Max retries exceeded with url...t to proxy\\\', SSLError(CertificateError("hostname \\\'example.com\\\' doesn\\\'t match \\\'::1\\\'"))))\') tblen=10>' E + where '<ExceptionInfo MaxRetryError(\'HTTPSConnectionPool(host=\\\'localhost\\\', port=36643): Max retries exceeded with url...t to proxy\\\', SSLError(CertificateError("hostname \\\'example.com\\\' doesn\\\'t match \\\'::1\\\'"))))\') tblen=10>' = str(<ExceptionInfo MaxRetryError('HTTPSConnectionPool(host=\'localhost\', port=36643): Max retries exceeded with url: / (C...able to connect to proxy\', SSLError(CertificateError("hostname \'example.com\' doesn\'t match \'::1\'"))))') tblen=10>) test/with_dummyserver/test_proxy_poolmanager.py:791: AssertionError ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://[::1]:36643 (CTRL + C to quit) [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://127.0.0.1:36643 (CTRL + C to quit) [2025-03-01 14:08:17 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://[::1]:33271 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:36643 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:36643 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://[::1]:33271 (CTRL + C to quit) ------------------------------ Captured log call ------------------------------- WARNING urllib3.connection:connection.py:986 Certificate did not match expected hostname: example.com. Certificate: {'subject': ((('commonName', None),),), 'subjectAltName': [('IP Address', '::1')]} WARNING urllib3.connectionpool:connectionpool.py:868 Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'CertificateError("hostname 'example.com' doesn't match '::1'")': / WARNING urllib3.connection:connection.py:986 Certificate did not match expected hostname: example.com. Certificate: {'subject': ((('commonName', None),),), 'subjectAltName': [('IP Address', '::1')]} WARNING urllib3.connectionpool:connectionpool.py:868 Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'CertificateError("hostname 'example.com' doesn't match '::1'")': / WARNING urllib3.connection:connection.py:986 Certificate did not match expected hostname: example.com. Certificate: {'subject': ((('commonName', None),),), 'subjectAltName': [('IP Address', '::1')]} WARNING urllib3.connectionpool:connectionpool.py:868 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'CertificateError("hostname 'example.com' doesn't match '::1'")': / WARNING urllib3.connection:connection.py:986 Certificate did not match expected hostname: example.com. Certificate: {'subject': ((('commonName', None),),), 'subjectAltName': [('IP Address', '::1')]} _____________ TestHTTPSProxyVerification.test_https_proxy_ipv4_san _____________ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbca53200> ipv4_san_proxy_with_server = (ServerConfig(scheme='https', host='127.0.0.1', port=43385, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs34/ca.pem'), ServerConfig(scheme='https', host='localhost', port=41353, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs34/ca.pem')) def test_https_proxy_ipv4_san( self, ipv4_san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = ipv4_san_proxy_with_server proxy_url = f"https://{proxy.host}:{proxy.port}" destination_url = f"https://{server.host}:{server.port}" with proxy_from_url(proxy_url, ca_certs=proxy.ca_certs) as https: > r = https.request("GET", destination_url) test/with_dummyserver/test_proxy_poolmanager.py:829: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ urllib3/_request_methods.py:135: in request return self.request_encode_url( urllib3/_request_methods.py:182: in request_encode_url return self.urlopen(method, url, **extra_kw) urllib3/poolmanager.py:633: in urlopen return super().urlopen(method, url, redirect=redirect, **kw) urllib3/poolmanager.py:443: in urlopen response = conn.urlopen(method, u.request_uri, **kw) urllib3/connectionpool.py:773: in urlopen self._prepare_proxy(conn) urllib3/connectionpool.py:1042: in _prepare_proxy conn.connect() urllib3/connection.py:741: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( urllib3/connection.py:920: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( urllib3/util/ssl_.py:460: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) urllib3/util/ssl_.py:501: in _ssl_wrap_socket_impl SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ssl_context = <urllib3.contrib.pyopenssl.PyOpenSSLContext object at 0x7f2bb8c884d0> @staticmethod def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: """ Raises a ProxySchemeUnsupported if the provided ssl_context can't be used for TLS in TLS. The only requirement is that the ssl_context provides the 'wrap_bio' methods. """ if not hasattr(ssl_context, "wrap_bio"): > raise ProxySchemeUnsupported( "TLS in TLS requires SSLContext.wrap_bio() which isn't " "available on non-native SSLContext" ) E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://[::1]:41353 (CTRL + C to quit) [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://127.0.0.1:41353 (CTRL + C to quit) [2025-03-01 14:08:17 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:17 +0000] [45611] [INFO] Running on https://127.0.0.1:43385 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:41353 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:41353 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:43385 (CTRL + C to quit) _____________ TestHTTPSProxyVerification.test_https_proxy_ipv6_san _____________ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbca53020> ipv6_san_proxy_with_server = (ServerConfig(scheme='https', host='::1', port=41983, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs35/ca.pem'), ServerConfig(scheme='https', host='localhost', port=33097, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs35/ca.pem')) def test_https_proxy_ipv6_san( self, ipv6_san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = ipv6_san_proxy_with_server proxy_url = f"https://[{proxy.host}]:{proxy.port}" destination_url = f"https://{server.host}:{server.port}" with proxy_from_url(proxy_url, ca_certs=proxy.ca_certs) as https: > r = https.request("GET", destination_url) test/with_dummyserver/test_proxy_poolmanager.py:839: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ urllib3/_request_methods.py:135: in request return self.request_encode_url( urllib3/_request_methods.py:182: in request_encode_url return self.urlopen(method, url, **extra_kw) urllib3/poolmanager.py:633: in urlopen return super().urlopen(method, url, redirect=redirect, **kw) urllib3/poolmanager.py:443: in urlopen response = conn.urlopen(method, u.request_uri, **kw) urllib3/connectionpool.py:773: in urlopen self._prepare_proxy(conn) urllib3/connectionpool.py:1042: in _prepare_proxy conn.connect() urllib3/connection.py:741: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( urllib3/connection.py:920: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( urllib3/util/ssl_.py:460: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) urllib3/util/ssl_.py:501: in _ssl_wrap_socket_impl SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ssl_context = <urllib3.contrib.pyopenssl.PyOpenSSLContext object at 0x7f2bba0428d0> @staticmethod def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: """ Raises a ProxySchemeUnsupported if the provided ssl_context can't be used for TLS in TLS. The only requirement is that the ssl_context provides the 'wrap_bio' methods. """ if not hasattr(ssl_context, "wrap_bio"): > raise ProxySchemeUnsupported( "TLS in TLS requires SSLContext.wrap_bio() which isn't " "available on non-native SSLContext" ) E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:20 +0000] [45611] [INFO] Running on https://[::1]:33097 (CTRL + C to quit) [2025-03-01 14:08:20 +0000] [45611] [INFO] Running on https://127.0.0.1:33097 (CTRL + C to quit) [2025-03-01 14:08:20 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:20 +0000] [45611] [INFO] Running on https://[::1]:41983 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:33097 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:33097 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://[::1]:41983 (CTRL + C to quit) _ TestHTTPSProxyVerification.test_https_proxy_no_san_hostname_checks_common_name _ self = <test.with_dummyserver.test_proxy_poolmanager.TestHTTPSProxyVerification object at 0x7f2bbbe6f5f0> no_san_proxy_with_server = (ServerConfig(scheme='https', host='localhost', port=42679, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs38/ca.pem'), ServerConfig(scheme='https', host='localhost', port=39083, ca_certs='/tmp/pytest-of-buildd/pytest-0/certs38/ca.pem')) def test_https_proxy_no_san_hostname_checks_common_name( self, no_san_proxy_with_server: tuple[ServerConfig, ServerConfig] ) -> None: proxy, server = no_san_proxy_with_server proxy_url = f"https://{proxy.host}:{proxy.port}" destination_url = f"https://{server.host}:{server.port}" proxy_ctx = urllib3.util.ssl_.create_urllib3_context() try: proxy_ctx.hostname_checks_common_name = True # PyPy doesn't like us setting 'hostname_checks_common_name' # but also has it enabled by default so we need to handle that. except AttributeError: pass if getattr(proxy_ctx, "hostname_checks_common_name", False) is not True: pytest.skip("Test requires 'SSLContext.hostname_checks_common_name=True'") with proxy_from_url( proxy_url, ca_certs=proxy.ca_certs, proxy_ssl_context=proxy_ctx ) as https: > https.request("GET", destination_url) test/with_dummyserver/test_proxy_poolmanager.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ urllib3/_request_methods.py:135: in request return self.request_encode_url( urllib3/_request_methods.py:182: in request_encode_url return self.urlopen(method, url, **extra_kw) urllib3/poolmanager.py:633: in urlopen return super().urlopen(method, url, redirect=redirect, **kw) urllib3/poolmanager.py:443: in urlopen response = conn.urlopen(method, u.request_uri, **kw) urllib3/connectionpool.py:773: in urlopen self._prepare_proxy(conn) urllib3/connectionpool.py:1042: in _prepare_proxy conn.connect() urllib3/connection.py:741: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( urllib3/connection.py:920: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( urllib3/util/ssl_.py:460: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) urllib3/util/ssl_.py:501: in _ssl_wrap_socket_impl SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ssl_context = <urllib3.contrib.pyopenssl.PyOpenSSLContext object at 0x7f2bba2f4f50> @staticmethod def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: """ Raises a ProxySchemeUnsupported if the provided ssl_context can't be used for TLS in TLS. The only requirement is that the ssl_context provides the 'wrap_bio' methods. """ if not hasattr(ssl_context, "wrap_bio"): > raise ProxySchemeUnsupported( "TLS in TLS requires SSLContext.wrap_bio() which isn't " "available on non-native SSLContext" ) E urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext urllib3/util/ssltransport.py:44: ProxySchemeUnsupported ---------------------------- Captured stderr setup ----------------------------- [2025-03-01 14:08:24 +0000] [45611] [INFO] Running on https://[::1]:39083 (CTRL + C to quit) [2025-03-01 14:08:24 +0000] [45611] [INFO] Running on https://127.0.0.1:39083 (CTRL + C to quit) [2025-03-01 14:08:24 +0000] [45611] [WARNING] ASGI Framework Lifespan error, continuing without Lifespan support [2025-03-01 14:08:24 +0000] [45611] [INFO] Running on https://[::1]:42679 (CTRL + C to quit) [2025-03-01 14:08:24 +0000] [45611] [INFO] Running on https://127.0.0.1:42679 (CTRL + C to quit) ------------------------------ Captured log setup ------------------------------ INFO hypercorn.error:logging.py:106 Running on https://[::1]:39083 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:39083 (CTRL + C to quit) WARNING hypercorn.error:logging.py:102 ASGI Framework Lifespan error, continuing without Lifespan support INFO hypercorn.error:logging.py:106 Running on https://[::1]:42679 (CTRL + C to quit) INFO hypercorn.error:logging.py:106 Running on https://127.0.0.1:42679 (CTRL + C to quit) =============================== warnings summary =============================== test/contrib/test_pyopenssl.py: 15 warnings test/with_dummyserver/test_socketlevel.py: 17 warnings /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/test/with_dummyserver/test_socketlevel.py:158: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated context = ssl.SSLContext(ssl_version) test/contrib/test_socks.py: 17 warnings /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/dummyserver/socketserver.py:125: NoIPv6Warning: No IPv6 support. Falling back to IPv4. warnings.warn("No IPv6 support. Falling back to IPv4.", NoIPv6Warning) test/contrib/test_socks.py::TestSOCKSWithTLS::test_basic_request /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/test/contrib/test_socks.py:745: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated context = better_ssl.SSLContext(ssl.PROTOCOL_SSLv23) # type: ignore[misc] test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs0] test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs1] test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs2] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/urllib3/util/ssl_.py:291: DeprecationWarning: ssl.TLSVersion.TLSv1 is deprecated context.minimum_version = ssl_minimum_version test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs0] test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs1] test/test_ssl.py::TestSSL::test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error[kwargs2] /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/urllib3/util/ssl_.py:296: DeprecationWarning: ssl.TLSVersion.TLSv1 is deprecated context.maximum_version = ssl_maximum_version test/with_dummyserver/test_connectionpool.py::TestConnectionPool::test_source_address /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build/test/with_dummyserver/test_connectionpool.py:814: NoIPv6Warning: No IPv6 support: skipping. warnings.warn("No IPv6 support: skipping.", NoIPv6Warning) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_proxy - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bba09f820>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_is_verified_https_proxy_to_http_target - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bb9f17130>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_http_and_https_kwarg_ca_cert_data_proxy - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bb9f170d0>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_proxy_with_proxy_ssl_context - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bba09dc60>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_proxy_pyopenssl_not_supported - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bba09ecb0>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_proxy_forwarding_for_https - assert 500 == 200 + where 500 = <urllib3.response.HTTPResponse object at 0x7f2bba09da50>.status FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_headers - json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPProxyManager::test_https_headers_forwarding_for_https - json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_assert_fingerprint_md5 - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_assert_hostname[localhost] - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_assert_hostname[127.0.0.1] - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_assert_hostname[::1] - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_assert_hostname_non_matching[::1] - assert "hostname \\'example.com\\' doesn\\'t match \\'0:0:0:0:0:0:0:1\\'" in '<ExceptionInfo MaxRetryError(\'HTTPSConnectionPool(host=\\\'localhost\\\', port=36643): Max retries exceeded with url...t to proxy\\\', SSLError(CertificateError("hostname \\\'example.com\\\' doesn\\\'t match \\\'::1\\\'"))))\') tblen=10>' + where '<ExceptionInfo MaxRetryError(\'HTTPSConnectionPool(host=\\\'localhost\\\', port=36643): Max retries exceeded with url...t to proxy\\\', SSLError(CertificateError("hostname \\\'example.com\\\' doesn\\\'t match \\\'::1\\\'"))))\') tblen=10>' = str(<ExceptionInfo MaxRetryError('HTTPSConnectionPool(host=\'localhost\', port=36643): Max retries exceeded with url: / (C...able to connect to proxy\', SSLError(CertificateError("hostname \'example.com\' doesn\'t match \'::1\'"))))') tblen=10>) FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_ipv4_san - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_ipv6_san - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext FAILED test/with_dummyserver/test_proxy_poolmanager.py::TestHTTPSProxyVerification::test_https_proxy_no_san_hostname_checks_common_name - urllib3.exceptions.ProxySchemeUnsupported: TLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContext = 16 failed, 1808 passed, 279 skipped, 41 deselected, 4 xfailed, 57 warnings in 68.12s (0:01:08) = E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_urllib3/build; python3.13 -m pytest -k "not requires_network and not test_recent_date" dh_auto_test: error: pybuild --test -i python{version} -p 3.13 returned exit code 13 make[1]: *** [debian/rules:24: override_dh_auto_test] Error 25 make[1]: Leaving directory '/<<PKGBUILDDIR>>' make: *** [debian/rules:17: binary] Error 2 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- The above is just how the build ends and not necessarily the most relevant part. If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202503/ About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages. If you could not reproduce the bug please contact me privately, as I am willing to provide ssh access to a virtual machine where the bug is fully reproducible. If this is really a bug in one of the build-depends, please use reassign and add an affects on src:python-urllib3, so that this is still visible in the BTS web page for this package. Thanks.