diff --git a/.evergreen/combine-coverage.sh b/.evergreen/combine-coverage.sh index 36266c1842..5f04f72adb 100755 --- a/.evergreen/combine-coverage.sh +++ b/.evergreen/combine-coverage.sh @@ -5,19 +5,12 @@ set -eu -. .evergreen/utils.sh +# Set up the virtual env. +. .evergreen/scripts/setup-dev-env.sh +uv sync --group coverage +source .venv/bin/activate -if [ -z "${PYTHON_BINARY:-}" ]; then - PYTHON_BINARY=$(find_python3) -fi - -createvirtualenv "$PYTHON_BINARY" covenv -# Keep in sync with run-tests.sh -# coverage >=5 is needed for relative_files=true. -pip install -q "coverage[toml]>=5,<=7.5" - -pip list ls -la coverage/ -python -m coverage combine coverage/coverage.* -python -m coverage html -d htmlcov +coverage combine coverage/coverage.* +coverage html -d htmlcov diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index ce95648849..4b53ac6ac8 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -101,8 +101,8 @@ functions: - AUTH - SSL - ORCHESTRATION_FILE - - PYTHON_BINARY - - PYTHON_VERSION + - UV_PYTHON + - TOOLCHAIN_VERSION - STORAGE_ENGINE - REQUIRE_API_VERSION - DRIVERS_TOOLS @@ -134,10 +134,10 @@ functions: - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - COVERAGE - - PYTHON_BINARY + - UV_PYTHON - LIBMONGOCRYPT_URL - MONGODB_URI - - PYTHON_VERSION + - TOOLCHAIN_VERSION - DISABLE_TEST_COMMANDS - GREEN_FRAMEWORK - NO_EXT diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 855cbefef8..cb7ae1e6c9 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -20,7 +20,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: regular - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: [auth-aws, auth-aws-regular] - name: test-auth-aws-5.0-assume-role-python3.11 commands: @@ -33,7 +33,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: assume-role - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: [auth-aws, auth-aws-assume-role] - name: test-auth-aws-6.0-ec2-python3.12 commands: @@ -46,7 +46,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: ec2 - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: [auth-aws, auth-aws-ec2] - name: test-auth-aws-7.0-env-creds-python3.13 commands: @@ -59,7 +59,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: env-creds - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: [auth-aws, auth-aws-env-creds] - name: test-auth-aws-8.0-session-creds-python3.14t commands: @@ -72,7 +72,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: session-creds - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: [auth-aws, auth-aws-session-creds, free-threaded] - name: test-auth-aws-rapid-web-identity-python3.14 commands: @@ -85,7 +85,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: web-identity - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: [auth-aws, auth-aws-web-identity] - name: test-auth-aws-rapid-web-identity-session-name-python3.14 commands: @@ -99,7 +99,7 @@ tasks: TEST_NAME: auth_aws SUB_TEST_NAME: web-identity AWS_ROLE_SESSION_NAME: test - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: [auth-aws, auth-aws-web-identity] - name: test-auth-aws-latest-ecs-python3.10 commands: @@ -112,7 +112,7 @@ tasks: vars: TEST_NAME: auth_aws SUB_TEST_NAME: ecs - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: [auth-aws, auth-aws-ecs] # Backport pr tests @@ -248,60 +248,60 @@ tasks: - func: run server vars: TOPOLOGY: replica_set - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" - func: run tests vars: TEST_NAME: mod_wsgi SUB_TEST_NAME: standalone - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: [mod_wsgi, pr] - name: mod-wsgi-embedded-mode-replica-set-python3.11 commands: - func: run server vars: TOPOLOGY: replica_set - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" - func: run tests vars: TEST_NAME: mod_wsgi SUB_TEST_NAME: embedded - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: [mod_wsgi, pr] - name: mod-wsgi-replica-set-python3.12 commands: - func: run server vars: TOPOLOGY: replica_set - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" - func: run tests vars: TEST_NAME: mod_wsgi SUB_TEST_NAME: standalone - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: [mod_wsgi, pr] - name: mod-wsgi-embedded-mode-replica-set-python3.13 commands: - func: run server vars: TOPOLOGY: replica_set - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" - func: run tests vars: TEST_NAME: mod_wsgi SUB_TEST_NAME: embedded - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: [mod_wsgi, pr] - name: mod-wsgi-embedded-mode-replica-set-python3.14 commands: - func: run server vars: TOPOLOGY: replica_set - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" - func: run tests vars: TEST_NAME: mod_wsgi SUB_TEST_NAME: embedded - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: [mod_wsgi, pr] # No orchestration tests @@ -310,22 +310,22 @@ tasks: - func: assume ec2 role - func: run tests vars: - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: [test-no-orchestration, python-3.10] - name: test-no-orchestration-python3.14 commands: - func: assume ec2 role - func: run tests vars: - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: [test-no-orchestration, python-3.14] - - name: test-no-orchestration-pypy3.10 + - name: test-no-orchestration-pypy3.11 commands: - func: assume ec2 role - func: run tests vars: - PYTHON_VERSION: pypy3.10 - tags: [test-no-orchestration, python-pypy3.10] + TOOLCHAIN_VERSION: pypy3.11 + tags: [test-no-orchestration, python-pypy3.11] # No toolchain tests - name: test-no-toolchain-sync-noauth-nossl-standalone @@ -379,7 +379,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-v5.0-python3.10 @@ -389,7 +389,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-v6.0-python3.10 @@ -399,7 +399,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-v7.0-python3.10 @@ -409,7 +409,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-v8.0-python3.10 @@ -419,7 +419,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-rapid-python3.10 @@ -429,7 +429,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple-latest-python3.14 @@ -439,7 +439,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-v4.4-python3.10 @@ -449,7 +449,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-v5.0-python3.10 @@ -459,7 +459,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-v6.0-python3.10 @@ -469,7 +469,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-v7.0-python3.10 @@ -479,7 +479,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-v8.0-python3.10 @@ -489,7 +489,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-rapid-python3.10 @@ -499,7 +499,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple-latest-python3.14 @@ -509,7 +509,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-v4.4-python3.10 @@ -519,7 +519,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-v5.0-python3.10 @@ -529,7 +529,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-v6.0-python3.10 @@ -539,7 +539,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-v7.0-python3.10 @@ -549,7 +549,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-v8.0-python3.10 @@ -559,7 +559,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-rapid-python3.10 @@ -569,7 +569,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple-latest-python3.14 @@ -579,7 +579,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-v4.4-python3.10 @@ -589,7 +589,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-v5.0-python3.10 @@ -599,7 +599,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-v6.0-python3.10 @@ -609,7 +609,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-v7.0-python3.10 @@ -619,7 +619,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-v8.0-python3.10 @@ -629,7 +629,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-rapid-python3.10 @@ -639,7 +639,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple-latest-python3.14 @@ -649,7 +649,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-soft-fail-v4.4-python3.10 @@ -659,7 +659,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-soft-fail-v5.0-python3.10 @@ -669,7 +669,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-soft-fail-v6.0-python3.10 @@ -679,7 +679,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-soft-fail-v7.0-python3.10 @@ -689,7 +689,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-soft-fail-v8.0-python3.10 @@ -699,7 +699,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-soft-fail-rapid-python3.10 @@ -709,7 +709,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-soft-fail-latest-python3.14 @@ -719,7 +719,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-valid-cert-server-staples-v4.4-python3.10 @@ -729,7 +729,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -743,7 +743,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -757,7 +757,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -771,7 +771,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -785,7 +785,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -799,7 +799,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -813,7 +813,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -827,7 +827,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -841,7 +841,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -855,7 +855,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -869,7 +869,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -883,7 +883,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -897,7 +897,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -911,7 +911,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -925,7 +925,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -939,7 +939,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -953,7 +953,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -967,7 +967,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -981,7 +981,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -995,7 +995,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -1009,7 +1009,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -1023,7 +1023,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -1037,7 +1037,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -1051,7 +1051,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -1065,7 +1065,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -1079,7 +1079,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -1093,7 +1093,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -1107,7 +1107,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -1121,7 +1121,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-v5.0-python3.10 @@ -1131,7 +1131,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-v6.0-python3.10 @@ -1141,7 +1141,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-v7.0-python3.10 @@ -1151,7 +1151,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-v8.0-python3.10 @@ -1161,7 +1161,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-rapid-python3.10 @@ -1171,7 +1171,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-malicious-invalid-cert-muststaple-server-does-not-staple-latest-python3.14 @@ -1181,7 +1181,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v4.4-python3.10 @@ -1191,7 +1191,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v5.0-python3.10 @@ -1201,7 +1201,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v6.0-python3.10 @@ -1211,7 +1211,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v7.0-python3.10 @@ -1221,7 +1221,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v8.0-python3.10 @@ -1231,7 +1231,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-rapid-python3.10 @@ -1241,7 +1241,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-latest-python3.14 @@ -1251,7 +1251,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-v4.4-python3.10 @@ -1261,7 +1261,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-ecdsa, "4.4"] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-v5.0-python3.10 @@ -1271,7 +1271,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-ecdsa, "5.0"] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-v6.0-python3.10 @@ -1281,7 +1281,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-ecdsa, "6.0"] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-v7.0-python3.10 @@ -1291,7 +1291,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-ecdsa, "7.0"] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-v8.0-python3.10 @@ -1301,7 +1301,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-ecdsa, "8.0"] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-rapid-python3.10 @@ -1311,7 +1311,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-ecdsa, rapid] - name: test-ocsp-ecdsa-malicious-no-responder-muststaple-server-does-not-staple-latest-python3.14 @@ -1321,7 +1321,7 @@ tasks: ORCHESTRATION_FILE: ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-ecdsa, latest] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-v4.4-python3.10 @@ -1331,7 +1331,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-v5.0-python3.10 @@ -1341,7 +1341,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-v6.0-python3.10 @@ -1351,7 +1351,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-v7.0-python3.10 @@ -1361,7 +1361,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-v8.0-python3.10 @@ -1371,7 +1371,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-rapid-python3.10 @@ -1381,7 +1381,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-valid-cert-server-does-not-staple-latest-python3.14 @@ -1391,7 +1391,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-v4.4-python3.10 @@ -1401,7 +1401,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-v5.0-python3.10 @@ -1411,7 +1411,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-v6.0-python3.10 @@ -1421,7 +1421,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-v7.0-python3.10 @@ -1431,7 +1431,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-v8.0-python3.10 @@ -1441,7 +1441,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-rapid-python3.10 @@ -1451,7 +1451,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-invalid-cert-server-does-not-staple-latest-python3.14 @@ -1461,7 +1461,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-v4.4-python3.10 @@ -1471,7 +1471,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-v5.0-python3.10 @@ -1481,7 +1481,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-v6.0-python3.10 @@ -1491,7 +1491,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-v7.0-python3.10 @@ -1501,7 +1501,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-v8.0-python3.10 @@ -1511,7 +1511,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-rapid-python3.10 @@ -1521,7 +1521,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple-latest-python3.14 @@ -1531,7 +1531,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-v4.4-python3.10 @@ -1541,7 +1541,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-v5.0-python3.10 @@ -1551,7 +1551,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-v6.0-python3.10 @@ -1561,7 +1561,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-v7.0-python3.10 @@ -1571,7 +1571,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-v8.0-python3.10 @@ -1581,7 +1581,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-rapid-python3.10 @@ -1591,7 +1591,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple-latest-python3.14 @@ -1601,7 +1601,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-soft-fail-v4.4-python3.10 @@ -1611,7 +1611,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-soft-fail-v5.0-python3.10 @@ -1621,7 +1621,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-soft-fail-v6.0-python3.10 @@ -1631,7 +1631,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-soft-fail-v7.0-python3.10 @@ -1641,7 +1641,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-soft-fail-v8.0-python3.10 @@ -1651,7 +1651,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-soft-fail-rapid-python3.10 @@ -1661,7 +1661,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-soft-fail-latest-python3.14 @@ -1671,7 +1671,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-valid-cert-server-staples-v4.4-python3.10 @@ -1681,7 +1681,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -1695,7 +1695,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -1709,7 +1709,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -1723,7 +1723,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -1737,7 +1737,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -1751,7 +1751,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -1765,7 +1765,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -1779,7 +1779,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -1793,7 +1793,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -1807,7 +1807,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -1821,7 +1821,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -1835,7 +1835,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -1849,7 +1849,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -1863,7 +1863,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -1877,7 +1877,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -1891,7 +1891,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -1905,7 +1905,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -1919,7 +1919,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -1933,7 +1933,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -1947,7 +1947,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -1961,7 +1961,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: valid-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -1975,7 +1975,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: - ocsp @@ -1989,7 +1989,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: - ocsp @@ -2003,7 +2003,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: - ocsp @@ -2017,7 +2017,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: - ocsp @@ -2031,7 +2031,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: - ocsp @@ -2045,7 +2045,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: - ocsp @@ -2059,7 +2059,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: - ocsp @@ -2073,7 +2073,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-v5.0-python3.10 @@ -2083,7 +2083,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-v6.0-python3.10 @@ -2093,7 +2093,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-v7.0-python3.10 @@ -2103,7 +2103,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-v8.0-python3.10 @@ -2113,7 +2113,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-rapid-python3.10 @@ -2123,7 +2123,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-malicious-invalid-cert-muststaple-server-does-not-staple-latest-python3.14 @@ -2133,7 +2133,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v4.4-python3.10 @@ -2143,7 +2143,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v5.0-python3.10 @@ -2153,7 +2153,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v6.0-python3.10 @@ -2163,7 +2163,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v7.0-python3.10 @@ -2173,7 +2173,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-v8.0-python3.10 @@ -2183,7 +2183,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-rapid-python3.10 @@ -2193,7 +2193,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-delegate-malicious-invalid-cert-muststaple-server-does-not-staple-latest-python3.14 @@ -2203,7 +2203,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: revoked-delegate TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-v4.4-python3.10 @@ -2213,7 +2213,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "4.4" tags: [ocsp, ocsp-rsa, "4.4"] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-v5.0-python3.10 @@ -2223,7 +2223,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "5.0" tags: [ocsp, ocsp-rsa, "5.0"] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-v6.0-python3.10 @@ -2233,7 +2233,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "6.0" tags: [ocsp, ocsp-rsa, "6.0"] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-v7.0-python3.10 @@ -2243,7 +2243,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "7.0" tags: [ocsp, ocsp-rsa, "7.0"] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-v8.0-python3.10 @@ -2253,7 +2253,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: "8.0" tags: [ocsp, ocsp-rsa, "8.0"] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-rapid-python3.10 @@ -2263,7 +2263,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" VERSION: rapid tags: [ocsp, ocsp-rsa, rapid] - name: test-ocsp-rsa-malicious-no-responder-muststaple-server-does-not-staple-latest-python3.14 @@ -2273,7 +2273,7 @@ tasks: ORCHESTRATION_FILE: rsa-basic-tls-ocsp-mustStaple-disableStapling.json OCSP_SERVER_TYPE: no-responder TEST_NAME: ocsp - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" VERSION: latest tags: [ocsp, ocsp-rsa, latest] @@ -2385,6 +2385,7 @@ tasks: - func: run tests vars: TEST_NAME: search_index + TOOLCHAIN_VERSION: "3.10" tags: [search_index] # Server version tests @@ -2400,7 +2401,7 @@ tasks: AUTH: auth SSL: nossl TOPOLOGY: replica_set - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_async tags: - server-version @@ -2422,7 +2423,7 @@ tasks: SSL: nossl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_sync tags: - server-version @@ -2443,7 +2444,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - server-version @@ -2464,7 +2465,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - server-version @@ -2485,7 +2486,7 @@ tasks: SSL: nossl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - server-version @@ -2507,7 +2508,7 @@ tasks: SSL: nossl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - server-version @@ -2515,7 +2516,7 @@ tasks: - replica_set-noauth-nossl - sync - pr - - name: test-server-version-pypy3.10-async-noauth-ssl-replica-set + - name: test-server-version-pypy3.11-async-noauth-ssl-replica-set commands: - func: run server vars: @@ -2527,11 +2528,11 @@ tasks: AUTH: noauth SSL: ssl TOPOLOGY: replica_set - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - server-version - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - async - name: test-server-version-python3.14-sync-noauth-ssl-replica-set-cov @@ -2548,7 +2549,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set COVERAGE: "1" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_sync tags: - server-version @@ -2569,7 +2570,7 @@ tasks: SSL: nossl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - server-version @@ -2588,7 +2589,7 @@ tasks: AUTH: auth SSL: nossl TOPOLOGY: sharded_cluster - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - server-version @@ -2610,7 +2611,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - server-version @@ -2632,7 +2633,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - server-version @@ -2653,7 +2654,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - server-version @@ -2674,7 +2675,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_async tags: - server-version @@ -2695,7 +2696,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - server-version @@ -2714,7 +2715,7 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_async tags: - server-version @@ -2722,7 +2723,7 @@ tasks: - sharded_cluster-auth-ssl - async - free-threaded - - name: test-server-version-pypy3.10-async-auth-ssl-sharded-cluster + - name: test-server-version-pypy3.11-async-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -2734,11 +2735,11 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - server-version - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - async - name: test-server-version-python3.10-sync-auth-ssl-sharded-cluster-cov @@ -2755,7 +2756,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - server-version @@ -2777,7 +2778,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - server-version @@ -2798,7 +2799,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_sync tags: - server-version @@ -2819,7 +2820,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_sync tags: - server-version @@ -2840,7 +2841,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_sync tags: - server-version @@ -2859,7 +2860,7 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - server-version @@ -2867,7 +2868,7 @@ tasks: - sharded_cluster-auth-ssl - sync - free-threaded - - name: test-server-version-pypy3.10-sync-auth-ssl-sharded-cluster + - name: test-server-version-pypy3.11-sync-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -2879,11 +2880,11 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - sync - name: test-server-version-python3.12-async-noauth-nossl-sharded-cluster-cov @@ -2900,7 +2901,7 @@ tasks: SSL: nossl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - server-version @@ -2921,7 +2922,7 @@ tasks: SSL: nossl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - server-version @@ -2942,14 +2943,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - server-version - python-3.10 - sharded_cluster-noauth-ssl - async - - name: test-server-version-pypy3.10-sync-noauth-ssl-sharded-cluster + - name: test-server-version-pypy3.11-sync-noauth-ssl-sharded-cluster commands: - func: run server vars: @@ -2961,11 +2962,11 @@ tasks: AUTH: noauth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-noauth-ssl - sync - name: test-server-version-python3.13-async-auth-nossl-standalone-cov @@ -2982,7 +2983,7 @@ tasks: SSL: nossl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_async tags: - server-version @@ -3003,7 +3004,7 @@ tasks: SSL: nossl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_sync tags: - server-version @@ -3024,7 +3025,7 @@ tasks: SSL: ssl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - server-version @@ -3045,7 +3046,7 @@ tasks: SSL: ssl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - server-version @@ -3066,7 +3067,7 @@ tasks: SSL: nossl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - server-version @@ -3074,7 +3075,7 @@ tasks: - standalone-noauth-nossl - async - pr - - name: test-server-version-pypy3.10-sync-noauth-nossl-standalone + - name: test-server-version-pypy3.11-sync-noauth-nossl-standalone commands: - func: run server vars: @@ -3086,11 +3087,11 @@ tasks: AUTH: noauth SSL: nossl TOPOLOGY: standalone - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - sync - pr @@ -3108,7 +3109,7 @@ tasks: SSL: ssl TOPOLOGY: standalone COVERAGE: "1" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - server-version @@ -3127,7 +3128,7 @@ tasks: AUTH: noauth SSL: ssl TOPOLOGY: standalone - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - server-version @@ -3151,7 +3152,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.2" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - test-standard @@ -3173,7 +3174,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.2" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_sync tags: - test-standard @@ -3195,7 +3196,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_sync tags: - test-standard @@ -3203,7 +3204,7 @@ tasks: - python-3.12 - sharded_cluster-auth-ssl - sync - - name: test-standard-v4.2-pypy3.10-sync-auth-ssl-sharded-cluster + - name: test-standard-v4.2-pypy3.11-sync-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -3217,12 +3218,12 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard - server-4.2 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - sync - pypy @@ -3240,7 +3241,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - test-standard @@ -3262,7 +3263,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - test-standard @@ -3285,7 +3286,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.4" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - test-standard @@ -3307,7 +3308,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.4" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - test-standard @@ -3329,7 +3330,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - test-standard @@ -3337,7 +3338,7 @@ tasks: - python-3.12 - sharded_cluster-auth-ssl - async - - name: test-standard-v4.4-pypy3.10-async-auth-ssl-sharded-cluster + - name: test-standard-v4.4-pypy3.11-async-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -3351,12 +3352,12 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard - server-4.4 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - async - pypy @@ -3374,7 +3375,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.4" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - test-standard @@ -3396,7 +3397,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.4" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_async tags: - test-standard @@ -3419,7 +3420,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "5.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - test-standard @@ -3441,7 +3442,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "5.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - test-standard @@ -3464,7 +3465,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - test-standard @@ -3486,7 +3487,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_sync tags: - test-standard @@ -3508,7 +3509,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "5.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_sync tags: - test-standard @@ -3530,7 +3531,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "6.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - test-standard @@ -3552,7 +3553,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "6.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_async tags: - test-standard @@ -3575,7 +3576,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - test-standard @@ -3597,7 +3598,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - test-standard @@ -3619,7 +3620,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "6.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_async tags: - test-standard @@ -3641,7 +3642,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "7.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_sync tags: - test-standard @@ -3663,7 +3664,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_sync tags: - test-standard @@ -3685,7 +3686,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_sync tags: - test-standard @@ -3708,7 +3709,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "7.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_sync tags: - test-standard @@ -3716,7 +3717,7 @@ tasks: - python-3.12 - standalone-noauth-nossl - sync - - name: test-standard-v7.0-pypy3.10-sync-noauth-nossl-standalone + - name: test-standard-v7.0-pypy3.11-sync-noauth-nossl-standalone commands: - func: run server vars: @@ -3730,12 +3731,12 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "7.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard - server-7.0 - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - sync - pypy @@ -3753,7 +3754,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "8.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_async tags: - test-standard @@ -3775,7 +3776,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - test-standard @@ -3797,7 +3798,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t TEST_NAME: default_async tags: - test-standard @@ -3820,7 +3821,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "8.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - test-standard @@ -3828,7 +3829,7 @@ tasks: - python-3.12 - standalone-noauth-nossl - async - - name: test-standard-v8.0-pypy3.10-async-noauth-nossl-standalone + - name: test-standard-v8.0-pypy3.11-async-noauth-nossl-standalone commands: - func: run server vars: @@ -3842,12 +3843,12 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "8.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard - server-8.0 - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - async - pypy @@ -3865,7 +3866,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_async tags: - test-standard @@ -3874,7 +3875,7 @@ tasks: - replica_set-noauth-ssl - async - pr - - name: test-standard-latest-pypy3.10-async-noauth-ssl-replica-set + - name: test-standard-latest-pypy3.11-async-noauth-ssl-replica-set commands: - func: run server vars: @@ -3888,12 +3889,12 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard - server-latest - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - async - pypy @@ -3911,7 +3912,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: latest - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_async tags: - test-standard @@ -3934,7 +3935,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: latest - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_async tags: - test-standard @@ -3957,7 +3958,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: latest - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_async tags: - test-standard @@ -3980,7 +3981,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: rapid - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" TEST_NAME: default_sync tags: - test-standard @@ -3988,7 +3989,7 @@ tasks: - python-3.12 - replica_set-noauth-ssl - sync - - name: test-standard-rapid-pypy3.10-sync-noauth-ssl-replica-set + - name: test-standard-rapid-pypy3.11-sync-noauth-ssl-replica-set commands: - func: run server vars: @@ -4002,12 +4003,12 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: rapid - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard - server-rapid - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - sync - pypy @@ -4025,7 +4026,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" TEST_NAME: default_sync tags: - test-standard @@ -4047,7 +4048,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" TEST_NAME: default_sync tags: - test-standard @@ -4069,7 +4070,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" TEST_NAME: default_sync tags: - test-standard @@ -4093,7 +4094,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.2" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-non-standard - server-4.2 @@ -4114,7 +4115,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-non-standard - server-4.2 @@ -4135,14 +4136,14 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-4.2 - python-3.10 - standalone-noauth-nossl - noauth - - name: test-non-standard-v4.2-pypy3.10-noauth-nossl-standalone + - name: test-non-standard-v4.2-pypy3.11-noauth-nossl-standalone commands: - func: run server vars: @@ -4156,11 +4157,11 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-4.2 - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - noauth - pypy @@ -4178,7 +4179,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.4" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: - test-non-standard - server-4.4 @@ -4186,7 +4187,7 @@ tasks: - replica_set-noauth-ssl - noauth - free-threaded - - name: test-non-standard-v4.4-pypy3.10-noauth-ssl-replica-set + - name: test-non-standard-v4.4-pypy3.11-noauth-ssl-replica-set commands: - func: run server vars: @@ -4200,11 +4201,11 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.4" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-4.4 - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - noauth - pypy @@ -4222,7 +4223,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-non-standard - server-4.4 @@ -4243,7 +4244,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.4" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-non-standard - server-4.4 @@ -4264,7 +4265,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "5.0" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-non-standard - server-5.0 @@ -4285,14 +4286,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-non-standard - server-5.0 - python-3.12 - sharded_cluster-auth-ssl - auth - - name: test-non-standard-v5.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-non-standard-v5.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4306,11 +4307,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-5.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4328,7 +4329,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "5.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-5.0 @@ -4349,7 +4350,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "6.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: - test-non-standard - server-6.0 @@ -4371,7 +4372,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-non-standard - server-6.0 @@ -4392,14 +4393,14 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "6.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-non-standard - server-6.0 - python-3.13 - standalone-noauth-nossl - noauth - - name: test-non-standard-v6.0-pypy3.10-noauth-nossl-standalone + - name: test-non-standard-v6.0-pypy3.11-noauth-nossl-standalone commands: - func: run server vars: @@ -4413,11 +4414,11 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "6.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-6.0 - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - noauth - pypy @@ -4435,14 +4436,14 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "7.0" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-non-standard - server-7.0 - python-3.11 - replica_set-noauth-ssl - noauth - - name: test-non-standard-v7.0-pypy3.10-noauth-ssl-replica-set + - name: test-non-standard-v7.0-pypy3.11-noauth-ssl-replica-set commands: - func: run server vars: @@ -4456,11 +4457,11 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "7.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-7.0 - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - noauth - pypy @@ -4478,7 +4479,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-non-standard - server-7.0 @@ -4499,7 +4500,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "7.0" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-7.0 @@ -4520,7 +4521,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "8.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: - test-non-standard - server-8.0 @@ -4542,14 +4543,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-non-standard - server-8.0 - python-3.14 - sharded_cluster-auth-ssl - auth - - name: test-non-standard-v8.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-non-standard-v8.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4563,11 +4564,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-8.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4585,7 +4586,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "8.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-non-standard - server-8.0 @@ -4606,7 +4607,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: - test-non-standard - server-latest @@ -4615,7 +4616,7 @@ tasks: - noauth - free-threaded - pr - - name: test-non-standard-latest-pypy3.10-noauth-ssl-replica-set + - name: test-non-standard-latest-pypy3.11-noauth-ssl-replica-set commands: - func: run server vars: @@ -4629,11 +4630,11 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-latest - - python-pypy3.10 + - python-pypy3.11 - replica_set-noauth-ssl - noauth - pypy @@ -4651,7 +4652,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: latest - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-non-standard - server-latest @@ -4673,7 +4674,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: latest - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-non-standard - server-latest @@ -4695,7 +4696,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: rapid - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-non-standard - server-rapid @@ -4716,7 +4717,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-non-standard - server-rapid @@ -4737,14 +4738,14 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-rapid - python-3.10 - standalone-noauth-nossl - noauth - - name: test-non-standard-rapid-pypy3.10-noauth-nossl-standalone + - name: test-non-standard-rapid-pypy3.11-noauth-nossl-standalone commands: - func: run server vars: @@ -4758,11 +4759,11 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-rapid - - python-pypy3.10 + - python-pypy3.11 - standalone-noauth-nossl - noauth - pypy @@ -4782,14 +4783,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-standard-auth - server-4.2 - python-3.10 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-v4.2-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v4.2-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4803,11 +4804,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-4.2 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4825,14 +4826,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-standard-auth - server-4.4 - python-3.11 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-v4.4-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v4.4-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4846,11 +4847,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-4.4 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4868,14 +4869,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-standard-auth - server-5.0 - python-3.12 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-v5.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v5.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4889,11 +4890,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-5.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4911,14 +4912,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-standard-auth - server-6.0 - python-3.13 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-v6.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v6.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4932,11 +4933,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-6.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4954,7 +4955,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: 3.14t + TOOLCHAIN_VERSION: 3.14t tags: - test-standard-auth - server-7.0 @@ -4962,7 +4963,7 @@ tasks: - sharded_cluster-auth-ssl - auth - free-threaded - - name: test-standard-auth-v7.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v7.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -4976,11 +4977,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-7.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -4998,14 +4999,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-standard-auth - server-8.0 - python-3.14 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-v8.0-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-v8.0-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -5019,11 +5020,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-8.0 - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -5041,7 +5042,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: latest - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-standard-auth - server-latest @@ -5049,7 +5050,7 @@ tasks: - sharded_cluster-auth-ssl - auth - pr - - name: test-standard-auth-latest-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-latest-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -5063,11 +5064,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: latest - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-latest - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy @@ -5085,14 +5086,14 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-standard-auth - server-rapid - python-3.10 - sharded_cluster-auth-ssl - auth - - name: test-standard-auth-rapid-pypy3.10-auth-ssl-sharded-cluster + - name: test-standard-auth-rapid-pypy3.11-auth-ssl-sharded-cluster commands: - func: run server vars: @@ -5106,11 +5107,11 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: pypy3.10 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-rapid - - python-pypy3.10 + - python-pypy3.11 - sharded_cluster-auth-ssl - auth - pypy diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 9bae5f4680..816ff8d188 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -11,7 +11,7 @@ buildvariants: VERSION: latest NO_EXT: "1" REQUIRE_FIPS: "1" - PYTHON_BINARY: /usr/bin/python3.11 + UV_PYTHON: /usr/bin/python3.11 tags: [] - name: other-hosts-rhel8-zseries-latest tasks: @@ -72,7 +72,7 @@ buildvariants: # Aws auth tests - name: auth-aws-ubuntu-20 tasks: - - name: .auth-aws !.auth-aws-ecs + - name: .auth-aws display_name: Auth AWS Ubuntu-20 run_on: - ubuntu2004-small @@ -453,14 +453,12 @@ buildvariants: SUB_TEST_NAME: pyopenssl # Search index tests - - name: search-index-helpers-rhel8-python3.10 + - name: search-index-helpers-rhel8 tasks: - name: .search_index - display_name: Search Index Helpers RHEL8 Python3.10 + display_name: Search Index Helpers RHEL8 run_on: - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.10/bin/python3 # Server version tests - name: mongodb-v4.2 diff --git a/.evergreen/run-mongodb-aws-ecs-test.sh b/.evergreen/run-mongodb-aws-ecs-test.sh index b8330de511..414c7a0a25 100755 --- a/.evergreen/run-mongodb-aws-ecs-test.sh +++ b/.evergreen/run-mongodb-aws-ecs-test.sh @@ -19,20 +19,14 @@ fi # Now we can safely enable xtrace set -o xtrace -# Install python with pip. -PYTHON_VER="python3.10" +# Install a c compiler. apt-get -qq update < /dev/null > /dev/null -apt-get -q install -y software-properties-common -# Use openpgp to avoid gpg key timeout. -mkdir -p $HOME/.gnupg -echo "keyserver keys.openpgp.org" >> $HOME/.gnupg/gpg.conf -add-apt-repository -y 'ppa:deadsnakes/ppa' -apt-get -qq install $PYTHON_VER $PYTHON_VER-venv build-essential $PYTHON_VER-dev -y < /dev/null > /dev/null +apt-get -q install -y build-essential -export PYTHON_BINARY=$PYTHON_VER export SET_XTRACE_ON=1 cd src rm -rf .venv rm -f .evergreen/scripts/test-env.sh || true +rm -f .evergreen/scripts/env.sh || true bash ./.evergreen/just.sh setup-tests auth_aws ecs-remote bash .evergreen/just.sh run-tests diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index c14215244e..095b7938dc 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -37,6 +37,8 @@ cleanup_tests() { trap "cleanup_tests" SIGINT ERR # Start the test runner. +echo "Running tests with UV_PYTHON=${UV_PYTHON:-}..." uv run ${UV_ARGS} --reinstall-package pymongo .evergreen/scripts/run_tests.py "$@" +echo "Running tests with UV_PYTHON=${UV_PYTHON:-}... done." cleanup_tests diff --git a/.evergreen/scripts/check-import-time.sh b/.evergreen/scripts/check-import-time.sh index f7a1117b97..ce4e834708 100755 --- a/.evergreen/scripts/check-import-time.sh +++ b/.evergreen/scripts/check-import-time.sh @@ -11,11 +11,10 @@ pushd $HERE/../.. >/dev/null BASE_SHA="$1" HEAD_SHA="$2" -. .evergreen/utils.sh - -if [ -z "${PYTHON_BINARY:-}" ]; then - PYTHON_BINARY=$(find_python3) -fi +# Set up the virtual env. +. $HERE/setup-dev-env.sh +uv venv --seed +source .venv/bin/activate # Use the previous commit if this was not a PR run. if [ "$BASE_SHA" == "$HEAD_SHA" ]; then @@ -24,7 +23,6 @@ fi function get_import_time() { local log_file - createvirtualenv "$PYTHON_BINARY" import-venv python -m pip install -q ".[aws,encryption,gssapi,ocsp,snappy,zstd]" # Import once to cache modules python -c "import pymongo" diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index daec0841d5..310da42f90 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -356,12 +356,10 @@ def create_oidc_auth_variants(): def create_search_index_variants(): host = DEFAULT_HOST - python = CPYTHONS[0] return [ create_variant( [".search_index"], - get_variant_name("Search Index Helpers", host, python=python), - python=python, + get_variant_name("Search Index Helpers", host), host=host, ) ] @@ -438,8 +436,7 @@ def create_aws_auth_variants(): for host_name in ["ubuntu20", "win64", "macos"]: expansions = dict() - # PYTHON-5604 - we need to skip ECS tests for now. - tasks = [".auth-aws !.auth-aws-ecs"] + tasks = [".auth-aws"] tags = [] if host_name == "macos": tasks = [".auth-aws !.auth-aws-web-identity !.auth-aws-ecs !.auth-aws-ec2"] @@ -477,7 +474,7 @@ def create_alternative_hosts_variants(): if "fips" in host_name.lower(): expansions["REQUIRE_FIPS"] = "1" # Use explicit Python 3.11 binary on the host since the default python3 is 3.9. - expansions["PYTHON_BINARY"] = "/usr/bin/python3.11" + expansions["UV_PYTHON"] = "/usr/bin/python3.11" if "amazon" in host_name.lower(): tags.append("pr") variants.append( @@ -543,7 +540,7 @@ def create_server_version_tasks(): ) server_func = FunctionCall(func="run server", vars=expansions) test_vars = expansions.copy() - test_vars["PYTHON_VERSION"] = python + test_vars["TOOLCHAIN_VERSION"] = python test_vars["TEST_NAME"] = f"default_{sync}" test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[server_func, test_func])) @@ -599,7 +596,7 @@ def create_test_non_standard_tasks(): name = get_task_name("test-non-standard", python=python, **expansions) server_func = FunctionCall(func="run server", vars=expansions) test_vars = expansions.copy() - test_vars["PYTHON_VERSION"] = python + test_vars["TOOLCHAIN_VERSION"] = python test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[server_func, test_func])) return tasks @@ -639,7 +636,7 @@ def create_test_standard_auth_tasks(): name = get_task_name("test-standard-auth", python=python, **expansions) server_func = FunctionCall(func="run server", vars=expansions) test_vars = expansions.copy() - test_vars["PYTHON_VERSION"] = python + test_vars["TOOLCHAIN_VERSION"] = python test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[server_func, test_func])) return tasks @@ -691,7 +688,7 @@ def create_standard_tasks(): name = get_task_name("test-standard", python=python, sync=sync, **expansions) server_func = FunctionCall(func="run server", vars=expansions) test_vars = expansions.copy() - test_vars["PYTHON_VERSION"] = python + test_vars["TOOLCHAIN_VERSION"] = python test_vars["TEST_NAME"] = f"default_{sync}" test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[server_func, test_func])) @@ -707,7 +704,7 @@ def create_no_orchestration_tasks(): ] name = get_task_name("test-no-orchestration", python=python) assume_func = FunctionCall(func="assume ec2 role") - test_vars = dict(PYTHON_VERSION=python) + test_vars = dict(TOOLCHAIN_VERSION=python) test_func = FunctionCall(func="run tests", vars=test_vars) commands = [assume_func, test_func] tasks.append(EvgTask(name=name, tags=tags, commands=commands)) @@ -756,7 +753,7 @@ def create_aws_tasks(): if "t" in python: tags.append("free-threaded") name = get_task_name(f"{base_name}-{test_type}", python=python) - test_vars = dict(TEST_NAME="auth_aws", SUB_TEST_NAME=test_type, PYTHON_VERSION=python) + test_vars = dict(TEST_NAME="auth_aws", SUB_TEST_NAME=test_type, TOOLCHAIN_VERSION=python) test_func = FunctionCall(func="run tests", vars=test_vars) funcs = [server_func, assume_func, test_func] tasks.append(EvgTask(name=name, tags=tags, commands=funcs)) @@ -768,7 +765,7 @@ def create_aws_tasks(): TEST_NAME="auth_aws", SUB_TEST_NAME="web-identity", AWS_ROLE_SESSION_NAME="test", - PYTHON_VERSION=python, + TOOLCHAIN_VERSION=python, ) if "t" in python: tags.append("free-threaded") @@ -806,9 +803,11 @@ def create_mod_wsgi_tasks(): task_name = "mod-wsgi-embedded-mode-" task_name += topology.replace("_", "-") task_name = get_task_name(task_name, python=python) - server_vars = dict(TOPOLOGY=topology, PYTHON_VERSION=python) + server_vars = dict(TOPOLOGY=topology, TOOLCHAIN_VERSION=python) server_func = FunctionCall(func="run server", vars=server_vars) - vars = dict(TEST_NAME="mod_wsgi", SUB_TEST_NAME=test.split("-")[0], PYTHON_VERSION=python) + vars = dict( + TEST_NAME="mod_wsgi", SUB_TEST_NAME=test.split("-")[0], TOOLCHAIN_VERSION=python + ) test_func = FunctionCall(func="run tests", vars=vars) tags = ["mod_wsgi", "pr"] commands = [server_func, test_func] @@ -830,7 +829,7 @@ def _create_ocsp_tasks(algo, variant, server_type, base_task_name): ORCHESTRATION_FILE=file_name, OCSP_SERVER_TYPE=server_type, TEST_NAME="ocsp", - PYTHON_VERSION=python, + TOOLCHAIN_VERSION=python, VERSION=version, ) test_func = FunctionCall(func="run tests", vars=vars) @@ -864,7 +863,7 @@ def create_aws_lambda_tasks(): def create_search_index_tasks(): assume_func = FunctionCall(func="assume ec2 role") server_func = FunctionCall(func="run server", vars=dict(TEST_NAME="search_index")) - vars = dict(TEST_NAME="search_index") + vars = dict(TEST_NAME="search_index", TOOLCHAIN_VERSION=CPYTHONS[0]) test_func = FunctionCall(func="run tests", vars=vars) task_name = "test-search-index-helpers" tags = ["search_index"] @@ -1075,8 +1074,8 @@ def create_run_server_func(): "AUTH", "SSL", "ORCHESTRATION_FILE", - "PYTHON_BINARY", - "PYTHON_VERSION", + "UV_PYTHON", + "TOOLCHAIN_VERSION", "STORAGE_ENGINE", "REQUIRE_API_VERSION", "DRIVERS_TOOLS", @@ -1100,10 +1099,10 @@ def create_run_tests_func(): "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "COVERAGE", - "PYTHON_BINARY", + "UV_PYTHON", "LIBMONGOCRYPT_URL", "MONGODB_URI", - "PYTHON_VERSION", + "TOOLCHAIN_VERSION", "DISABLE_TEST_COMMANDS", "GREEN_FRAMEWORK", "NO_EXT", diff --git a/.evergreen/scripts/generate_config_utils.py b/.evergreen/scripts/generate_config_utils.py index 4eb6bcb0dc..a32092f5b2 100644 --- a/.evergreen/scripts/generate_config_utils.py +++ b/.evergreen/scripts/generate_config_utils.py @@ -23,7 +23,7 @@ ALL_VERSIONS = ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0", "rapid", "latest"] CPYTHONS = ["3.10", "3.11", "3.12", "3.13", "3.14t", "3.14"] -PYPYS = ["pypy3.10"] +PYPYS = ["pypy3.11"] ALL_PYTHONS = CPYTHONS + PYPYS MIN_MAX_PYTHON = [CPYTHONS[0], CPYTHONS[-1]] BATCHTIME_WEEK = 10080 @@ -133,43 +133,17 @@ def create_variant( *, version: str | None = None, host: Host | str | None = None, - python: str | None = None, expansions: dict | None = None, **kwargs: Any, ) -> BuildVariant: expansions = expansions and expansions.copy() or dict() if version: expansions["VERSION"] = version - if python: - expansions["PYTHON_BINARY"] = get_python_binary(python, host) return create_variant_generic( tasks, display_name, version=version, host=host, expansions=expansions, **kwargs ) -def get_python_binary(python: str, host: Host) -> str: - """Get the appropriate python binary given a python version and host.""" - name = host.name - if name in ["win64", "win32"]: - if name == "win32": - base = "C:/python/32" - else: - base = "C:/python" - python_dir = python.replace(".", "").replace("t", "") - return f"{base}/Python{python_dir}/python{python}.exe" - - if name in ["rhel8", "ubuntu22", "ubuntu20", "rhel7"]: - return f"/opt/python/{python}/bin/python3" - - if name in ["macos", "macos-arm64"]: - bin_name = "python3t" if "t" in python else "python3" - python_dir = python.replace("t", "") - framework_dir = "PythonT" if "t" in python else "Python" - return f"/Library/Frameworks/{framework_dir}.Framework/Versions/{python_dir}/bin/{bin_name}" - - raise ValueError(f"no match found for python {python} on {name}") - - def get_versions_from(min_version: str) -> list[str]: """Get all server versions starting from a minimum version.""" min_version_float = float(min_version) diff --git a/.evergreen/scripts/install-dependencies.sh b/.evergreen/scripts/install-dependencies.sh index 23d865d0d8..8df2af79ca 100755 --- a/.evergreen/scripts/install-dependencies.sh +++ b/.evergreen/scripts/install-dependencies.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Install the dependencies needed for an evergreen run. +# Install the necessary dependencies. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) @@ -13,50 +13,6 @@ fi # Set up the default bin directory. if [ -z "${PYMONGO_BIN_DIR:-}" ]; then PYMONGO_BIN_DIR="$HOME/.local/bin" - export PATH="$PYMONGO_BIN_DIR:$PATH" -fi - -# Helper function to pip install a dependency using a temporary python env. -function _pip_install() { - _HERE=$(dirname ${BASH_SOURCE:-$0}) - . $_HERE/../utils.sh - _VENV_PATH=$(mktemp -d) - if [ "Windows_NT" = "${OS:-}" ]; then - _VENV_PATH=$(cygpath -m $_VENV_PATH) - fi - echo "Installing $2 using pip..." - createvirtualenv "$(find_python3)" $_VENV_PATH - python -m pip install $1 - _suffix="" - if [ "Windows_NT" = "${OS:-}" ]; then - _suffix=".exe" - fi - ln -s "$(which $2)" $PYMONGO_BIN_DIR/${2}${_suffix} - # uv also comes with a uvx binary. - if [ $2 == "uv" ]; then - ln -s "$(which uvx)" $PYMONGO_BIN_DIR/uvx${_suffix} - fi - echo "Installed to ${PYMONGO_BIN_DIR}" - echo "Installing $2 using pip... done." -} - -# Ensure just is installed. -if ! command -v just &>/dev/null; then - # On most systems we can install directly. - _TARGET="" - if [ "Windows_NT" = "${OS:-}" ]; then - _TARGET="--target x86_64-pc-windows-msvc" - fi - _BIN_DIR=$PYMONGO_BIN_DIR - mkdir -p ${_BIN_DIR} - echo "Installing just..." - mkdir -p "$_BIN_DIR" 2>/dev/null || true - curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- $_TARGET --to "$_BIN_DIR" || { - # Remove just file if it exists (can be created if there was an install error). - rm -f ${_BIN_DIR}/just - _pip_install rust-just just - } - echo "Installing just... done." fi # Ensure uv is installed. @@ -64,14 +20,17 @@ if ! command -v uv &>/dev/null; then _BIN_DIR=$PYMONGO_BIN_DIR mkdir -p ${_BIN_DIR} echo "Installing uv..." - # On most systems we can install directly. - curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="$_BIN_DIR" INSTALLER_NO_MODIFY_PATH=1 sh || { - _pip_install uv uv - } + curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="$_BIN_DIR" INSTALLER_NO_MODIFY_PATH=1 sh if [ "Windows_NT" = "${OS:-}" ]; then chmod +x "$(cygpath -u $_BIN_DIR)/uv.exe" fi + export PATH="$PYMONGO_BIN_DIR:$PATH" echo "Installing uv... done." fi +# Ensure just is installed. +if ! command -v just &>/dev/null; then + uv tool install rust-just +fi + popd > /dev/null diff --git a/.evergreen/scripts/kms_tester.py b/.evergreen/scripts/kms_tester.py index e3833ae63a..9bafdc1f64 100644 --- a/.evergreen/scripts/kms_tester.py +++ b/.evergreen/scripts/kms_tester.py @@ -33,7 +33,7 @@ def _setup_azure_vm(base_env: dict[str, str]) -> None: env["AZUREKMS_CMD"] = "sudo apt-get install -y python3-dev build-essential" run_command(f"{azure_dir}/run-command.sh", env=env) - env["AZUREKMS_CMD"] = "NO_EXT=1 bash .evergreen/just.sh setup-tests kms azure-remote" + env["AZUREKMS_CMD"] = "bash .evergreen/just.sh setup-tests kms azure-remote" run_command(f"{azure_dir}/run-command.sh", env=env) LOGGER.info("Setting up Azure VM... done.") @@ -53,7 +53,7 @@ def _setup_gcp_vm(base_env: dict[str, str]) -> None: env["GCPKMS_CMD"] = "sudo apt-get install -y python3-dev build-essential" run_command(f"{gcp_dir}/run-command.sh", env=env) - env["GCPKMS_CMD"] = "NO_EXT=1 bash ./.evergreen/just.sh setup-tests kms gcp-remote" + env["GCPKMS_CMD"] = "bash ./.evergreen/just.sh setup-tests kms gcp-remote" run_command(f"{gcp_dir}/run-command.sh", env=env) LOGGER.info("Setting up GCP VM...") diff --git a/.evergreen/scripts/oidc_tester.py b/.evergreen/scripts/oidc_tester.py index ac2960371e..a8949a9381 100644 --- a/.evergreen/scripts/oidc_tester.py +++ b/.evergreen/scripts/oidc_tester.py @@ -89,7 +89,7 @@ def test_oidc_send_to_remote(sub_test_name: str) -> None: env[f"{upper_name}OIDC_DRIVERS_TAR_FILE"] = TMP_DRIVER_FILE env[ f"{upper_name}OIDC_TEST_CMD" - ] = f"NO_EXT=1 OIDC_ENV={sub_test_name} ./.evergreen/run-mongodb-oidc-test.sh" + ] = f"OIDC_ENV={sub_test_name} ./.evergreen/run-mongodb-oidc-test.sh" elif sub_test_name in K8S_NAMES: env["K8S_DRIVERS_TAR_FILE"] = TMP_DRIVER_FILE env["K8S_TEST_CMD"] = "OIDC_ENV=k8s ./.evergreen/run-mongodb-oidc-test.sh" diff --git a/.evergreen/scripts/run_tests.py b/.evergreen/scripts/run_tests.py index c1c29c58bc..9c8101c5b1 100644 --- a/.evergreen/scripts/run_tests.py +++ b/.evergreen/scripts/run_tests.py @@ -106,10 +106,11 @@ def handle_aws_lambda() -> None: env["TEST_LAMBDA_DIRECTORY"] = str(target_dir) env.setdefault("AWS_REGION", "us-east-1") dirs = ["pymongo", "gridfs", "bson"] - # Store the original .so files. - before_sos = [] + # Remove the original .so files. for dname in dirs: - before_sos.extend(f"{f.parent.name}/{f.name}" for f in (ROOT / dname).glob("*.so")) + so_paths = [f"{f.parent.name}/{f.name}" for f in (ROOT / dname).glob("*.so")] + for so_path in list(so_paths): + Path(so_path).unlink() # Build the c extensions. docker = which("docker") or which("podman") if not docker: @@ -122,15 +123,11 @@ def handle_aws_lambda() -> None: target = ROOT / "test/lambda/mongodb" / dname shutil.rmtree(target, ignore_errors=True) shutil.copytree(ROOT / dname, target) - # Remove the original so files from the lambda directory. - for so_path in before_sos: - (ROOT / "test/lambda/mongodb" / so_path).unlink() # Remove the new so files from the ROOT directory. for dname in dirs: so_paths = [f"{f.parent.name}/{f.name}" for f in (ROOT / dname).glob("*.so")] for so_path in list(so_paths): - if so_path not in before_sos: - Path(so_path).unlink() + Path(so_path).unlink() script_name = "run-deployed-lambda-aws-tests.sh" run_command(f"bash {DRIVERS_TOOLS}/.evergreen/aws_lambda/{script_name}", env=env) diff --git a/.evergreen/scripts/setup-dev-env.sh b/.evergreen/scripts/setup-dev-env.sh index 209857d542..fa5f86d798 100755 --- a/.evergreen/scripts/setup-dev-env.sh +++ b/.evergreen/scripts/setup-dev-env.sh @@ -1,22 +1,17 @@ #!/bin/bash -# Set up a development environment on an evergreen host. +# Set up development environment. set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) HERE="$( cd -- "$HERE" > /dev/null 2>&1 && pwd )" ROOT=$(dirname "$(dirname $HERE)") -pushd $ROOT > /dev/null - -# Bail early if running on GitHub Actions. -if [ -n "${GITHUB_ACTION:-}" ]; then - exit 0 -fi # Source the env files to pick up common variables. if [ -f $HERE/env.sh ]; then . $HERE/env.sh fi -# PYTHON_BINARY or PYTHON_VERSION may be defined in test-env.sh. + +# Get variables defined in test-env.sh. if [ -f $HERE/test-env.sh ]; then . $HERE/test-env.sh fi @@ -24,36 +19,40 @@ fi # Ensure dependencies are installed. bash $HERE/install-dependencies.sh -# Get the appropriate UV_PYTHON. -. $ROOT/.evergreen/utils.sh - -if [ -z "${PYTHON_BINARY:-}" ]; then - if [ -n "${PYTHON_VERSION:-}" ]; then - PYTHON_BINARY=$(get_python_binary $PYTHON_VERSION) - else - PYTHON_BINARY=$(find_python3) +# Handle the value for UV_PYTHON. +. $HERE/setup-uv-python.sh + +# Only run the next part if not running on CI. +if [ -z "${CI:-}" ]; then + # Add the default install path to the path if needed. + if [ -z "${PYMONGO_BIN_DIR:-}" ]; then + export PATH="$PATH:$HOME/.local/bin" + fi + + # Set up venv, making sure c extensions build unless disabled. + if [ -z "${NO_EXT:-}" ]; then + export PYMONGO_C_EXT_MUST_BUILD=1 + fi + + ( + cd $ROOT && uv sync + ) + + # Set up build utilities on Windows spawn hosts. + if [ -f $HOME/.visualStudioEnv.sh ]; then + set +u + SSH_TTY=1 source $HOME/.visualStudioEnv.sh + set -u + fi + + # Only set up pre-commit if we are in a git checkout. + if [ -f $HERE/.git ]; then + if ! command -v pre-commit &>/dev/null; then + uv tool install pre-commit fi -fi -export UV_PYTHON=${PYTHON_BINARY} -echo "Using python $UV_PYTHON" -# Add the default install path to the path if needed. -if [ -z "${PYMONGO_BIN_DIR:-}" ]; then - export PATH="$PATH:$HOME/.local/bin" -fi - -# Set up venv, making sure c extensions build unless disabled. -if [ -z "${NO_EXT:-}" ]; then - export PYMONGO_C_EXT_MUST_BUILD=1 -fi -# Set up visual studio env on Windows spawn hosts. -if [ -f $HOME/.visualStudioEnv.sh ]; then - set +u - SSH_TTY=1 source $HOME/.visualStudioEnv.sh - set -u + if [ ! -f .git/hooks/pre-commit ]; then + uvx pre-commit install + fi + fi fi -uv sync - -echo "Setting up python environment... done." - -popd > /dev/null diff --git a/.evergreen/scripts/setup-system.sh b/.evergreen/scripts/setup-system.sh index 9158414cce..bd7e2dd4bc 100755 --- a/.evergreen/scripts/setup-system.sh +++ b/.evergreen/scripts/setup-system.sh @@ -8,9 +8,13 @@ echo "Setting up system..." bash .evergreen/scripts/configure-env.sh source .evergreen/scripts/env.sh bash $DRIVERS_TOOLS/.evergreen/setup.sh -bash .evergreen/scripts/install-dependencies.sh popd +# Run spawn host-specific tasks. +if [ -z "${CI:-}" ]; then + bash $HERE/setup-dev-env.sh +fi + # Enable core dumps if enabled on the machine # Copied from https://github.com/mongodb/mongo/blob/master/etc/evergreen.yml if [ -f /proc/self/coredump_filter ]; then diff --git a/.evergreen/scripts/setup-uv-python.sh b/.evergreen/scripts/setup-uv-python.sh new file mode 100755 index 0000000000..a32e4a8f92 --- /dev/null +++ b/.evergreen/scripts/setup-uv-python.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# Set up the UV_PYTHON variable. +set -eu + +HERE=$(dirname ${BASH_SOURCE:-$0}) +HERE="$( cd -- "$HERE" > /dev/null 2>&1 && pwd )" + +# Use min supported version by default. +_python="3.10" + +# Source the env files to pick up common variables. +if [ -f $HERE/env.sh ]; then + . $HERE/env.sh +fi + +# Get variables defined in test-env.sh. +if [ -f $HERE/test-env.sh ]; then + . $HERE/test-env.sh +fi + +if [ -z "${UV_PYTHON:-}" ]; then + set -x + # Translate a TOOLCHAIN_VERSION to UV_PYTHON. + if [ -n "${TOOLCHAIN_VERSION:-}" ]; then + _python=$TOOLCHAIN_VERSION + if [ "$(uname -s)" = "Darwin" ]; then + if [[ "$_python" == *"t"* ]]; then + binary_name="python3t" + framework_dir="PythonT" + else + binary_name="python3" + framework_dir="Python" + fi + _python=$(echo "$_python" | sed 's/t//g') + _python="/Library/Frameworks/$framework_dir.Framework/Versions/$_python/bin/$binary_name" + elif [ "Windows_NT" = "${OS:-}" ]; then + _python=$(echo $_python | cut -d. -f1,2 | sed 's/\.//g; s/t//g') + if [[ "$TOOLCHAIN_VERSION" == *"t"* ]]; then + _exe="python${TOOLCHAIN_VERSION}.exe" + else + _exe="python.exe" + fi + if [ -n "${IS_WIN32:-}" ]; then + _python="C:/python/32/Python${_python}/${_exe}" + else + _python="C:/python/Python${_python}/${_exe}" + fi + elif [ -d "/opt/python/$_python/bin" ]; then + _python="/opt/python/$_python/bin/python3" + fi + fi + export UV_PYTHON="$_python" +fi diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 3f0a8cc7f9..7908836f50 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -31,8 +31,7 @@ "NO_EXT", "MONGODB_API_VERSION", "DEBUG_LOG", - "PYTHON_BINARY", - "PYTHON_VERSION", + "UV_PYTHON", "REQUIRE_FIPS", "IS_WIN32", ] diff --git a/.evergreen/setup-spawn-host.sh b/.evergreen/setup-spawn-host.sh index bada61e568..3db18d15ab 100755 --- a/.evergreen/setup-spawn-host.sh +++ b/.evergreen/setup-spawn-host.sh @@ -15,5 +15,4 @@ echo "Copying files to $target..." rsync -az -e ssh --exclude '.git' --filter=':- .gitignore' -r . $target:$remote_dir echo "Copying files to $target... done" -ssh $target $remote_dir/.evergreen/scripts/setup-system.sh -ssh $target "cd $remote_dir && PYTHON_BINARY=${PYTHON_BINARY:-} .evergreen/scripts/setup-dev-env.sh" +ssh $target "$remote_dir/.evergreen/scripts/setup-system.sh" diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh deleted file mode 100755 index dadb7db084..0000000000 --- a/.evergreen/utils.sh +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/bash -# Utility functions used by pymongo evergreen scripts. -set -eu - -find_python3() { - PYTHON="" - # Find a suitable toolchain version, if available. - if [ "$(uname -s)" = "Darwin" ]; then - PYTHON="/Library/Frameworks/Python.Framework/Versions/3.10/bin/python3" - elif [ "Windows_NT" = "${OS:-}" ]; then # Magic variable in cygwin - PYTHON="C:/python/Python310/python.exe" - else - # Prefer our own toolchain, fall back to mongodb toolchain if it has Python 3.10+. - if [ -f "/opt/python/3.10/bin/python3" ]; then - PYTHON="/opt/python/Current/bin/python3" - elif is_python_310 "$(command -v /opt/mongodbtoolchain/v5/bin/python3)"; then - PYTHON="/opt/mongodbtoolchain/v5/bin/python3" - elif is_python_310 "$(command -v /opt/mongodbtoolchain/v4/bin/python3)"; then - PYTHON="/opt/mongodbtoolchain/v4/bin/python3" - elif is_python_310 "$(command -v /opt/mongodbtoolchain/v3/bin/python3)"; then - PYTHON="/opt/mongodbtoolchain/v3/bin/python3" - fi - fi - # Add a fallback system python3 if it is available and Python 3.10+. - if [ -z "$PYTHON" ]; then - if is_python_310 "$(command -v python3)"; then - PYTHON="$(command -v python3)" - fi - fi - if [ -z "$PYTHON" ]; then - echo "Cannot test without python3.10+ installed!" - exit 1 - fi - echo "$PYTHON" -} - -# Usage: -# createvirtualenv /path/to/python /output/path/for/venv -# * param1: Python binary to use for the virtualenv -# * param2: Path to the virtualenv to create -createvirtualenv () { - PYTHON=$1 - VENVPATH=$2 - - # Prefer venv - VENV="$PYTHON -m venv" - if [ "$(uname -s)" = "Darwin" ]; then - VIRTUALENV="$PYTHON -m virtualenv" - else - VIRTUALENV=$(command -v virtualenv 2>/dev/null || echo "$PYTHON -m virtualenv") - VIRTUALENV="$VIRTUALENV -p $PYTHON" - fi - if ! $VENV $VENVPATH 2>/dev/null; then - # Workaround for bug in older versions of virtualenv. - $VIRTUALENV $VENVPATH 2>/dev/null || $VIRTUALENV $VENVPATH - fi - if [ "Windows_NT" = "${OS:-}" ]; then - # Workaround https://bugs.python.org/issue32451: - # mongovenv/Scripts/activate: line 3: $'\r': command not found - dos2unix $VENVPATH/Scripts/activate || true - . $VENVPATH/Scripts/activate - else - . $VENVPATH/bin/activate - fi - - export PIP_QUIET=1 - python -m pip install --upgrade pip -} - -# Usage: -# testinstall /path/to/python /path/to/.whl ["no-virtualenv"] -# * param1: Python binary to test -# * param2: Path to the wheel to install -# * param3 (optional): If set to a non-empty string, don't create a virtualenv. Used in manylinux containers. -testinstall () { - PYTHON=$1 - RELEASE=$2 - NO_VIRTUALENV=$3 - PYTHON_IMPL=$(python -c "import platform; print(platform.python_implementation())") - - if [ -z "$NO_VIRTUALENV" ]; then - createvirtualenv $PYTHON venvtestinstall - PYTHON=python - fi - - $PYTHON -m pip install --upgrade $RELEASE - cd tools - - if [ "$PYTHON_IMPL" = "CPython" ]; then - $PYTHON fail_if_no_c.py - fi - - $PYTHON -m pip uninstall -y pymongo - cd .. - - if [ -z "$NO_VIRTUALENV" ]; then - deactivate - rm -rf venvtestinstall - fi -} - -# Function that returns success if the provided Python binary is version 3.10 or later -# Usage: -# is_python_310 /path/to/python -# * param1: Python binary -is_python_310() { - if [ -z "$1" ]; then - return 1 - elif $1 -c "import sys; exit(sys.version_info[:2] < (3, 10))"; then - # runs when sys.version_info[:2] >= (3, 10) - return 0 - else - return 1 - fi -} - - -# Function that gets a python binary given a python version string. -# Versions can be of the form 3.xx or pypy3.xx. -get_python_binary() { - version=$1 - if [ "$(uname -s)" = "Darwin" ]; then - if [[ "$version" == *"t"* ]]; then - binary_name="python3t" - framework_dir="PythonT" - else - binary_name="python3" - framework_dir="Python" - fi - version=$(echo "$version" | sed 's/t//g') - PYTHON="/Library/Frameworks/$framework_dir.Framework/Versions/$version/bin/$binary_name" - elif [ "Windows_NT" = "${OS:-}" ]; then - version=$(echo $version | cut -d. -f1,2 | sed 's/\.//g; s/t//g') - if [ -n "${IS_WIN32:-}" ]; then - PYTHON="C:/python/32/Python$version/python.exe" - else - PYTHON="C:/python/Python$version/python.exe" - fi - else - PYTHON="/opt/python/$version/bin/python3" - fi - if is_python_310 "$(command -v $PYTHON)"; then - echo "$PYTHON" - else - echo "Could not find suitable python binary for '$version'" >&2 - return 1 - fi -} diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index a057570f3f..4685ba2d92 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -59,7 +59,7 @@ jobs: matrix: # Tests currently only pass on ubuntu on GitHub Actions. os: [ubuntu-latest] - python-version: ["3.10", "pypy-3.10", "3.13t"] + python-version: ["3.10", "pypy-3.11", "3.13t"] mongodb-version: ["8.0"] name: CPython ${{ matrix.python-version }}-${{ matrix.os }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a8881db9cb..2cf15a9838 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -194,7 +194,7 @@ the pages will re-render and the browser will automatically refresh. - Run `just install` to set a local virtual environment, or you can manually create a virtual environment and run `pytest` directly. If you want to use a specific - version of Python, remove the `.venv` folder and set `PYTHON_BINARY` before running `just install`. + version of Python, set `UV_PYTHON` before running `just install`. - Ensure you have started the appropriate Mongo Server(s). You can run `just run-server` with optional args to set up the server. All given options will be passed to [`run-orchestration.sh`](https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-orchestration.sh). Run `$DRIVERS_TOOLS/evergreen/run-orchestration.sh -h` @@ -335,7 +335,7 @@ Locally you can run: - Run `just run-server`. - Run `just setup-tests`. -- Run `UV_PYTHON=3.13t just run-tests`. +- Run `UV_PYTHON=3.14t just run-tests`. ### AWS Lambda tests @@ -399,6 +399,16 @@ To run any of the test suites with minimum supported dependencies, pass `--test- - If there are any special test considerations, including not running `pytest` at all, handle it in `.evergreen/scripts/run_tests.py`. - If there are any services or atlas clusters to teardown, handle them in `.evergreen/scripts/teardown_tests.py`. - Add functions to generate the test variant(s) and task(s) to the `.evergreen/scripts/generate_config.py`. +- There are some considerations about the Python version used in the test: + - If a specific version of Python is needed in a task that is running on variants with a toolchain, use +``TOOLCHAIN_VERSION`` (e.g. `TOOLCHAIN_VERSION=3.10`). The actual path lookup needs to be done on the host, since +tasks are host-agnostic. + - If a specific Python binary is needed (for example on the FIPS host), set `UV_PYTHON=/path/to/python`. + - If a specific Python version is needed and the toolchain will not be available, use `UV_PYTHON` (e.g. `UV_PYTHON=3.11`). + - The default if neither ``TOOLCHAIN_VERSION`` or ``UV_PYTHON`` is set is to use UV to install the minimum + supported version of Python and use that. This ensures a consistent behavior across host types that do not + have the Python toolchain (e.g. Azure VMs), by having a known version of Python with the build headers (`Python.h`) + needed to build the C extensions. - Regenerate the test variants and tasks using `pre-commit run --all-files generate-config`. - Make sure to add instructions for running the test suite to `CONTRIBUTING.md`. diff --git a/doc/changelog.rst b/doc/changelog.rst index f3eb4f6f23..47d3fafd66 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -6,9 +6,9 @@ Changes in Version 4.16.0 (XXXX/XX/XX) PyMongo 4.16 brings a number of changes including: -.. warning:: PyMongo 4.16 drops support for Python 3.9: Python 3.10+ is now required. +.. warning:: PyMongo 4.16 drops support for Python 3.9 and PyPy 3.10: Python 3.10+ or PyPy 3.11+ is now required. -- Dropped support for Python 3.9. +- Dropped support for Python 3.9 and PyPy 3.10. - Removed invalid documents from :class:`bson.errors.InvalidDocument` error messages as doing so may leak sensitive user data. Instead, invalid documents are stored in :attr:`bson.errors.InvalidDocument.document`. diff --git a/justfile b/justfile index 17b95e87b7..92bdee5be3 100644 --- a/justfile +++ b/justfile @@ -18,7 +18,6 @@ resync: install: bash .evergreen/scripts/setup-dev-env.sh - uvx pre-commit install [group('docs')] docs: && resync diff --git a/pyproject.toml b/pyproject.toml index 623eb6c164..ef7140eddf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,8 @@ name = "pymongo" dynamic = ["version", "dependencies", "optional-dependencies"] description = "PyMongo - the Official MongoDB Python driver" readme = "README.md" -license = {file="LICENSE"} +license = "Apache-2.0" +license-files = ["LICENSE"] requires-python = ">=3.9" authors = [ { name = "The MongoDB Python Team" }, @@ -22,7 +23,6 @@ keywords = [ classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", diff --git a/requirements/docs.txt b/requirements/docs.txt index 5543a62695..54ebf3625d 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -3,4 +3,4 @@ sphinx_rtd_theme>=2,<4 readthedocs-sphinx-search~=0.3 sphinxcontrib-shellcheck>=1,<2 sphinx-autobuild>=2020.9.1 -furo==2025.7.19 +furo==2025.9.25 diff --git a/uv.lock b/uv.lock index 480f64c263..f9a389c896 100644 --- a/uv.lock +++ b/uv.lock @@ -633,7 +633,7 @@ wheels = [ [[package]] name = "furo" -version = "2025.7.19" +version = "2025.9.25" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "accessible-pygments" }, @@ -644,9 +644,9 @@ dependencies = [ { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "sphinx-basic-ng" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d0/69/312cd100fa45ddaea5a588334d2defa331ff427bcb61f5fe2ae61bdc3762/furo-2025.7.19.tar.gz", hash = "sha256:4164b2cafcf4023a59bb3c594e935e2516f6b9d35e9a5ea83d8f6b43808fe91f", size = 1662054, upload-time = "2025-07-19T10:52:09.754Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/29/ff3b83a1ffce74676043ab3e7540d398e0b1ce7660917a00d7c4958b93da/furo-2025.9.25.tar.gz", hash = "sha256:3eac05582768fdbbc2bdfa1cdbcdd5d33cfc8b4bd2051729ff4e026a1d7e0a98", size = 1662007, upload-time = "2025-09-25T21:37:19.221Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/34/2b07b72bee02a63241d654f5d8af87a2de977c59638eec41ca356ab915cd/furo-2025.7.19-py3-none-any.whl", hash = "sha256:bdea869822dfd2b494ea84c0973937e35d1575af088b6721a29c7f7878adc9e3", size = 342175, upload-time = "2025-07-19T10:52:02.399Z" }, + { url = "https://files.pythonhosted.org/packages/ba/69/964b55f389c289e16ba2a5dfe587c3c462aac09e24123f09ddf703889584/furo-2025.9.25-py3-none-any.whl", hash = "sha256:2937f68e823b8e37b410c972c371bc2b1d88026709534927158e0cb3fac95afe", size = 340409, upload-time = "2025-09-25T21:37:17.244Z" }, ] [[package]] @@ -1164,7 +1164,7 @@ requires-dist = [ { name = "certifi", marker = "(os_name == 'nt' and extra == 'ocsp') or (sys_platform == 'darwin' and extra == 'ocsp')", specifier = ">=2023.7.22" }, { name = "cryptography", marker = "extra == 'ocsp'", specifier = ">=2.5" }, { name = "dnspython", specifier = ">=2.6.1,<3.0.0" }, - { name = "furo", marker = "extra == 'docs'", specifier = "==2025.7.19" }, + { name = "furo", marker = "extra == 'docs'", specifier = "==2025.9.25" }, { name = "importlib-metadata", marker = "python_full_version < '3.13' and extra == 'test'", specifier = ">=7.0" }, { name = "pykerberos", marker = "os_name != 'nt' and extra == 'gssapi'" }, { name = "pymongo-auth-aws", marker = "extra == 'aws'", specifier = ">=1.1.0,<2.0.0" },