From 228f8c8cf08882f1b524d362653388e4e3e8f5d0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 13 May 2026 14:26:00 +0000 Subject: [PATCH 1/3] Initial plan From 5f2b06f3f011648876e5d92e39adf9a30f35a82a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 13 May 2026 14:35:03 +0000 Subject: [PATCH 2/3] Fix auth-dependent test setup for CI without DEEPL_AUTH_KEY Agent-Logs-Url: https://github.com/AKB0700/deepl-python/sessions/134f39d6-1635-4a7c-a558-c4ed66e6b556 Co-authored-by: AKB0700 <157992575+AKB0700@users.noreply.github.com> --- .github/workflows/python-package.yml | 5 ++--- tests/conftest.py | 4 ++++ tests/test_cli.py | 2 ++ tests/test_general.py | 22 +++++++++++----------- tests/test_translate_text.py | 2 ++ 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 0afc0fc..8935de1 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -10,7 +10,6 @@ on: jobs: build: - runs-on: ubuntu-latest strategy: fail-fast: false @@ -18,8 +17,6 @@ jobs: python-version: ["3.9", "3.10", "3.11"] steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 @@ -37,5 +34,7 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest + env: + DEEPL_AUTH_KEY: ${{ secrets.DEEPL_AUTH_KEY }} run: | pytest diff --git a/tests/conftest.py b/tests/conftest.py index c5ae388..dda2ae3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -177,6 +177,8 @@ def _make_deepl_client(server, auth_key=None, proxy=None): def translator(server): """Returns a deepl.Translator to use in all tests taking a parameter 'translator'.""" + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") return _make_translator(server) @@ -186,6 +188,8 @@ def translator(server): def deepl_client(server): """Returns a deepl.DeepLClient to use in all tests taking a parameter 'deepl_client'.""" + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") return _make_deepl_client(server) diff --git a/tests/test_cli.py b/tests/test_cli.py index ad19975..704fb2a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -19,6 +19,8 @@ @pytest.fixture def runner(server): + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") env = { "DEEPL_SERVER_URL": server.server_url, "DEEPL_AUTH_KEY": server.auth_key, diff --git a/tests/test_general.py b/tests/test_general.py index cf1afce..dffe8eb 100644 --- a/tests/test_general.py +++ b/tests/test_general.py @@ -15,6 +15,8 @@ import pytest import os +AUTH_KEY = os.getenv("DEEPL_AUTH_KEY") or "test_auth_key" + def test_version(): assert "1.30.0" == deepl.__version__ @@ -141,7 +143,7 @@ def test_server_url_selected_based_on_auth_key(server): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" in ua_header @@ -152,9 +154,7 @@ def test_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_opt_out(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], send_platform_info=False - ) + translator = deepl.Translator(AUTH_KEY, send_platform_info=False) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" not in ua_header @@ -167,7 +167,7 @@ def test_custom_user_agent(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert ua_header == "my custom user agent" @@ -177,9 +177,9 @@ def test_custom_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], - ).set_app_info("sample_python_plugin", "1.0.2") + translator = deepl.Translator(AUTH_KEY).set_app_info( + "sample_python_plugin", "1.0.2" + ) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" in ua_header @@ -192,7 +192,7 @@ def test_user_agent_with_app_info(mock_send): def test_user_agent_opt_out_with_app_info(mock_send): mock_send.return_value = _build_test_response() translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], + AUTH_KEY, send_platform_info=False, ).set_app_info("sample_python_plugin", "1.0.2") translator.translate_text(example_text["EN"], target_lang="DA") @@ -208,7 +208,7 @@ def test_custom_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]).set_app_info( + translator = deepl.Translator(AUTH_KEY).set_app_info( "sample_python_plugin", "1.0.2" ) translator.translate_text(example_text["EN"], target_lang="DA") @@ -222,7 +222,7 @@ def test_custom_user_agent_with_app_info(mock_send): def test_user_agent_exception(platform_mock, mock_send): mock_send.return_value = _build_test_response() platform_mock.side_effect = OSError("mocked test exception") - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "deepl-python" in ua_header diff --git a/tests/test_translate_text.py b/tests/test_translate_text.py index 658e7a5..93d4c0d 100644 --- a/tests/test_translate_text.py +++ b/tests/test_translate_text.py @@ -124,6 +124,8 @@ def test_invalid_language(translator): def test_skip_language_check(server): + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") translator = deepl.Translator( server.auth_key, server_url=server.server_url, skip_language_check=True ) From 47223b8c1e7e5dbae43bc27759f01f9dd9e587fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 13 May 2026 14:36:28 +0000 Subject: [PATCH 3/3] Clarify fallback test auth key naming Agent-Logs-Url: https://github.com/AKB0700/deepl-python/sessions/134f39d6-1635-4a7c-a558-c4ed66e6b556 Co-authored-by: AKB0700 <157992575+AKB0700@users.noreply.github.com> --- tests/test_general.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/test_general.py b/tests/test_general.py index dffe8eb..d8a057c 100644 --- a/tests/test_general.py +++ b/tests/test_general.py @@ -15,7 +15,7 @@ import pytest import os -AUTH_KEY = os.getenv("DEEPL_AUTH_KEY") or "test_auth_key" +TEST_AUTH_KEY = os.getenv("DEEPL_AUTH_KEY") or "test_auth_key" def test_version(): @@ -143,7 +143,7 @@ def test_server_url_selected_based_on_auth_key(server): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator(AUTH_KEY) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" in ua_header @@ -154,7 +154,7 @@ def test_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_opt_out(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator(AUTH_KEY, send_platform_info=False) + translator = deepl.Translator(TEST_AUTH_KEY, send_platform_info=False) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" not in ua_header @@ -167,7 +167,7 @@ def test_custom_user_agent(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(AUTH_KEY) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert ua_header == "my custom user agent" @@ -177,7 +177,7 @@ def test_custom_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator(AUTH_KEY).set_app_info( + translator = deepl.Translator(TEST_AUTH_KEY).set_app_info( "sample_python_plugin", "1.0.2" ) translator.translate_text(example_text["EN"], target_lang="DA") @@ -192,7 +192,7 @@ def test_user_agent_with_app_info(mock_send): def test_user_agent_opt_out_with_app_info(mock_send): mock_send.return_value = _build_test_response() translator = deepl.Translator( - AUTH_KEY, + TEST_AUTH_KEY, send_platform_info=False, ).set_app_info("sample_python_plugin", "1.0.2") translator.translate_text(example_text["EN"], target_lang="DA") @@ -208,7 +208,7 @@ def test_custom_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(AUTH_KEY).set_app_info( + translator = deepl.Translator(TEST_AUTH_KEY).set_app_info( "sample_python_plugin", "1.0.2" ) translator.translate_text(example_text["EN"], target_lang="DA") @@ -222,7 +222,7 @@ def test_custom_user_agent_with_app_info(mock_send): def test_user_agent_exception(platform_mock, mock_send): mock_send.return_value = _build_test_response() platform_mock.side_effect = OSError("mocked test exception") - translator = deepl.Translator(AUTH_KEY) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "deepl-python" in ua_header