From e84fb43e20ad4d54f4d9340357767952587afe20 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 11:41:29 -0400 Subject: [PATCH 01/13] PYTHON-5382 - Add a test with min dependencies --- .github/workflows/test-python.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index a2fde83c06..52741836ab 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -220,3 +220,24 @@ jobs: which python pip install -e ".[test]" PYMONGO_MUST_CONNECT=1 pytest -v -k client_context + + test_minimum: + runs-on: ubuntu-latest + name: Test using minimum dependencies and supported Python + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Install uv + uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v5 + with: + python-version: '3.9' + - name: Start MongoDB + uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 + with: + mongodb-version: 6.0 + - name: Run connect test + shell: bash + run: | + uv sync --python=${{ matrix.python-version }} --resolution=lowest-direct + PYMONGO_MUST_CONNECT=1 pytest -v -k client_context From 88c0be9aedc460f552af287f738edf0d62a33703 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 11:44:57 -0400 Subject: [PATCH 02/13] test --- .github/workflows/test-python.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 52741836ab..a1b0736dd0 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -225,13 +225,6 @@ jobs: runs-on: ubuntu-latest name: Test using minimum dependencies and supported Python steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - name: Install uv - uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v5 - with: - python-version: '3.9' - name: Start MongoDB uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 with: From e7a8ce356c30e30fd1d7414df6be1f2c2844b3ad Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 11:46:54 -0400 Subject: [PATCH 03/13] test --- .github/workflows/test-python.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index a1b0736dd0..672fcc6b42 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -225,6 +225,10 @@ jobs: runs-on: ubuntu-latest name: Test using minimum dependencies and supported Python steps: + - name: Install uv + uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v5 + with: + python-version: '3.9' - name: Start MongoDB uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 with: From 2bae8384c52a2d9b4d3b2f7ad2cc1b011dc5f5a5 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 11:59:45 -0400 Subject: [PATCH 04/13] test --- .github/workflows/test-python.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 672fcc6b42..52741836ab 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -225,6 +225,9 @@ jobs: runs-on: ubuntu-latest name: Test using minimum dependencies and supported Python steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false - name: Install uv uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v5 with: From 05d039800e57c1d2120083c228ebf08942558738 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 12:01:39 -0400 Subject: [PATCH 05/13] test --- .github/workflows/test-python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 52741836ab..708c5aeefa 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -239,5 +239,5 @@ jobs: - name: Run connect test shell: bash run: | - uv sync --python=${{ matrix.python-version }} --resolution=lowest-direct + uv sync --python=3.9 --resolution=lowest-direct PYMONGO_MUST_CONNECT=1 pytest -v -k client_context From 0fab8f72d40f629bf2778be4fb8f51d29a96d542 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 12:12:22 -0400 Subject: [PATCH 06/13] test --- .github/workflows/test-python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 708c5aeefa..c3535271a1 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -239,5 +239,5 @@ jobs: - name: Run connect test shell: bash run: | - uv sync --python=3.9 --resolution=lowest-direct + uv pip install --python=3.9 . PYMONGO_MUST_CONNECT=1 pytest -v -k client_context From 1241795bd3439d9faf598c9c410ab59c308c03c4 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 12:18:04 -0400 Subject: [PATCH 07/13] uv sync pulls in other dependencies --- .github/workflows/test-python.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index c3535271a1..5074d30a13 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -239,5 +239,7 @@ jobs: - name: Run connect test shell: bash run: | - uv pip install --python=3.9 . + uv venv + source .venv/bin/activate + uv pip install -e ".[test]" PYMONGO_MUST_CONNECT=1 pytest -v -k client_context From 5c0fab6f625d5f1d7d7c6d462390495c992ffe56 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 26 Jun 2025 15:47:24 -0400 Subject: [PATCH 08/13] Fix uv resolution + use SRV tests --- .github/workflows/test-python.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 5074d30a13..1440ab1108 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -241,5 +241,5 @@ jobs: run: | uv venv source .venv/bin/activate - uv pip install -e ".[test]" - PYMONGO_MUST_CONNECT=1 pytest -v -k client_context + uv pip install -e ".[test]" --resolution=lowest-direct + pytest -v test/test_srv_polling.py From d53eee5bc7b370e6913026b300c41b7b931fbdb9 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 27 Jun 2025 10:03:50 -0400 Subject: [PATCH 09/13] Update test_import_dns_resolver for dnspython 1.X --- test/asynchronous/test_srv_polling.py | 2 +- test/test_srv_polling.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/asynchronous/test_srv_polling.py b/test/asynchronous/test_srv_polling.py index 3ba50e77a8..2e248628da 100644 --- a/test/asynchronous/test_srv_polling.py +++ b/test/asynchronous/test_srv_polling.py @@ -363,7 +363,7 @@ def test_import_dns_resolver(self): # Regression test for PYTHON-4407 import dns.resolver - self.assertTrue(hasattr(dns.resolver, "resolve")) + self.assertTrue(hasattr(dns.resolver, "resolve") or hasattr(dns.resolver, "query")) if __name__ == "__main__": diff --git a/test/test_srv_polling.py b/test/test_srv_polling.py index 971c3bad50..16b076c1d3 100644 --- a/test/test_srv_polling.py +++ b/test/test_srv_polling.py @@ -363,7 +363,7 @@ def test_import_dns_resolver(self): # Regression test for PYTHON-4407 import dns.resolver - self.assertTrue(hasattr(dns.resolver, "resolve")) + self.assertTrue(hasattr(dns.resolver, "resolve") or hasattr(dns.resolver, "query")) if __name__ == "__main__": From 281c72a31301bb15768b2cee263b10ef6ab0f17a Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 27 Jun 2025 10:06:15 -0400 Subject: [PATCH 10/13] Read-only Github permission for workflow --- .github/workflows/test-python.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 1440ab1108..0792838d5a 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -222,6 +222,8 @@ jobs: PYMONGO_MUST_CONNECT=1 pytest -v -k client_context test_minimum: + permissions: + contents: read runs-on: ubuntu-latest name: Test using minimum dependencies and supported Python steps: From 80667e9e05a887fa5d8215eb27c91f1e9841109d Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 27 Jun 2025 11:46:57 -0400 Subject: [PATCH 11/13] Run dns tests too and async --- .github/workflows/test-python.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 0792838d5a..7d2fb3af36 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -238,10 +238,10 @@ jobs: uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 with: mongodb-version: 6.0 - - name: Run connect test + - name: Run tests shell: bash run: | uv venv source .venv/bin/activate uv pip install -e ".[test]" --resolution=lowest-direct - pytest -v test/test_srv_polling.py + pytest -v test/asynchronous/test_srv_polling.py test/asynchronous/test_dns.py test/test_srv_polling.py test/test_dns.py From a078102b6320cb59f47782035f9dc8b9b2c0a138 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 27 Jun 2025 12:02:08 -0400 Subject: [PATCH 12/13] Remove dns test for compat reasons --- .github/workflows/test-python.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 7d2fb3af36..ff3b0f8889 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -238,10 +238,11 @@ jobs: uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 with: mongodb-version: 6.0 + # Async does not support dnspython 1.X, so we don't run test_dns here - name: Run tests shell: bash run: | uv venv source .venv/bin/activate uv pip install -e ".[test]" --resolution=lowest-direct - pytest -v test/asynchronous/test_srv_polling.py test/asynchronous/test_dns.py test/test_srv_polling.py test/test_dns.py + pytest -v test/asynchronous/test_srv_polling.py test/test_srv_polling.py From 7d1075319974a12b9dcea7738e29cb78e9337c31 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 27 Jun 2025 13:54:37 -0400 Subject: [PATCH 13/13] Add test_minimum_for_async --- .github/workflows/test-python.yml | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index ff3b0f8889..32dc4ec7f5 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -238,11 +238,37 @@ jobs: uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 with: mongodb-version: 6.0 - # Async does not support dnspython 1.X, so we don't run test_dns here + # Async and our test_dns do not support dnspython 1.X, so we don't run async or dns tests here - name: Run tests shell: bash run: | uv venv source .venv/bin/activate uv pip install -e ".[test]" --resolution=lowest-direct - pytest -v test/asynchronous/test_srv_polling.py test/test_srv_polling.py + pytest -v test/test_srv_polling.py + + test_minimum_for_async: + permissions: + contents: read + runs-on: ubuntu-latest + name: Test async's minimum dependencies and Python + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Install uv + uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb # v5 + with: + python-version: '3.9' + - name: Start MongoDB + uses: supercharge/mongodb-github-action@90004df786821b6308fb02299e5835d0dae05d0d # 1.12.0 + with: + mongodb-version: 6.0 + # The lifetime kwarg we use in srv resolution was added to the async resolver API in dnspython 2.1.0 + - name: Run tests + shell: bash + run: | + uv venv + source .venv/bin/activate + uv pip install -e ".[test]" --resolution=lowest-direct dnspython==2.1.0 --force-reinstall + pytest -v test/test_srv_polling.py test/test_dns.py test/asynchronous/test_srv_polling.py test/asynchronous/test_dns.py