From aaa51d1182c0340e350770f6389dad5523592c1e Mon Sep 17 00:00:00 2001 From: Matthew Roeschke Date: Mon, 6 Dec 2021 11:09:00 -0800 Subject: [PATCH 1/2] Use context managers --- pandas/tests/io/test_user_agent.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pandas/tests/io/test_user_agent.py b/pandas/tests/io/test_user_agent.py index cabdbbdb44830..bc91b68a309fa 100644 --- a/pandas/tests/io/test_user_agent.py +++ b/pandas/tests/io/test_user_agent.py @@ -39,11 +39,10 @@ def gzip_bytes(self, response_bytes): """ some web servers will send back gzipped files to save bandwidth """ - bio = BytesIO() - zipper = gzip.GzipFile(fileobj=bio, mode="w") - zipper.write(response_bytes) - zipper.close() - response_bytes = bio.getvalue() + with BytesIO() as bio: + with gzip.GzipFile(fileobj=bio, mode="w") as zipper: + zipper.write(response_bytes) + response_bytes = bio.getvalue() return response_bytes def write_back_bytes(self, response_bytes): From bf869ee4cec119fb0457b10c5cb7997babf9d15b Mon Sep 17 00:00:00 2001 From: Matthew Roeschke Date: Mon, 6 Dec 2021 21:30:07 -0800 Subject: [PATCH 2/2] TST: Avoid blocking calls in test_user_agent.py --- pandas/tests/io/test_user_agent.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/pandas/tests/io/test_user_agent.py b/pandas/tests/io/test_user_agent.py index bc91b68a309fa..1620b446800e0 100644 --- a/pandas/tests/io/test_user_agent.py +++ b/pandas/tests/io/test_user_agent.py @@ -204,7 +204,7 @@ def test_server_and_default_headers(responder, read_method, parquet_engine): # passing 0 for the port will let the system find an unused port with http.server.HTTPServer(("localhost", 0), responder) as server: - server_thread = threading.Thread(target=server.serve_forever) + server_thread = threading.Thread(target=server.handle_request) server_thread.start() port = server.server_port @@ -212,9 +212,8 @@ def test_server_and_default_headers(responder, read_method, parquet_engine): df_http = read_method(f"http://localhost:{port}") else: df_http = read_method(f"http://localhost:{port}", engine=parquet_engine) - server.shutdown() server.server_close() - server_thread.join() + server_thread.join(timeout=2) assert not df_http.empty @@ -248,7 +247,7 @@ def test_server_and_custom_headers(responder, read_method, parquet_engine): # passing 0 for the port will let the system find an unused port with http.server.HTTPServer(("localhost", 0), responder) as server: - server_thread = threading.Thread(target=server.serve_forever) + server_thread = threading.Thread(target=server.handle_request) server_thread.start() port = server.server_port @@ -263,10 +262,8 @@ def test_server_and_custom_headers(responder, read_method, parquet_engine): storage_options={"User-Agent": custom_user_agent}, engine=parquet_engine, ) - server.shutdown() - server.server_close() - server_thread.join() + server_thread.join(timeout=2) tm.assert_frame_equal(df_true, df_http) @@ -287,7 +284,7 @@ def test_server_and_all_custom_headers(responder, read_method): # passing 0 for the port will let the system find an unused port with http.server.HTTPServer(("localhost", 0), responder) as server: - server_thread = threading.Thread(target=server.serve_forever) + server_thread = threading.Thread(target=server.handle_request) server_thread.start() port = server.server_port @@ -295,9 +292,8 @@ def test_server_and_all_custom_headers(responder, read_method): f"http://localhost:{port}", storage_options=storage_options, ) - server.shutdown() server.server_close() - server_thread.join() + server_thread.join(timeout=2) df_http = df_http[df_http["0"].isin(storage_options.keys())] df_http = df_http.sort_values(["0"]).reset_index()