Source: requests Version: 2.32.3+dfsg-5 Severity: minor Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-shuffle
Hi, GNU Make now has a --shuffle option that simulates non-deterministic ordering of target prerequisites. See https://trofi.github.io/posts/238-new-make-shuffle-mode.html and also previous work in Debian by Santiago Vila: https://people.debian.org/~sanvila/make-shuffle/ This package fails to build with make --shuffle=reverse. This is likely to be caused by a missing dependency in debian/rules or an upstream Makefile. More information about this mass bug filing is available at https://wiki.debian.org/qa.debian.org/FTBFS/Shuffle Relevant part (hopefully): > make[1]: Entering directory > '/build/reproducible-path/requests-2.32.3+dfsg/tests/certs/valid/server' > make[1]: Nothing to be done for 'all'. > Makefile:16: update target 'clean' due to: target is .PHONY > rm -f server.* > make[1]: Leaving directory > '/build/reproducible-path/requests-2.32.3+dfsg/tests/certs/valid/server' > I: pybuild base:311: cd > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build; > python3.13 -m pytest tests -k "not test_use_proxy_from_environment and not > TestGetEnvironProxies and not test_mixed_case_scheme_acceptable and not > test_HTTP_200_OK_GET_ALTERNATIVE and not test_unicode_get and not > test_HTTP_302_ALLOW_REDIRECT_GET and not test_HTTP_307_ALLOW_REDIRECT_POST > and not test_HTTP_307_ALLOW_REDIRECT_POST_WITH_SEEKABLE and not > test_HTTP_302_TOO_MANY_REDIRECTS and not > test_HTTP_302_TOO_MANY_REDIRECTS_WITH_PARAMS and not > test_http_301_changes_post_to_get and not > test_http_301_doesnt_change_head_to_get and not > test_http_302_changes_post_to_get and not > test_http_302_doesnt_change_head_to_get and not > test_http_303_changes_post_to_get and not > test_http_303_doesnt_change_head_to_get and not > test_header_and_body_removal_on_redirect and not > test_transfer_enc_removal_on_redirect and not > test_fragment_maintained_on_redirect and not test_HTTP_200_OK_GET_WITH_PARAMS > and not test_HTTP_200_OK_GET_WITH_MIXED_PARAMS and not test_set_cookie_on_301 > and not test_cookie_sent_on_redirect and not test_cookie_removed_on_expire > and not test_cookie_quote_wrapped and not test_cookie_persists_via_api and > not test_request_cookie_overrides_session_cookie and not > test_request_cookies_not_persisted and not test_generic_cookiejar_works and > not test_param_cookiejar_works and not test_cookielib_cookiejar_on_redirect > and not test_requests_in_history_are_not_overridden and not > test_history_is_always_a_list and not test_user_agent_transfers and not > test_HTTP_200_OK_HEAD and not test_HTTP_200_OK_PUT and not > test_BASICAUTH_TUPLE_HTTP_200_OK_GET and not > test_proxy_authorization_preserved_on_request and not > test_basicauth_with_netrc and not test_DIGEST_HTTP_200_OK_GET and not > test_DIGEST_AUTH_RETURNS_COOKIE and not test_DIGEST_AUTH_SETS_SESSION_COOKIES > and not test_DIGEST_STREAM and not test_DIGESTAUTH_WRONG_HTTP_401_GET and not > test_DIGESTAUTH_QUOTES_QOP_VALUE and not test_POSTBIN_GET_POST_FILES and not > test_invalid_files_input and not test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER and > not test_POSTBIN_GET_POST_FILES_WITH_DATA and not > test_post_with_custom_mapping and not test_conflicting_post_params and not > test_request_ok_set and not test_status_raising and not test_decompress_gzip > and not test_unicode_header_name and not test_pyopenssl_redirect and not > test_http_with_certificate and not test_certificate_failure and not > test_urlencoded_get_query_multivalued_param and not > test_different_encodings_dont_break_post and not test_unicode_multipart_post > and not test_unicode_method_name and not > test_unicode_method_name_with_request_object and not test_custom_content_type > and not test_hook_receives_request_arguments and not > test_prepared_request_hook and not test_prepared_from_session and not > test_request_with_bytestring_host and not test_time_elapsed_blank and not > test_request_and_response_are_pickleable and not > test_prepared_request_is_pickleable and not > test_prepared_request_with_file_is_pickleable and not > test_prepared_request_with_hook_is_pickleable and not test_session_pickling > and not test_fixes_1329 and not test_uppercase_scheme_redirect and not > test_header_remove_is_case_insensitive and not > test_params_are_merged_case_sensitive and not test_header_validation and not > test_auth_is_stripped_on_http_downgrade and not > test_auth_is_retained_for_redirect_on_host and not > test_manual_redirect_with_partial_body_read and not > test_redirect_with_wrong_gzipped_header and not > test_requests_history_is_saved and not > test_json_param_post_content_type_works and not test_response_iter_lines and > not test_response_context_manager and not > test_unconsumed_session_response_closes_connection and not > test_response_json_when_content_is_None and not test_custom_redirect_mixin > and not test_stream_timeout and not test_none_timeout and not > test_read_timeout and not test_connect_timeout and not > test_total_timeout_connect and not test_encoded_methods and not > test_proxy_env_vars_override_default and not test_urllib3_retries and not > test_redirecting_to_bad_url and not test_json_decode_compatibility and not > test_set_environ and not test_json_decode_persists_doc_attr and not > test_header_with_subclass_types and not test_urllib3_pool_connection_closed" > ============================= test session starts > ============================== > platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 > rootdir: > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build > configfile: pyproject.toml > plugins: httpbin-2.1.0, typeguard-4.4.2, mock-3.14.0 > collected 606 items / 167 deselected / 439 selected > > tests/test_adapters.py . [ > 0%] > tests/test_help.py ... [ > 0%] > tests/test_hooks.py ... [ > 1%] > tests/test_lowlevel.py ........... [ > 4%] > tests/test_packages.py ... [ > 4%] > tests/test_requests.py ................................................. [ > 15%] > .......s................................................................ [ > 32%] > ........................................................................ [ > 48%] > ..........FFFF. [ > 52%] > tests/test_structures.py .................... [ > 56%] > tests/test_testserver.py ......s.... [ > 59%] > tests/test_utils.py ..s................................................. [ > 71%] > ........................................................................ [ > 87%] > ...........................................ssssssssssss > [100%] > > =================================== FAILURES > =================================== > _ > TestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_True > _ > > self = <tests.test_requests.TestPreparingURLs object at 0x7f388c582710> > > def test_different_connection_pool_for_tls_settings_verify_True(self): > def response_handler(sock): > consume_socket_content(sock, timeout=0.5) > sock.send( > b"HTTP/1.1 200 OK\r\n" > b"Content-Length: 18\r\n\r\n" > b'\xff\xfe{\x00"\x00K0"\x00=\x00"\x00\xab0"\x00\r\n' > ) > > s = requests.Session() > close_server = threading.Event() > > server = TLSServer( > handler=response_handler, > wait_to_close_event=close_server, > requests_to_handle=3, > cert_chain="tests/certs/expired/server/server.pem", > keyfile="tests/certs/expired/server/server.key", > ) > > tests/test_requests.py:2845: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <TLSServer(Thread-12, initial)> > > def __init__( > self, > *, > handler=None, > host="localhost", > port=0, > requests_to_handle=1, > wait_to_close_event=None, > cert_chain=None, > keyfile=None, > mutual_tls=False, > cacert=None, > ): > super().__init__( > handler=handler, > host=host, > port=port, > requests_to_handle=requests_to_handle, > wait_to_close_event=wait_to_close_event, > ) > self.cert_chain = cert_chain > self.keyfile = keyfile > self.ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) > > self.ssl_context.load_cert_chain(self.cert_chain, > > keyfile=self.keyfile) > E FileNotFoundError: [Errno 2] No such file or directory > > tests/testserver/server.py:162: FileNotFoundError > _ > TestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_expired_cert > _ > > self = <tests.test_requests.TestPreparingURLs object at 0x7f388c582850> > > def > test_different_connection_pool_for_tls_settings_verify_bundle_expired_cert( > self, > ): > def response_handler(sock): > consume_socket_content(sock, timeout=0.5) > sock.send( > b"HTTP/1.1 200 OK\r\n" > b"Content-Length: 18\r\n\r\n" > b'\xff\xfe{\x00"\x00K0"\x00=\x00"\x00\xab0"\x00\r\n' > ) > > s = requests.Session() > close_server = threading.Event() > > server = TLSServer( > handler=response_handler, > wait_to_close_event=close_server, > requests_to_handle=3, > cert_chain="tests/certs/expired/server/server.pem", > keyfile="tests/certs/expired/server/server.key", > ) > > tests/test_requests.py:2878: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <TLSServer(Thread-13, initial)> > > def __init__( > self, > *, > handler=None, > host="localhost", > port=0, > requests_to_handle=1, > wait_to_close_event=None, > cert_chain=None, > keyfile=None, > mutual_tls=False, > cacert=None, > ): > super().__init__( > handler=handler, > host=host, > port=port, > requests_to_handle=requests_to_handle, > wait_to_close_event=wait_to_close_event, > ) > self.cert_chain = cert_chain > self.keyfile = keyfile > self.ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) > > self.ssl_context.load_cert_chain(self.cert_chain, > > keyfile=self.keyfile) > E FileNotFoundError: [Errno 2] No such file or directory > > tests/testserver/server.py:162: FileNotFoundError > _ > TestPreparingURLs.test_different_connection_pool_for_tls_settings_verify_bundle_unexpired_cert > _ > > self = <tests.test_requests.TestPreparingURLs object at 0x7f388c582a30> > > def > test_different_connection_pool_for_tls_settings_verify_bundle_unexpired_cert( > self, > ): > def response_handler(sock): > consume_socket_content(sock, timeout=0.5) > sock.send( > b"HTTP/1.1 200 OK\r\n" > b"Content-Length: 18\r\n\r\n" > b'\xff\xfe{\x00"\x00K0"\x00=\x00"\x00\xab0"\x00\r\n' > ) > > s = requests.Session() > close_server = threading.Event() > > server = TLSServer( > handler=response_handler, > wait_to_close_event=close_server, > requests_to_handle=3, > cert_chain="tests/certs/valid/server/server.pem", > keyfile="tests/certs/valid/server/server.key", > ) > > tests/test_requests.py:2911: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <TLSServer(Thread-14, initial)> > > def __init__( > self, > *, > handler=None, > host="localhost", > port=0, > requests_to_handle=1, > wait_to_close_event=None, > cert_chain=None, > keyfile=None, > mutual_tls=False, > cacert=None, > ): > super().__init__( > handler=handler, > host=host, > port=port, > requests_to_handle=requests_to_handle, > wait_to_close_event=wait_to_close_event, > ) > self.cert_chain = cert_chain > self.keyfile = keyfile > self.ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) > > self.ssl_context.load_cert_chain(self.cert_chain, > > keyfile=self.keyfile) > E FileNotFoundError: [Errno 2] No such file or directory > > tests/testserver/server.py:162: FileNotFoundError > ______ TestPreparingURLs.test_different_connection_pool_for_mtls_settings > ______ > > self = <tests.test_requests.TestPreparingURLs object at 0x7f388c5827b0> > > def test_different_connection_pool_for_mtls_settings(self): > client_cert = None > > def response_handler(sock): > nonlocal client_cert > client_cert = sock.getpeercert() > consume_socket_content(sock, timeout=0.5) > sock.send( > b"HTTP/1.1 200 OK\r\n" > b"Content-Length: 18\r\n\r\n" > b'\xff\xfe{\x00"\x00K0"\x00=\x00"\x00\xab0"\x00\r\n' > ) > > s = requests.Session() > close_server = threading.Event() > > server = TLSServer( > handler=response_handler, > wait_to_close_event=close_server, > requests_to_handle=2, > cert_chain="tests/certs/expired/server/server.pem", > keyfile="tests/certs/expired/server/server.key", > mutual_tls=True, > cacert="tests/certs/expired/ca/ca.crt", > ) > > tests/test_requests.py:2945: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <TLSServer(Thread-15, initial)> > > def __init__( > self, > *, > handler=None, > host="localhost", > port=0, > requests_to_handle=1, > wait_to_close_event=None, > cert_chain=None, > keyfile=None, > mutual_tls=False, > cacert=None, > ): > super().__init__( > handler=handler, > host=host, > port=port, > requests_to_handle=requests_to_handle, > wait_to_close_event=wait_to_close_event, > ) > self.cert_chain = cert_chain > self.keyfile = keyfile > self.ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) > > self.ssl_context.load_cert_chain(self.cert_chain, > > keyfile=self.keyfile) > E FileNotFoundError: [Errno 2] No such file or directory > > tests/testserver/server.py:162: FileNotFoundError > =============================== warnings summary > =============================== > tests/test_requests.py::TestRequests::test_set_basicauth[42-42] > > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build/requests/auth.py:36: > DeprecationWarning: Non-string usernames will no longer be supported in > Requests 3.0.0. Please convert the object you've passed in (42) to a string > or bytes object in the near future to avoid problems. > warnings.warn( > > tests/test_requests.py::TestRequests::test_set_basicauth[42-42] > > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build/requests/auth.py:46: > DeprecationWarning: Non-string passwords will no longer be supported in > Requests 3.0.0. Please convert the object you've passed in (<class 'int'>) to > a string or bytes object in the near future to avoid problems. > warnings.warn( > > tests/test_requests.py::TestRequests::test_set_basicauth[None-None] > > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build/requests/auth.py:36: > DeprecationWarning: Non-string usernames will no longer be supported in > Requests 3.0.0. Please convert the object you've passed in (None) to a string > or bytes object in the near future to avoid problems. > warnings.warn( > > tests/test_requests.py::TestRequests::test_set_basicauth[None-None] > > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build/requests/auth.py:46: > DeprecationWarning: Non-string passwords will no longer be supported in > Requests 3.0.0. Please convert the object you've passed in (<class > 'NoneType'>) to a string or bytes object in the near future to avoid problems. > warnings.warn( > > tests/test_testserver.py::TestTestServer::test_server_closes > /usr/lib/python3/dist-packages/_pytest/python.py:159: ResourceWarning: > unclosed <socket.socket fd=13, family=2, type=1, proto=0, laddr=('0.0.0.0', > 56392)> > result = testfunction(**testargs) > Enable tracemalloc to get traceback where the object was allocated. > See > https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings > for more info. > > tests/test_testserver.py::TestTestServer::test_basic_waiting_server > /usr/lib/python3/dist-packages/_pytest/python.py:159: ResourceWarning: > unclosed <socket.socket fd=14, family=2, type=1, proto=0, laddr=('127.0.0.1', > 50246)> > result = testfunction(**testargs) > Enable tracemalloc to get traceback where the object was allocated. > See > https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings > for more info. > > tests/test_utils.py::TestContentEncodingDetection::test_none > tests/test_utils.py::TestContentEncodingDetection::test_pragmas[<meta > charset="UTF-8">] > tests/test_utils.py::TestContentEncodingDetection::test_pragmas[<meta > http-equiv="Content-type" content="text/html;charset=UTF-8">] > tests/test_utils.py::TestContentEncodingDetection::test_pragmas[<meta > http-equiv="Content-type" content="text/html;charset=UTF-8" />] > tests/test_utils.py::TestContentEncodingDetection::test_pragmas[<?xml > version="1.0" encoding="UTF-8"?>] > tests/test_utils.py::TestContentEncodingDetection::test_precedence > > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build/requests/utils.py:494: > DeprecationWarning: In requests 3.0, get_encodings_from_content will be > removed. For more information, please see the discussion on issue #2266. > (This warning should only appear once.) > warnings.warn( > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > =========================== short test summary info > ============================ > FAILED > tests/test_requests.py::TestPreparingURLs::test_different_connection_pool_for_tls_settings_verify_True > FAILED > tests/test_requests.py::TestPreparingURLs::test_different_connection_pool_for_tls_settings_verify_bundle_expired_cert > FAILED > tests/test_requests.py::TestPreparingURLs::test_different_connection_pool_for_tls_settings_verify_bundle_unexpired_cert > FAILED > tests/test_requests.py::TestPreparingURLs::test_different_connection_pool_for_mtls_settings > === 4 failed, 420 passed, 15 skipped, 167 deselected, 12 warnings in 26.61s > ==== > E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd > /build/reproducible-path/requests-2.32.3+dfsg/.pybuild/cpython3_3.13_requests/build; > python3.13 -m pytest tests -k "not test_use_proxy_from_environment and not > TestGetEnvironProxies and not test_mixed_case_scheme_acceptable and not > test_HTTP_200_OK_GET_ALTERNATIVE and not test_unicode_get and not > test_HTTP_302_ALLOW_REDIRECT_GET and not test_HTTP_307_ALLOW_REDIRECT_POST > and not test_HTTP_307_ALLOW_REDIRECT_POST_WITH_SEEKABLE and not > test_HTTP_302_TOO_MANY_REDIRECTS and not > test_HTTP_302_TOO_MANY_REDIRECTS_WITH_PARAMS and not > test_http_301_changes_post_to_get and not > test_http_301_doesnt_change_head_to_get and not > test_http_302_changes_post_to_get and not > test_http_302_doesnt_change_head_to_get and not > test_http_303_changes_post_to_get and not > test_http_303_doesnt_change_head_to_get and not > test_header_and_body_removal_on_redirect and not > test_transfer_enc_removal_on_redirect and not > test_fragment_maintained_on_redirect and not test_HTTP_200_OK_GET_WITH_PARAMS > and not test_HTTP_200_OK_GET_WITH_MIXED_PARAMS and not test_set_cookie_on_301 > and not test_cookie_sent_on_redirect and not test_cookie_removed_on_expire > and not test_cookie_quote_wrapped and not test_cookie_persists_via_api and > not test_request_cookie_overrides_session_cookie and not > test_request_cookies_not_persisted and not test_generic_cookiejar_works and > not test_param_cookiejar_works and not test_cookielib_cookiejar_on_redirect > and not test_requests_in_history_are_not_overridden and not > test_history_is_always_a_list and not test_user_agent_transfers and not > test_HTTP_200_OK_HEAD and not test_HTTP_200_OK_PUT and not > test_BASICAUTH_TUPLE_HTTP_200_OK_GET and not > test_proxy_authorization_preserved_on_request and not > test_basicauth_with_netrc and not test_DIGEST_HTTP_200_OK_GET and not > test_DIGEST_AUTH_RETURNS_COOKIE and not test_DIGEST_AUTH_SETS_SESSION_COOKIES > and not test_DIGEST_STREAM and not test_DIGESTAUTH_WRONG_HTTP_401_GET and not > test_DIGESTAUTH_QUOTES_QOP_VALUE and not test_POSTBIN_GET_POST_FILES and not > test_invalid_files_input and not test_POSTBIN_SEEKED_OBJECT_WITH_NO_ITER and > not test_POSTBIN_GET_POST_FILES_WITH_DATA and not > test_post_with_custom_mapping and not test_conflicting_post_params and not > test_request_ok_set and not test_status_raising and not test_decompress_gzip > and not test_unicode_header_name and not test_pyopenssl_redirect and not > test_http_with_certificate and not test_certificate_failure and not > test_urlencoded_get_query_multivalued_param and not > test_different_encodings_dont_break_post and not test_unicode_multipart_post > and not test_unicode_method_name and not > test_unicode_method_name_with_request_object and not test_custom_content_type > and not test_hook_receives_request_arguments and not > test_prepared_request_hook and not test_prepared_from_session and not > test_request_with_bytestring_host and not test_time_elapsed_blank and not > test_request_and_response_are_pickleable and not > test_prepared_request_is_pickleable and not > test_prepared_request_with_file_is_pickleable and not > test_prepared_request_with_hook_is_pickleable and not test_session_pickling > and not test_fixes_1329 and not test_uppercase_scheme_redirect and not > test_header_remove_is_case_insensitive and not > test_params_are_merged_case_sensitive and not test_header_validation and not > test_auth_is_stripped_on_http_downgrade and not > test_auth_is_retained_for_redirect_on_host and not > test_manual_redirect_with_partial_body_read and not > test_redirect_with_wrong_gzipped_header and not > test_requests_history_is_saved and not > test_json_param_post_content_type_works and not test_response_iter_lines and > not test_response_context_manager and not > test_unconsumed_session_response_closes_connection and not > test_response_json_when_content_is_None and not test_custom_redirect_mixin > and not test_stream_timeout and not test_none_timeout and not > test_read_timeout and not test_connect_timeout and not > test_total_timeout_connect and not test_encoded_methods and not > test_proxy_env_vars_override_default and not test_urllib3_retries and not > test_redirecting_to_bad_url and not test_json_decode_compatibility and not > test_set_environ and not test_json_decode_persists_doc_attr and not > test_header_with_subclass_types and not test_urllib3_pool_connection_closed" > dh_auto_test: error: pybuild --test -i python{version} -p 3.13 returned exit > code 13 The full build log is available from: http://qa-logs.debian.net/2025/05/05/shuffle/reverse/requests_2.32.3+dfsg-5_unstable_reverse.log If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects