From a5f6d638b9e2243cb03202c996f54b2d56022aca Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 22 Oct 2025 17:22:22 -0500 Subject: [PATCH 1/8] PYTHON-5615 Use uv python when python toolchain is not available (#2597) --- .evergreen/combine-coverage.sh | 19 +- .evergreen/generated_configs/functions.yml | 8 +- .evergreen/generated_configs/tasks.yml | 631 ++++++++++---------- .evergreen/generated_configs/variants.yml | 10 +- .evergreen/run-mongodb-aws-ecs-test.sh | 12 +- .evergreen/run-tests.sh | 2 + .evergreen/scripts/check-import-time.sh | 10 +- .evergreen/scripts/generate_config.py | 41 +- .evergreen/scripts/generate_config_utils.py | 26 - .evergreen/scripts/install-dependencies.sh | 57 +- .evergreen/scripts/kms_tester.py | 4 +- .evergreen/scripts/oidc_tester.py | 2 +- .evergreen/scripts/run_tests.py | 13 +- .evergreen/scripts/setup-dev-env.sh | 73 ++- .evergreen/scripts/setup-system.sh | 6 +- .evergreen/scripts/setup-uv-python.sh | 53 ++ .evergreen/scripts/setup_tests.py | 3 +- .evergreen/setup-spawn-host.sh | 3 +- .evergreen/utils.sh | 148 ----- CONTRIBUTING.md | 14 +- justfile | 1 - 21 files changed, 483 insertions(+), 653 deletions(-) create mode 100755 .evergreen/scripts/setup-uv-python.sh delete mode 100755 .evergreen/utils.sh diff --git a/.evergreen/combine-coverage.sh b/.evergreen/combine-coverage.sh index 36266c184..5f04f72ad 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 ce9564884..4b53ac6ac 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 9a7f16f54..cb7ae1e6c 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,21 +310,21 @@ 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.11 commands: - func: assume ec2 role - func: run tests vars: - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: [test-no-orchestration, python-pypy3.11] # No toolchain tests @@ -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 @@ -2527,7 +2528,7 @@ tasks: AUTH: noauth SSL: ssl TOPOLOGY: replica_set - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - server-version @@ -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 @@ -2734,7 +2735,7 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - server-version @@ -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 @@ -2879,7 +2880,7 @@ tasks: AUTH: auth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version @@ -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,7 +2943,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster COVERAGE: "1" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" TEST_NAME: default_async tags: - server-version @@ -2961,7 +2962,7 @@ tasks: AUTH: noauth SSL: ssl TOPOLOGY: sharded_cluster - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version @@ -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 @@ -3086,7 +3087,7 @@ tasks: AUTH: noauth SSL: nossl TOPOLOGY: standalone - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - server-version @@ -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 @@ -3217,7 +3218,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard @@ -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 @@ -3351,7 +3352,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard @@ -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 @@ -3730,7 +3731,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "7.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard @@ -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 @@ -3842,7 +3843,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "8.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard @@ -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 @@ -3888,7 +3889,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_async tags: - test-standard @@ -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 @@ -4002,7 +4003,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: rapid - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 TEST_NAME: default_sync tags: - test-standard @@ -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,7 +4136,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-4.2 @@ -4156,7 +4157,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "4.2" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-4.2 @@ -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 @@ -4200,7 +4201,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "4.4" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-4.4 @@ -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,7 +4286,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-non-standard - server-5.0 @@ -4306,7 +4307,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-5.0 @@ -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,7 +4393,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "6.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-non-standard - server-6.0 @@ -4413,7 +4414,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: "6.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-6.0 @@ -4435,7 +4436,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "7.0" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-non-standard - server-7.0 @@ -4456,7 +4457,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: "7.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-7.0 @@ -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,7 +4543,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-non-standard - server-8.0 @@ -4563,7 +4564,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-8.0 @@ -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 @@ -4629,7 +4630,7 @@ tasks: SSL: ssl TOPOLOGY: replica_set VERSION: latest - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-latest @@ -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,7 +4738,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-non-standard - server-rapid @@ -4758,7 +4759,7 @@ tasks: SSL: nossl TOPOLOGY: standalone VERSION: rapid - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-non-standard - server-rapid @@ -4782,7 +4783,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-standard-auth - server-4.2 @@ -4803,7 +4804,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.2" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-4.2 @@ -4825,7 +4826,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: "3.11" + TOOLCHAIN_VERSION: "3.11" tags: - test-standard-auth - server-4.4 @@ -4846,7 +4847,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "4.4" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-4.4 @@ -4868,7 +4869,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: "3.12" + TOOLCHAIN_VERSION: "3.12" tags: - test-standard-auth - server-5.0 @@ -4889,7 +4890,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "5.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-5.0 @@ -4911,7 +4912,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: "3.13" + TOOLCHAIN_VERSION: "3.13" tags: - test-standard-auth - server-6.0 @@ -4932,7 +4933,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "6.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-6.0 @@ -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 @@ -4976,7 +4977,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "7.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-7.0 @@ -4998,7 +4999,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: "3.14" + TOOLCHAIN_VERSION: "3.14" tags: - test-standard-auth - server-8.0 @@ -5019,7 +5020,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: "8.0" - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-8.0 @@ -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 @@ -5063,7 +5064,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: latest - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-latest @@ -5085,7 +5086,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: "3.10" + TOOLCHAIN_VERSION: "3.10" tags: - test-standard-auth - server-rapid @@ -5106,7 +5107,7 @@ tasks: SSL: ssl TOPOLOGY: sharded_cluster VERSION: rapid - PYTHON_VERSION: pypy3.11 + TOOLCHAIN_VERSION: pypy3.11 tags: - test-standard-auth - server-rapid diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 9bae5f468..816ff8d18 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 b8330de51..414c7a0a2 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 c14215244..095b7938d 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 f7a1117b9..ce4e83470 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 daec0841d..310da42f9 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 28ee45f9b..a32092f5b 100644 --- a/.evergreen/scripts/generate_config_utils.py +++ b/.evergreen/scripts/generate_config_utils.py @@ -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 23d865d0d..8df2af79c 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 e3833ae63..9bafdc1f6 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 ac2960371..a8949a938 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 c1c29c58b..9c8101c5b 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 209857d54..fa5f86d79 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 +# Handle the value for UV_PYTHON. +. $HERE/setup-uv-python.sh -if [ -z "${PYTHON_BINARY:-}" ]; then - if [ -n "${PYTHON_VERSION:-}" ]; then - PYTHON_BINARY=$(get_python_binary $PYTHON_VERSION) - else - PYTHON_BINARY=$(find_python3) +# 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" + if [ ! -f .git/hooks/pre-commit ]; then + uvx pre-commit install + fi + fi 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 -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 9158414cc..bd7e2dd4b 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 000000000..a32e4a8f9 --- /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 3f0a8cc7f..7908836f5 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -31,8 +31,7 @@ PASS_THROUGH_ENV = [ "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 bada61e56..3db18d15a 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 dadb7db08..000000000 --- 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/CONTRIBUTING.md b/CONTRIBUTING.md index a8881db9c..2cf15a983 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/justfile b/justfile index 17b95e87b..92bdee5be 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 From 0c8a22b87d40d2afcec65de08c5f76505fa03091 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Fri, 24 Oct 2025 15:26:46 -0400 Subject: [PATCH 2/8] PYTHON-5627 - Update feedback link (#2601) --- doc/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.rst b/doc/index.rst index 85812d1b1..9a2c3eb6b 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -37,7 +37,7 @@ project. Feature Requests / Feedback --------------------------- -Use our `feedback engine `_ +Use our `feedback engine `_ to send us feature requests and general feedback about PyMongo. Contributing From fd025503491e2bc939d8272770623c47dbaa3fd7 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Mon, 27 Oct 2025 11:41:14 -0400 Subject: [PATCH 3/8] PYTHON-5628 - Update the link for help in the documentation (#2602) --- doc/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.rst b/doc/index.rst index 9a2c3eb6b..17b12e51a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -22,7 +22,7 @@ work with MongoDB from Python. Getting Help ------------ If you're having trouble or have questions about PyMongo, ask your question on -our `MongoDB Community Forum `_. +one of the platforms listed on `Technical Support `_. You may also want to consider a `commercial support subscription `_. Once you get an answer, it'd be great if you could work it back into this From b607ef144cf0c1e379f8c83677a614cd44670722 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Wed, 29 Oct 2025 14:30:18 -0400 Subject: [PATCH 4/8] PYTHON-5214 - Improve BSON decoding InvalidBSON error message (#2605) --- bson/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bson/__init__.py b/bson/__init__.py index d260fb876..ebb1bd0cc 100644 --- a/bson/__init__.py +++ b/bson/__init__.py @@ -1109,7 +1109,9 @@ def _decode_all(data: _ReadableBuffer, opts: CodecOptions[_DocumentType]) -> lis while position < end: obj_size = _UNPACK_INT_FROM(data, position)[0] if data_len - position < obj_size: - raise InvalidBSON("invalid object size") + raise InvalidBSON( + f"invalid object size: expected {obj_size}, got {data_len - position}" + ) obj_end = position + obj_size - 1 if data[obj_end] != 0: raise InvalidBSON("bad eoo") From 5f00966f9ce591cbff982bea56df888875b80fb7 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Wed, 29 Oct 2025 14:31:25 -0400 Subject: [PATCH 5/8] [TASK]-[PYTHON-5623]: Change with_transaction callback return type to Awaitable (#2594) Co-authored-by: Logan Pulley --- doc/changelog.rst | 16 ++++++++++++++++ pymongo/asynchronous/client_session.py | 4 ++-- test/asynchronous/test_transactions.py | 12 ++++++++++++ test/test_transactions.py | 12 ++++++++++++ tools/synchro.py | 8 ++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index 47d3fafd6..52e282228 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -17,6 +17,22 @@ PyMongo 4.16 brings a number of changes including: - Removed support for Eventlet. Eventlet is actively being sunset by its maintainers and has compatibility issues with PyMongo's dnspython dependency. +Changes in Version 4.15.4 (2025/10/21) +-------------------------------------- + +Version 4.15.4 is a bug fix release. + +- Relaxed the callback type of :meth:`~pymongo.asynchronous.client_session.AsyncClientSession.with_transaction` to allow the broader Awaitable type rather than only Coroutine objects. +- Added the missing Python 3.14 trove classifier to the package metadata. + +Issues Resolved +............... + +See the `PyMongo 4.15.4 release notes in JIRA`_ for the list of resolved issues +in this release. + +.. _PyMongo 4.15.4 release notes in JIRA: https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&version=47237 + Changes in Version 4.15.3 (2025/10/07) -------------------------------------- diff --git a/pymongo/asynchronous/client_session.py b/pymongo/asynchronous/client_session.py index 8674e9844..6ab3b3998 100644 --- a/pymongo/asynchronous/client_session.py +++ b/pymongo/asynchronous/client_session.py @@ -143,8 +143,8 @@ from typing import ( TYPE_CHECKING, Any, AsyncContextManager, + Awaitable, Callable, - Coroutine, Mapping, MutableMapping, NoReturn, @@ -604,7 +604,7 @@ class AsyncClientSession: async def with_transaction( self, - callback: Callable[[AsyncClientSession], Coroutine[Any, Any, _T]], + callback: Callable[[AsyncClientSession], Awaitable[_T]], read_concern: Optional[ReadConcern] = None, write_concern: Optional[WriteConcern] = None, read_preference: Optional[_ServerMode] = None, diff --git a/test/asynchronous/test_transactions.py b/test/asynchronous/test_transactions.py index 478710362..29c5d2642 100644 --- a/test/asynchronous/test_transactions.py +++ b/test/asynchronous/test_transactions.py @@ -15,6 +15,7 @@ """Execute Transactions Spec tests.""" from __future__ import annotations +import asyncio import sys from io import BytesIO from test.asynchronous.utils_spec_runner import AsyncSpecRunner @@ -468,6 +469,17 @@ class TestTransactionsConvenientAPI(AsyncTransactionsBase): async with self.client.start_session() as s: self.assertEqual(await s.with_transaction(callback2), "Foo") + @async_client_context.require_transactions + @async_client_context.require_async + async def test_callback_awaitable_no_coroutine(self): + def callback(_): + future = asyncio.Future() + future.set_result("Foo") + return future + + async with self.client.start_session() as s: + self.assertEqual(await s.with_transaction(callback), "Foo") + @async_client_context.require_transactions async def test_callback_not_retried_after_timeout(self): listener = OvertCommandListener() diff --git a/test/test_transactions.py b/test/test_transactions.py index 813d6a688..37e1a249e 100644 --- a/test/test_transactions.py +++ b/test/test_transactions.py @@ -15,6 +15,7 @@ """Execute Transactions Spec tests.""" from __future__ import annotations +import asyncio import sys from io import BytesIO from test.utils_spec_runner import SpecRunner @@ -460,6 +461,17 @@ class TestTransactionsConvenientAPI(TransactionsBase): with self.client.start_session() as s: self.assertEqual(s.with_transaction(callback2), "Foo") + @client_context.require_transactions + @client_context.require_async + def test_callback_awaitable_no_coroutine(self): + def callback(_): + future = asyncio.Future() + future.set_result("Foo") + return future + + with self.client.start_session() as s: + self.assertEqual(s.with_transaction(callback), "Foo") + @client_context.require_transactions def test_callback_not_retried_after_timeout(self): listener = OvertCommandListener() diff --git a/tools/synchro.py b/tools/synchro.py index e3d483550..1444b2299 100644 --- a/tools/synchro.py +++ b/tools/synchro.py @@ -322,6 +322,14 @@ def translate_coroutine_types(lines: list[str]) -> list[str]: index = lines.index(type) new = type.replace(old, res.group(3)) lines[index] = new + coroutine_types = [line for line in lines if "Awaitable[" in line] + for type in coroutine_types: + res = re.search(r"Awaitable\[([A-z]+)\]", type) + if res: + old = res[0] + index = lines.index(type) + new = type.replace(old, res.group(1)) + lines[index] = new return lines From f278e471d1637d297551477487b2d9ef25656374 Mon Sep 17 00:00:00 2001 From: Rogdham <3994389+Rogdham@users.noreply.github.com> Date: Fri, 31 Oct 2025 22:14:14 +0100 Subject: [PATCH 6/8] PYTHON-5522: Support std lib zstandard in 3.14 (#2592) --- .evergreen/generated_configs/variants.yml | 9 + .evergreen/scripts/generate_config.py | 16 ++ README.md | 3 +- doc/changelog.rst | 1 + pymongo/asynchronous/mongo_client.py | 4 +- pymongo/compression_support.py | 42 +++-- pymongo/synchronous/mongo_client.py | 4 +- requirements/zstd.txt | 2 +- uv.lock | 205 ++++++++++++---------- 9 files changed, 172 insertions(+), 114 deletions(-) diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 816ff8d18..4efa33899 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -133,6 +133,15 @@ buildvariants: - rhel87-small expansions: COMPRESSOR: zstd + - name: compression-zstd-ubuntu-22 + tasks: + - name: .test-standard !.server-4.2 !.server-4.4 !.server-5.0 .python-3.14 + - name: .test-standard !.server-4.2 !.server-4.4 !.server-5.0 .python-3.14t + display_name: Compression zstd Ubuntu-22 + run_on: + - ubuntu2204-small + expansions: + COMPRESSOR: ztsd # Coverage report tests - name: coverage-report diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 310da42f9..26580cfae 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -194,6 +194,22 @@ def create_compression_variants(): expansions=expansions, ) ) + # Add explicit tests with compression.zstd support on linux. + host = HOSTS["ubuntu22"] + expansions = dict(COMPRESSOR="ztsd") + tasks = [ + ".test-standard !.server-4.2 !.server-4.4 !.server-5.0 .python-3.14", + ".test-standard !.server-4.2 !.server-4.4 !.server-5.0 .python-3.14t", + ] + display_name = get_variant_name(f"Compression {compressor}", host) + variants.append( + create_variant( + tasks, + display_name, + host=host, + expansions=expansions, + ) + ) return variants diff --git a/README.md b/README.md index ba1688cb7..b8bfa294a 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,8 @@ python -m pip install "pymongo[snappy]" ``` Wire protocol compression with zstandard requires -[zstandard](https://pypi.org/project/zstandard): +[backports.zstd](https://pypi.org/project/backports.zstd) +when used with Python versions before 3.14: ```bash python -m pip install "pymongo[zstd]" diff --git a/doc/changelog.rst b/doc/changelog.rst index 52e282228..dbf24aaaa 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -16,6 +16,7 @@ PyMongo 4.16 brings a number of changes including: Python 3.10+. The minimum version is ``2.6.1`` to account for `CVE-2023-29483 `_. - Removed support for Eventlet. Eventlet is actively being sunset by its maintainers and has compatibility issues with PyMongo's dnspython dependency. +- Use Zstandard support from the standard library for Python 3.14+, and use ``backports.zstd`` for older versions. Changes in Version 4.15.4 (2025/10/21) -------------------------------------- diff --git a/pymongo/asynchronous/mongo_client.py b/pymongo/asynchronous/mongo_client.py index d9bf808d5..2a8ff4339 100644 --- a/pymongo/asynchronous/mongo_client.py +++ b/pymongo/asynchronous/mongo_client.py @@ -422,8 +422,8 @@ class AsyncMongoClient(common.BaseObject, Generic[_DocumentType]): with the server. Currently supported options are "snappy", "zlib" and "zstd". Support for snappy requires the `python-snappy `_ package. - zlib support requires the Python standard library zlib module. zstd - requires the `zstandard `_ + zlib support requires the Python standard library zlib module. For + Python before 3.14 zstd requires the `backports.zstd `_ package. By default no compression is used. Compression support must also be enabled on the server. MongoDB 3.6+ supports snappy and zlib compression. MongoDB 4.2+ adds support for zstd. diff --git a/pymongo/compression_support.py b/pymongo/compression_support.py index 64ffe052e..f7ed1aadc 100644 --- a/pymongo/compression_support.py +++ b/pymongo/compression_support.py @@ -13,6 +13,7 @@ # limitations under the License. from __future__ import annotations +import sys import warnings from typing import Any, Iterable, Optional, Union @@ -44,7 +45,10 @@ def _have_zlib() -> bool: def _have_zstd() -> bool: try: - import zstandard # noqa: F401 + if sys.version_info >= (3, 14): + from compression import zstd + else: + from backports import zstd # noqa: F401 return True except ImportError: @@ -79,11 +83,18 @@ def validate_compressors(dummy: Any, value: Union[str, Iterable[str]]) -> list[s ) elif compressor == "zstd" and not _have_zstd(): compressors.remove(compressor) - warnings.warn( - "Wire protocol compression with zstandard is not available. " - "You must install the zstandard module for zstandard support.", - stacklevel=2, - ) + if sys.version_info >= (3, 14): + warnings.warn( + "Wire protocol compression with zstandard is not available. " + "The compression.zstd module is not available.", + stacklevel=2, + ) + else: + warnings.warn( + "Wire protocol compression with zstandard is not available. " + "You must install the backports.zstd module for zstandard support.", + stacklevel=2, + ) return compressors @@ -144,12 +155,12 @@ class ZstdContext: @staticmethod def compress(data: bytes) -> bytes: - # ZstdCompressor is not thread safe. - # TODO: Use a pool? + if sys.version_info >= (3, 14): + from compression import zstd + else: + from backports import zstd - import zstandard - - return zstandard.ZstdCompressor().compress(data) + return zstd.compress(data) def decompress(data: bytes | memoryview, compressor_id: int) -> bytes: @@ -166,10 +177,11 @@ def decompress(data: bytes | memoryview, compressor_id: int) -> bytes: return zlib.decompress(data) elif compressor_id == ZstdContext.compressor_id: - # ZstdDecompressor is not thread safe. - # TODO: Use a pool? - import zstandard + if sys.version_info >= (3, 14): + from compression import zstd + else: + from backports import zstd - return zstandard.ZstdDecompressor().decompress(data) + return zstd.decompress(data) else: raise ValueError("Unknown compressorId %d" % (compressor_id,)) diff --git a/pymongo/synchronous/mongo_client.py b/pymongo/synchronous/mongo_client.py index 6e716402f..fea2d6dae 100644 --- a/pymongo/synchronous/mongo_client.py +++ b/pymongo/synchronous/mongo_client.py @@ -422,8 +422,8 @@ class MongoClient(common.BaseObject, Generic[_DocumentType]): with the server. Currently supported options are "snappy", "zlib" and "zstd". Support for snappy requires the `python-snappy `_ package. - zlib support requires the Python standard library zlib module. zstd - requires the `zstandard `_ + zlib support requires the Python standard library zlib module. For + Python before 3.14 zstd requires the `backports.zstd `_ package. By default no compression is used. Compression support must also be enabled on the server. MongoDB 3.6+ supports snappy and zlib compression. MongoDB 4.2+ adds support for zstd. diff --git a/requirements/zstd.txt b/requirements/zstd.txt index 864700d2b..26c899e04 100644 --- a/requirements/zstd.txt +++ b/requirements/zstd.txt @@ -1 +1 @@ -zstandard +backports.zstd>=1.0.0;python_version<'3.14' diff --git a/uv.lock b/uv.lock index f9a389c89..c021943b0 100644 --- a/uv.lock +++ b/uv.lock @@ -88,6 +88,116 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" }, ] +[[package]] +name = "backports-zstd" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/12/8080a1b7bce609eb250813519f550b36ad5950b64f0af2738c0fb53e7fb3/backports_zstd-1.0.0.tar.gz", hash = "sha256:8e99702fd4092c26624b914bcd140d03911a16445ba6a74435b29a190469cce3", size = 995991, upload-time = "2025-10-10T07:06:18.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/79/10389134d3a7e3099798ca55fc82abe9d7f49239c69c8d9c4979b091338c/backports_zstd-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34cd28f44f6b8f70ea5d86c2b3ba26d0d51f94606bd1f0c80bde1f820e8c82b2", size = 435682, upload-time = "2025-10-10T07:03:59.169Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6e/40d033accd0d54ee0b696f8f2ae0840bd4fae7255b3463ff46b210520e4f/backports_zstd-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f7ccfd860da6b4c0c1f0f68dc917483977383e1207bdee262d40369fe616fc8", size = 362079, upload-time = "2025-10-10T07:04:00.784Z" }, + { url = "https://files.pythonhosted.org/packages/73/47/a1ed28ffd9b956aadbde6ad9a8d4adeab38b5cbfdd1d3f3d485a1bb18eba/backports_zstd-1.0.0-cp310-cp310-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:65de196c84b0d2c44fb76a729041de3a292f0128ded1b5ff7c1c4eab948aae0b", size = 505978, upload-time = "2025-10-10T07:04:02.903Z" }, + { url = "https://files.pythonhosted.org/packages/0e/14/6ea8a2567881ce0a46b7c8376c336f366e6e5dfe84766c45fed7473f0649/backports_zstd-1.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1096d4504557d2deb9e71e1aef9914c651b7aa05c35276d77854fee7a4bdd09a", size = 475592, upload-time = "2025-10-10T07:04:04.275Z" }, + { url = "https://files.pythonhosted.org/packages/62/27/5782d0bb36adbeec58687a2abf7e1a1659af30782129355456551486794f/backports_zstd-1.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1a0db63d2a112c217a347789aecd38bdd17bc1030fa9d3d256d5d011231852f2", size = 581221, upload-time = "2025-10-10T07:04:05.759Z" }, + { url = "https://files.pythonhosted.org/packages/69/0b/accbbdbd24940b7a93d8064224b4eb304bd51d68a5e03fd2af3e2b5af268/backports_zstd-1.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0dfab6714325c29d621593b1e9198e47064bb755e601c3e79fde5211a16527f7", size = 640865, upload-time = "2025-10-10T07:04:07.236Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c4/7c5c5e47565e959a5dd6d2eae4e34e2ca46b6ba123ee1dd548c0c0d316f2/backports_zstd-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63076e558ba75b2c016257bdbe6b83b5b9a41fe5b6601b567f1e07890370f2f1", size = 491083, upload-time = "2025-10-10T07:04:09.04Z" }, + { url = "https://files.pythonhosted.org/packages/47/46/4ef914cfaf8a91fecd01e3d342fd506f450a06109c749a034e3a48ce97b2/backports_zstd-1.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cd445dcb1ec8a8aa38d3c4e9cda7991cacead193bb07cf002f60cfc002d8628", size = 481539, upload-time = "2025-10-10T07:04:10.532Z" }, + { url = "https://files.pythonhosted.org/packages/e6/f0/ae1dd6cf45d48b535fb6e5a77a107d6cc39db2ae8a9c060762d8fb6bcad2/backports_zstd-1.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d01aa1b91007edd00abc78b3cb7e10ad9394b54a75cbd76b1584524a3b238cfc", size = 509486, upload-time = "2025-10-10T07:04:11.763Z" }, + { url = "https://files.pythonhosted.org/packages/91/35/a4829b1715e965baa00ef52529f513c8c30de83d3d2f662cbd016ad8861a/backports_zstd-1.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d6bbb553640f7ed630223dae9ec93d6f56785d03db0c8385e0c4cfc88d54bdf4", size = 585584, upload-time = "2025-10-10T07:04:13.264Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b7/3d139188c2803b7e2944cc22ad7e2a974cc9773534c4dd736a136b671160/backports_zstd-1.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8d25adbe96f4a3fb6492d8d504e78c1641b06002ca2b578a0b24862ee9fd5a58", size = 631442, upload-time = "2025-10-10T07:04:14.655Z" }, + { url = "https://files.pythonhosted.org/packages/a5/72/442ada2be3fa510b0a93ca3f353c546c7626690029c3533dd348ea3c7730/backports_zstd-1.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dde864a9c6aaa94eafe4962f59916de3165e99b3fd4d2f6584cd116707aed8ff", size = 495142, upload-time = "2025-10-10T07:04:16.144Z" }, + { url = "https://files.pythonhosted.org/packages/4c/80/e26f98015801a790262f9637feaebf2028edebd915e196cc1507f4ee7b6f/backports_zstd-1.0.0-cp310-cp310-win32.whl", hash = "sha256:474847d1ac3ed2e4bfca2207bbfd5632110143ddd4fc6ea41ff5c5b05d2fda1d", size = 288590, upload-time = "2025-10-10T07:04:17.755Z" }, + { url = "https://files.pythonhosted.org/packages/db/39/f322cf4d8b3194353a5bc01db6f2829835d1df273e93ebd1607f130213b5/backports_zstd-1.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d2fb3f4d53b2f92a26e7fc34b313ac5eebd7ff437f37f8f5c308d72c844fbd7", size = 313505, upload-time = "2025-10-10T07:04:18.895Z" }, + { url = "https://files.pythonhosted.org/packages/b6/c0/e6ce5b66c48dfe29ec149eee01901be136071dd1692d6f99e14dbd7ba7d1/backports_zstd-1.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:525a1ecb62edd97c6695812fef0e4dc7c2faa5edf3057aa3d8ec9d2dbd0f7799", size = 288707, upload-time = "2025-10-10T07:04:19.968Z" }, + { url = "https://files.pythonhosted.org/packages/01/0a/cbf3f9cb7ca865eca93744d1b859ed50d28be3f64d83cfd96ad114ed88d6/backports_zstd-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:782923d65aa6d0c8c465c32563df70dbdd3e255532de2a2d26e13598fc5f85ae", size = 435683, upload-time = "2025-10-10T07:04:21.097Z" }, + { url = "https://files.pythonhosted.org/packages/c7/70/65f975ac0e1780963c5bcfae40e822724d7e4bfe902eeef3637a14fb56b1/backports_zstd-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6825598589ef9b8c0c4e574170d29d84400be24c2f172b81403435b33c8d103a", size = 362075, upload-time = "2025-10-10T07:04:22.382Z" }, + { url = "https://files.pythonhosted.org/packages/0a/22/007acd1b0af3a78188c2b71fd4a3284f005826bd93e234e73412944d7b99/backports_zstd-1.0.0-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:15863463b7f28049d4511f9f123c3b96d66c3de543315c21ef3bc6b001b20d01", size = 505978, upload-time = "2025-10-10T07:04:23.504Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d6/f0a148d3f0d0558ace2fc0e7d4f0cc648e88c212665cbf8df718037adde9/backports_zstd-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b39da619431f4782f3d8bb0d99a6067db571eab50579527ba168bcc12887d328", size = 475589, upload-time = "2025-10-10T07:04:24.791Z" }, + { url = "https://files.pythonhosted.org/packages/49/b5/32fcb6342cfa9ca5692b0344961aafd082887e4fad89248f890927522bad/backports_zstd-1.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:411da73bb3eadef58da781c55c6399fc6dba9b898ca05009410138fb1d7fef8d", size = 581218, upload-time = "2025-10-10T07:04:26.493Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/757aa4952b8f3d955bb62b72360940639c781fc4f39249f5ea40e0b8125b/backports_zstd-1.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1f8b0bc92f5be153a4878188ab0aeab5b9bbff3dc3e9d3ad3b19e29fe4932741", size = 640908, upload-time = "2025-10-10T07:04:27.837Z" }, + { url = "https://files.pythonhosted.org/packages/37/5f/075c31cbe58fffd8144bc482fea73d2833562159684430b3f1d402fa9f8d/backports_zstd-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34cd5bdb76448f2259ea371d6cd62a7e339021e1429fe3c386acb3e58c1f6c61", size = 491121, upload-time = "2025-10-10T07:04:29.045Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a0/4c4b9a85ff52fe90a3265aa9b5cb7b35bf1a2d48bd1ed4604d7fe1aabfc7/backports_zstd-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d251a49e80e1868e132e6edadfbef8dba7ded7751e59a41684cd6da38bbd3507", size = 481544, upload-time = "2025-10-10T07:04:30.174Z" }, + { url = "https://files.pythonhosted.org/packages/9c/0e/1bd54a04e9f236f5a8d426c00ce0a6d5af6d68735138e9887d5545311761/backports_zstd-1.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a54ea58ddeaab9a1385c368f84fca474b87b052087b62e56ac1ebd10cabac157", size = 509487, upload-time = "2025-10-10T07:04:31.386Z" }, + { url = "https://files.pythonhosted.org/packages/ef/eb/03a53be8a982e953acd8864d63ca1622ca309d9fbcf1f7ec5e2550b45057/backports_zstd-1.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d6272730803dc5b212615f50af7395f2b05155d9415e367492d6dac807edc949", size = 585574, upload-time = "2025-10-10T07:04:32.585Z" }, + { url = "https://files.pythonhosted.org/packages/5c/90/17810915587c2686e767a5cd2de014e902c76e0a242daf1c4a97544ba1f5/backports_zstd-1.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f6a27510ebb9e1cb877aaa26fc5e0303437bd2023e0a24976da854a3421e60e5", size = 631483, upload-time = "2025-10-10T07:04:34.107Z" }, + { url = "https://files.pythonhosted.org/packages/a4/22/d65a54a803061e475b66164c7d03d2ed889c32eaf32544c2e0d599c20628/backports_zstd-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c55f842917ac4405a9779476b1ec8219247f35d86673769cf2d3c140799d3e4a", size = 495147, upload-time = "2025-10-10T07:04:35.958Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/bdf4e76e148cfac7c324b74f76fbda83c5a587b8a85871bad09722729283/backports_zstd-1.0.0-cp311-cp311-win32.whl", hash = "sha256:c28cfbd6217ba4837d35cdd8cfd5dcf84ad54bffcb531734002e27dcc84c87ca", size = 288686, upload-time = "2025-10-10T07:04:37.132Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/726a07d04b85a687776b04b53a02b7d2c4b666d51b18c44fa2ddaadfe383/backports_zstd-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:f009996762b887d1bf9330ac0ce1e83608db0b881f63644ae30f2b6a290cd36b", size = 313630, upload-time = "2025-10-10T07:04:38.358Z" }, + { url = "https://files.pythonhosted.org/packages/52/e6/727584a8794fa28164e0795441d8b86f89c75a2368dec0aaaa086f7ac58c/backports_zstd-1.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:62ab49843fc7761383aa7bea8105ca70941797c7145647f71fa4340bfd3b747a", size = 288829, upload-time = "2025-10-10T07:04:39.602Z" }, + { url = "https://files.pythonhosted.org/packages/ba/22/2a68534673efe608d7b2d0de03595d5d1de629616a2f4e394813376eed21/backports_zstd-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f9afba11403cf03849464e0f1214b035970d43546a7cdd9d8ee31dc154889e78", size = 435990, upload-time = "2025-10-10T07:04:41.075Z" }, + { url = "https://files.pythonhosted.org/packages/3a/44/c3f06c172f128bf1160f6122df2a942440e36b8450cf4ba44c69465c5f55/backports_zstd-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86498856adc6e8c6f50cbfb1d4afd4e0997d5837fb225245d3fb26008f3c9412", size = 362142, upload-time = "2025-10-10T07:04:42.344Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0d/f46bba0f0df4dcd3d47160003b956b19329c25f63fe9e910aa17ca9fa0e5/backports_zstd-1.0.0-cp312-cp312-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:de915a8ecd290c601be7b7436291397b0ac1f7841c97c3a13777bb1065881773", size = 506399, upload-time = "2025-10-10T07:04:43.846Z" }, + { url = "https://files.pythonhosted.org/packages/92/a1/681e03e50379d72e06c3de796fb8cc5880fca8b70b82562b2eb712abf6d1/backports_zstd-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9fffb08c5c1b629c96813108183c8b02d6b07ed6ec81cca8d094089e749db4b5", size = 476222, upload-time = "2025-10-10T07:04:44.975Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ca/8b0a8b959668668c50af6bfad6fea564d2b6becdcffd998e03dfc04c3954/backports_zstd-1.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:064d4dc840bcfd8c5c9b37dcacd4fb27eac473c75006120015a9f88b73368c9b", size = 581678, upload-time = "2025-10-10T07:04:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/4f/9a/921ec253ad5a592da20bf8ab1a5be16b242722f193e02d7a3678702aeffc/backports_zstd-1.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0051911391c3f934bb48e8ca08f4319d94b08362a40d96a4b5534c60f00deca2", size = 640408, upload-time = "2025-10-10T07:04:48.178Z" }, + { url = "https://files.pythonhosted.org/packages/ca/8c/0826259b7076cdaaceda1d52f2859c771dc45efed155084a49f538f0ea2e/backports_zstd-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e5f3453f0ea32ccf262e11e711ef1a0a986903b8a3a3078bf93fafdd5cf311c", size = 494195, upload-time = "2025-10-10T07:04:49.326Z" }, + { url = "https://files.pythonhosted.org/packages/a9/a5/75b1c1e26e305f06a7cde591213d5b3c8591b06882ae635b8ffeb8df6f44/backports_zstd-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:33bce0351cd0ad7bd9f363740b894e65255eb93d16d05097ef1d60643ce1cc27", size = 482255, upload-time = "2025-10-10T07:04:50.722Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/7061610369a5dbadcddc6f340d5aa8304ae58aee07a6a851b8fa24638036/backports_zstd-1.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:820f3cd08c5c8672015b7e52bf04e3e707727e6576d988eadc1799c0c47b33d9", size = 509829, upload-time = "2025-10-10T07:04:52.014Z" }, + { url = "https://files.pythonhosted.org/packages/e6/28/afc0158ba3d5d5a03560348f9a79fb8a1e0d0ef98f1d176ab37aa887ed5e/backports_zstd-1.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4e327fe73bfc634e8b04b5e0f715c97680987d633f161fd4702027b34685be43", size = 586059, upload-time = "2025-10-10T07:04:53.255Z" }, + { url = "https://files.pythonhosted.org/packages/b4/0d/68f1fa86a79faee7f6533bced500ee622dde98c9b3b0ddab58a4fe6410d5/backports_zstd-1.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4055318ebb7f6ffad99dabd312706599c9e119c834d6c741a946c0d4b3e5be4e", size = 630869, upload-time = "2025-10-10T07:04:54.397Z" }, + { url = "https://files.pythonhosted.org/packages/83/e1/a529be674d179caf201e5e406dc70a2c4156e182fa777e43f43f6afa69c6/backports_zstd-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:79d3c879720ee4987782da55d728919f9294a8ea6fac76c9af84bc06f3b0f942", size = 498686, upload-time = "2025-10-10T07:04:55.593Z" }, + { url = "https://files.pythonhosted.org/packages/17/9a/075582e942841520c47535f9ff62b728a88565b737ae21dc99ebcc15ef61/backports_zstd-1.0.0-cp312-cp312-win32.whl", hash = "sha256:930ccc283fdf76d1acca9529acd6ccb6cd26cdaf684d69cc6f359683f90357be", size = 288822, upload-time = "2025-10-10T07:04:56.835Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/615cd31c0de23e330e13ba77a6aed9a1d27360ebdf5e68b078c54b8cdbdb/backports_zstd-1.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f1bb3e6d21ebfb22070288b7fb47bbb0baaae604890c4087edf5637debb6bd91", size = 313841, upload-time = "2025-10-10T07:04:58.003Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b8/87b2467bf82eabb4acd4651f193363ec04973baa35141be441bf9e9e98c0/backports_zstd-1.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:f5fe75e5996b5f4712235f9c63cdb7e5932a9cdf3a41232989f8a3ef1667f784", size = 288950, upload-time = "2025-10-10T07:04:59.279Z" }, + { url = "https://files.pythonhosted.org/packages/19/36/0182161a23009d5439e125d4af7b13d2df0292663e7f87141d5cf76d3060/backports_zstd-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c522469a67fef66998fd9eff2195512ca54d78c6fecdf1c466d2b7752dd810b", size = 435481, upload-time = "2025-10-10T07:05:00.833Z" }, + { url = "https://files.pythonhosted.org/packages/79/ce/6c235828d54d0027838316d9ce284b52e7bc266154f5e57086a7c7796691/backports_zstd-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c28546bcffb88ee38a742e3364338c49672d776ea2c73decc05fbf79f045797e", size = 361757, upload-time = "2025-10-10T07:05:02.422Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/7cbc80512df9b89ae39ab3920afbaad733d4b64390b4439e52ef3673da7b/backports_zstd-1.0.0-cp313-cp313-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:9719c14984ca99f5567a5974210d04c75aa02b0124653ee1b1d9a39bf0764fc6", size = 505673, upload-time = "2025-10-10T07:05:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/f8/bc/ea32d4698fac21fe6cc08a124ae21daa41be03f788f244791c47e31a4360/backports_zstd-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a31220e8544c2194c4a7c3bd9f7fb0eee3c0ce5f8306e55df762428159ff0512", size = 475879, upload-time = "2025-10-10T07:05:04.796Z" }, + { url = "https://files.pythonhosted.org/packages/bf/42/68344db3586455983bdcdffe51253fa4415908e700d50287249ad6589bc9/backports_zstd-1.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3571e35d6682119daf109678a68fa8a9e29f79487ee7ec2da63a7e97562acb8c", size = 581359, upload-time = "2025-10-10T07:05:05.977Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d0/3d153d78a52a46ce4c363680da7fbc593eeb314150f005c4bf7c2bd5b51f/backports_zstd-1.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:26ccb82bbeb36fffeb3865abe7df9b9b82d6462a488cd2f3c10e91c41c3103cc", size = 642203, upload-time = "2025-10-10T07:05:07.236Z" }, + { url = "https://files.pythonhosted.org/packages/11/c3/e31b4e591daec3eab2446db971f275d349aad36041236d5f067ab20fa1a9/backports_zstd-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d90cfb475d6d08c596ae77a7009cdda7374ecd79354fd75185cf029bf2204620", size = 490828, upload-time = "2025-10-10T07:05:08.446Z" }, + { url = "https://files.pythonhosted.org/packages/2d/80/ef7d02d846f710fc95c6d7eb3298ef6504e51f8707f24e1624d139f791d5/backports_zstd-1.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0b00c9c22cae8c1f87e2f23f9aeda7fee82ff671672b9f5a161a7ba094d9904b", size = 481638, upload-time = "2025-10-10T07:05:10.18Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9b/f32500bf26ef588ce4f6284f453532d08789e412a5ecd60c501c77c88f8f/backports_zstd-1.0.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a87c4491036954ae6d15edaf1e6d5b1941e13a9df14d6a9952899713fcfb0796", size = 509228, upload-time = "2025-10-10T07:05:11.313Z" }, + { url = "https://files.pythonhosted.org/packages/6d/67/f689055f90a2874578b2b3e7c84311c3007b2fa60c51454e8c432203f1c7/backports_zstd-1.0.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8ea8c5d283211bc21c9782db7a8504a275a5b97e883b0bf67f6903a3af48f3d3", size = 585789, upload-time = "2025-10-10T07:05:12.477Z" }, + { url = "https://files.pythonhosted.org/packages/86/53/dea52bd76a3ba519a4937e6cab6cbdcdc36b618090eabeac998f69d1bb97/backports_zstd-1.0.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e1d12f64d1bd535c782f30b33d1f60c060105d124f9ade22556fefbf36087776", size = 632571, upload-time = "2025-10-10T07:05:14.18Z" }, + { url = "https://files.pythonhosted.org/packages/43/c8/ce10a94132957f57860b9440fe726615a6a6e8c5fdfee565d8a1b3a573de/backports_zstd-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df08eb2735363a11a9222203c3e9a478d7569511bdd9aa2cc64a39e0403cf09a", size = 495124, upload-time = "2025-10-10T07:05:15.398Z" }, + { url = "https://files.pythonhosted.org/packages/8a/c0/830ea473e3c6133758a9a421157c8d4d5c65408d565336a59403e6bb0b29/backports_zstd-1.0.0-cp313-cp313-win32.whl", hash = "sha256:0309f924ec026d2174297754aeb97fe5fa665cfe0f8bc70e7bb82808a7adcd08", size = 288467, upload-time = "2025-10-10T07:05:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/75/5a/318d40e1589908a44532e2c850fedfaedbf4e7c75b6fa3cf4b532fcadc84/backports_zstd-1.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:d68f7f72579070bfef7890ba5316701c001e90b4455bb5c2591558b9d53a7f6e", size = 313680, upload-time = "2025-10-10T07:05:17.71Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c8/bb0067165e9b1066104a88536eac04cfac388abb5d500b3405cf783c96e8/backports_zstd-1.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:911a099122ce7cebed9e1ec64c1fa54a6ab461d6c7cec8d460d8b3a09bbd439f", size = 288699, upload-time = "2025-10-10T07:05:18.904Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0e/83badde9b389c198a9a45bccd38a9dc5baa7db92e531d4951b1c0686e29a/backports_zstd-1.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:fad9af0c89048a50e67bfd9e3509d710b268d4ae0e47a2bc945dca273a17286d", size = 436173, upload-time = "2025-10-10T07:05:20.083Z" }, + { url = "https://files.pythonhosted.org/packages/a1/92/d1f5e9f7e1afbb730020e8c7060d6101cad4aa20eb13b7cb98dda9414726/backports_zstd-1.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:1d0459de16491399e6b6d151213964395ba092ba21b7739756f0507533c8e44f", size = 362456, upload-time = "2025-10-10T07:05:21.367Z" }, + { url = "https://files.pythonhosted.org/packages/fa/0c/165b04a4bd9b39455e5d051f504acab6c5af3583939336bd2c77a2dc6398/backports_zstd-1.0.0-cp313-cp313t-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:2dcf4c080c0fe8f4ca8f1ff560756ae78e6fada721813c1506f8fd3399996646", size = 507618, upload-time = "2025-10-10T07:05:23.083Z" }, + { url = "https://files.pythonhosted.org/packages/72/45/868e6b66852b64766feb3a3ce28cc74dd86141120ac6740855f90239fb85/backports_zstd-1.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e26b558e0f2413e9499949dd75985a03be008287598916eaa75a67efc52e4f1b", size = 475518, upload-time = "2025-10-10T07:05:24.297Z" }, + { url = "https://files.pythonhosted.org/packages/44/ff/71021dae5e024d7e12b5078719582b26eeae984f5718846c135134288330/backports_zstd-1.0.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f0a0c11aee04e0a10e9688ef8d9014af888763507bea85a0d7a7ba5220272996", size = 580942, upload-time = "2025-10-10T07:05:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/7c/64/553009a1d449033fafba311d2e204b19ebb0dfdba069a639965fb6f0bc57/backports_zstd-1.0.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c8aa92bf9407ed1ba62234e085876b628ecd9d2636c0e1e23f2dacf3be21af2a", size = 639934, upload-time = "2025-10-10T07:05:27.147Z" }, + { url = "https://files.pythonhosted.org/packages/12/da/490a0b80144fb888ae9328f73d7bfa58fd5ccf8bdb81a6d20561ec5a0ff7/backports_zstd-1.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c78c1eaf3fdea00514afe9636e01f94890f1e4c6e8e1dfede48015364b950705", size = 494822, upload-time = "2025-10-10T07:05:28.325Z" }, + { url = "https://files.pythonhosted.org/packages/ad/d2/0f7702000bd08ff6aa71114b377141f2d30154597dcd9459a08554122fa5/backports_zstd-1.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4ff181018de5afb1b87edf9a88ec7e62b4b053e75b91ec8ac7819042126ca7cf", size = 482001, upload-time = "2025-10-10T07:05:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/20/78/2cc5dc095b93841eb251d91cf4b3b4c1e5efc15db40f97f003603acaba3f/backports_zstd-1.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eed0753c698a21f0d38464c2a6d4d5e770d2ea2e9c3a308f1712d674598a049f", size = 511380, upload-time = "2025-10-10T07:05:30.874Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b3/328c4835b661b3a9f2c6f2eb6350a9d4bc673e7e5c7d1149ecb235abe774/backports_zstd-1.0.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:18f5d3ed08afcd08b86b305bf167c0f2b582b906742e4bd3c7389050d5b59817", size = 585514, upload-time = "2025-10-10T07:05:32.523Z" }, + { url = "https://files.pythonhosted.org/packages/4f/31/3d347703f5d913d35edb58e9fbfbf8155dc63d1e6c0ed93eb5205e09d5f1/backports_zstd-1.0.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:7a8c950abe629e5d8ea606e6600dd1d6cd6bddd7a4566cf34201d31244d10ab3", size = 630541, upload-time = "2025-10-10T07:05:33.799Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ac/323abb5ba0e5da924dec83073464eb87223677c577e0969c90b279700c1f/backports_zstd-1.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:973e74f4e1f19f7879a6a7900e9a268522eb4297100a573ed69969df63f94674", size = 499450, upload-time = "2025-10-10T07:05:35.4Z" }, + { url = "https://files.pythonhosted.org/packages/81/cb/1d77d6cf3850e804f4994a8106db2830e58638ed0f2d0f92636adb38a38d/backports_zstd-1.0.0-cp313-cp313t-win32.whl", hash = "sha256:870effb06ffb7623af1c8dac35647a1c4b597d3bb0b3f9895c738bd5ad23666c", size = 289410, upload-time = "2025-10-10T07:05:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/16/59/5ec914419b6db0516794f6f5214b1990e550971fe0867c60ea55262b5d68/backports_zstd-1.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8bb6470186301e84aaa704c8eb339c97dcdec67445e7e197d44665e933807e4e", size = 314778, upload-time = "2025-10-10T07:05:38.637Z" }, + { url = "https://files.pythonhosted.org/packages/75/88/198e1726f65229f219bb2a72849c9424ba41f6de989c3a8c9bf58118a4a7/backports_zstd-1.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:b2d85810393b3be6e8e77d89a165fc67c2a08290a210dbd77e2fc148dbc4106f", size = 289333, upload-time = "2025-10-10T07:05:39.758Z" }, + { url = "https://files.pythonhosted.org/packages/c5/80/cad971088dd705adedce95e4ce77801cbad61ac9250b4e77fbbb2881c34f/backports_zstd-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1315107754808856ddcf187a19cc139cb4a2a65970bd1bafd71718cfd051d32e", size = 435835, upload-time = "2025-10-10T07:05:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9f/8c13830b7d698bd270d9aaeebd685670e8955282a3e5f6967521bcb5b2d3/backports_zstd-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96bf0a564af74951adfa6addd1c148ab467ba92172cd23b267dd150b0f47fd9e", size = 362191, upload-time = "2025-10-10T07:05:42.594Z" }, + { url = "https://files.pythonhosted.org/packages/db/b4/dd0d86d04b1dd4d08468e8d980d3ece48d86909b9635f1efebce309b98d4/backports_zstd-1.0.0-cp39-cp39-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:d7c1c6ebedf7bc70c1adca3f4624e1e04b2a0d7a389b065f0c5d6244f6be3dae", size = 506076, upload-time = "2025-10-10T07:05:43.842Z" }, + { url = "https://files.pythonhosted.org/packages/86/6e/b484e33d8eb13b9379741e9e88daa48c15c9038e9ee9926ebf1096bfed6f/backports_zstd-1.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ea4ff5e162fb61f8421724021eac0a612af0aff2da9e585c96d27c2da924589", size = 475720, upload-time = "2025-10-10T07:05:45.094Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e6/c49157bb8240ffd4c0abf93306276be4e80d2ef8c1b8465e06bcecece250/backports_zstd-1.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5a6047fb0bef5bbe519b1e46108847e01a48d002b3dfc69af1423a53d8144dda", size = 581396, upload-time = "2025-10-10T07:05:46.389Z" }, + { url = "https://files.pythonhosted.org/packages/67/24/a900cfdc4dd74306c6b53604ad51af5f38e2353b0d615a3c869051134b3b/backports_zstd-1.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2d510b422e7b2b6ca142082fa85ac360edf77b73108454335ecfd19071c819ff", size = 641053, upload-time = "2025-10-10T07:05:48.012Z" }, + { url = "https://files.pythonhosted.org/packages/3d/75/5ce7953c6306fc976abf7cf33f0071a10d58c71c94348844ae625dfdee22/backports_zstd-1.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e6349defa266342802d86343b7fc59ee12048bca5f77a9fcb1c1ab9bb894d09", size = 491186, upload-time = "2025-10-10T07:05:49.424Z" }, + { url = "https://files.pythonhosted.org/packages/f9/db/375410a26abf2ac972fec554122065d774fa037f9ffeedf4f7b05553b01d/backports_zstd-1.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:20b0a1be02b2ee18c74b68a89eec14be98d11f0415a79eb209dce4bc2d6f4e52", size = 481750, upload-time = "2025-10-10T07:05:50.678Z" }, + { url = "https://files.pythonhosted.org/packages/21/d1/fa7c2d7b7a1c433e4e79c027c54d17f2ffc489ab7e76496b149d9ae6f667/backports_zstd-1.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3595cbc2f4d8a5dc6bd791ba8d9fee2fdfcdfc07206e944c1b3ec3090fcbc99e", size = 509601, upload-time = "2025-10-10T07:05:51.952Z" }, + { url = "https://files.pythonhosted.org/packages/c4/35/befe5ee9bec078f7f4c9290cefc56d3336b4ee52d17a60293d9dda4589c0/backports_zstd-1.0.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d3eddb298db7a9a1b122c40bcb418a154b6c8f1b54ef7308644e0e67d42c159e", size = 585743, upload-time = "2025-10-10T07:05:53.609Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0a/cfbf0ae24348be3c3f597717c639e9cbe29692a99ad650c232b8a97c74c1/backports_zstd-1.0.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ef31a9482727e6b335f673a8b8116be186b83ca72be4a07f60684b8220a213e9", size = 631591, upload-time = "2025-10-10T07:05:54.846Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2d/7c996648c7a7b84a3e8b045fb494466475c1f599374da3c780198bde96c4/backports_zstd-1.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0a6a6d114058735d042116aa9199b0b436236fddcb5f805fb17310fcadddd441", size = 495294, upload-time = "2025-10-10T07:05:56.417Z" }, + { url = "https://files.pythonhosted.org/packages/be/c8/5a15a4a52506e2e2598d2667ae67404516ea4336535fdd7b7b1b2fffd623/backports_zstd-1.0.0-cp39-cp39-win32.whl", hash = "sha256:8aea1bdc89becb21d1df1cdcc6182b2aa9540addaa20569169e01b25b8996f41", size = 288646, upload-time = "2025-10-10T07:05:57.993Z" }, + { url = "https://files.pythonhosted.org/packages/67/4e/42409d11a9d324f68a079493c5806d593f54184962e5fff1dc88a1d5e3ba/backports_zstd-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:23a40a40fb56f4b47ece5e9cb7048c2e93d9eeb81ad5fb4e68adcaeb699d6b98", size = 313532, upload-time = "2025-10-10T07:05:59.212Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f8/932b05fd2f98f85c95674f09ae28ccc1638b8cc17d6f566d21ed499ee456/backports_zstd-1.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:2f07bd1c1b478bd8a0bbe413439c24ee08ceb6ebc957a97de3666e8f2e612463", size = 288756, upload-time = "2025-10-10T07:06:01.216Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/680ac0ad73676eb1f3bb71f6dd3bbaa2d28a9e4293d3ede4adcd78905b93/backports_zstd-1.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:efa53658c1e617986ed202e7aa8eb23c69fc8f33d01192cd1565e455ed9aa057", size = 409790, upload-time = "2025-10-10T07:06:02.405Z" }, + { url = "https://files.pythonhosted.org/packages/62/6c/6410c334890b4a43c893b9dcd3cbc8b10f17ea8dced483d9ba200b17ccab/backports_zstd-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4386a17c99ce647877298c916f2afeacb238e56cb7cca2d665822a0ee743b5d5", size = 339308, upload-time = "2025-10-10T07:06:03.667Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b2/ad3e651985b8a2a4876e5adc61100cef07a8caefb87180391f1f5b8c801c/backports_zstd-1.0.0-pp310-pypy310_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:cbbb0bda54bda18af99961d7d22d7bc7fedcc7d8ca3a04dcde9189494dbfc87a", size = 420356, upload-time = "2025-10-10T07:06:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c4/361bde3f570804674b9033ac41cc26735ceb4e33ccce2645079eff62a26f/backports_zstd-1.0.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c49048ec50f81b196ab0f3c49c025912eba1c6e55259b99f11ee6e8c04226ab", size = 393900, upload-time = "2025-10-10T07:06:06.252Z" }, + { url = "https://files.pythonhosted.org/packages/7b/90/f7bc5c0d204c2312fbe4e62592c92200f19da8840ce8b4a1df56080b7537/backports_zstd-1.0.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6d1fe816c3c31241b0bdcc96364fae689f3e49a923469ad1ad7a9aeb0bbcd67", size = 413862, upload-time = "2025-10-10T07:06:07.506Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/9c1949456566228578d30013e81a593577e63e1cae9e72b058e37ae4c5e2/backports_zstd-1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:96a57f48d2d64c985393bb4ae15b61097d8fc0d56416e790f7cc09bf9212fb87", size = 299722, upload-time = "2025-10-10T07:06:08.661Z" }, + { url = "https://files.pythonhosted.org/packages/a0/51/f22627d208ab63e97f5441374110363f4b5e0c2ce0b4f2412e753eb12bf1/backports_zstd-1.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8191c019cefaf074c3f05ebec5ad19ec606b7ac1dc915b66a0820268e6f0e327", size = 409687, upload-time = "2025-10-10T07:06:09.844Z" }, + { url = "https://files.pythonhosted.org/packages/4f/93/50b2ebb2e8f388bb124c4a39974e29f841ef1452d603045e292e107227b9/backports_zstd-1.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:479270cd6385775dca98accaf304e5f011d94280ad4681d3e925a1b4dfd19aaf", size = 339221, upload-time = "2025-10-10T07:06:11.13Z" }, + { url = "https://files.pythonhosted.org/packages/25/f5/103645f44a92c4de2860b8d6cf6c5414b63956278764f8b7db359bdeae94/backports_zstd-1.0.0-pp311-pypy311_pp73-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:3beab43bfda8e453648b9cce5edcceb5add6c42c331873b41ab1d24232d9c2b0", size = 420355, upload-time = "2025-10-10T07:06:12.283Z" }, + { url = "https://files.pythonhosted.org/packages/d9/10/e185f05ec85bc05c82d7efdd75528e695c85181eb291cc4c19b2f26153f1/backports_zstd-1.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67469b247c99537b77f7d402580cbb7298fa15ebe3ce6984d89a5b65d4d5a6c2", size = 393900, upload-time = "2025-10-10T07:06:13.508Z" }, + { url = "https://files.pythonhosted.org/packages/fd/40/3f717216e21617e919d12d6520d0da5b22002e07f12638629acc9e5dcc2e/backports_zstd-1.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6910a9311e7a2987d353f396568f5e401cf4917e2112bf610e62385ad02d8cf4", size = 413863, upload-time = "2025-10-10T07:06:15.531Z" }, + { url = "https://files.pythonhosted.org/packages/23/f5/cb12f5dd6ac648e92d8cec8b69fd4064bd549c126fb0d3fe6d3dd237afbe/backports_zstd-1.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:85f08363b7ca504a8bceaa2d4333a1a307d2b2056f77a13036a81d7aa3c87b2a", size = 299719, upload-time = "2025-10-10T07:06:17.032Z" }, +] + [[package]] name = "beautifulsoup4" version = "4.13.4" @@ -1131,7 +1241,7 @@ test = [ { name = "pytest-asyncio" }, ] zstd = [ - { name = "zstandard" }, + { name = "backports-zstd", marker = "python_full_version < '3.14'" }, ] [package.dev-dependencies] @@ -1160,6 +1270,7 @@ typing = [ [package.metadata] requires-dist = [ + { name = "backports-zstd", marker = "python_full_version < '3.14' and extra == 'zstd'", specifier = ">=1.0.0" }, { name = "certifi", marker = "(os_name == 'nt' and extra == 'encryption') or (sys_platform == 'darwin' and extra == 'encryption')", specifier = ">=2023.7.22" }, { 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" }, @@ -1182,7 +1293,6 @@ requires-dist = [ { name = "sphinx-rtd-theme", marker = "extra == 'docs'", specifier = ">=2,<4" }, { name = "sphinxcontrib-shellcheck", marker = "extra == 'docs'", specifier = ">=1,<2" }, { name = "winkerberos", marker = "os_name == 'nt' and extra == 'gssapi'", specifier = ">=0.5.0" }, - { name = "zstandard", marker = "extra == 'zstd'" }, ] provides-extras = ["aws", "docs", "encryption", "gssapi", "ocsp", "snappy", "test", "zstd"] @@ -2115,94 +2225,3 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/d4/4ba1569b856870527cec4bf22b91fe704b81a3c1a451b2ccf234e9e0666f/zope.interface-7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad9913fd858274db8dd867012ebe544ef18d218f6f7d1e3c3e6d98000f14b75", size = 253800, upload-time = "2024-11-28T08:48:46.637Z" }, { url = "https://files.pythonhosted.org/packages/69/da/c9cfb384c18bd3a26d9fc6a9b5f32ccea49ae09444f097eaa5ca9814aff9/zope.interface-7.2-cp39-cp39-win_amd64.whl", hash = "sha256:1090c60116b3da3bfdd0c03406e2f14a1ff53e5771aebe33fec1edc0a350175d", size = 211980, upload-time = "2024-11-28T08:50:35.681Z" }, ] - -[[package]] -name = "zstandard" -version = "0.23.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/55/bd0487e86679db1823fc9ee0d8c9c78ae2413d34c0b461193b5f4c31d22f/zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9", size = 788701, upload-time = "2024-07-15T00:13:27.351Z" }, - { url = "https://files.pythonhosted.org/packages/e1/8a/ccb516b684f3ad987dfee27570d635822e3038645b1a950c5e8022df1145/zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880", size = 633678, upload-time = "2024-07-15T00:13:30.24Z" }, - { url = "https://files.pythonhosted.org/packages/12/89/75e633d0611c028e0d9af6df199423bf43f54bea5007e6718ab7132e234c/zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc", size = 4941098, upload-time = "2024-07-15T00:13:32.526Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7a/bd7f6a21802de358b63f1ee636ab823711c25ce043a3e9f043b4fcb5ba32/zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573", size = 5308798, upload-time = "2024-07-15T00:13:34.925Z" }, - { url = "https://files.pythonhosted.org/packages/79/3b/775f851a4a65013e88ca559c8ae42ac1352db6fcd96b028d0df4d7d1d7b4/zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391", size = 5341840, upload-time = "2024-07-15T00:13:37.376Z" }, - { url = "https://files.pythonhosted.org/packages/09/4f/0cc49570141dd72d4d95dd6fcf09328d1b702c47a6ec12fbed3b8aed18a5/zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e", size = 5440337, upload-time = "2024-07-15T00:13:39.772Z" }, - { url = "https://files.pythonhosted.org/packages/e7/7c/aaa7cd27148bae2dc095191529c0570d16058c54c4597a7d118de4b21676/zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd", size = 4861182, upload-time = "2024-07-15T00:13:42.495Z" }, - { url = "https://files.pythonhosted.org/packages/ac/eb/4b58b5c071d177f7dc027129d20bd2a44161faca6592a67f8fcb0b88b3ae/zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4", size = 4932936, upload-time = "2024-07-15T00:13:44.234Z" }, - { url = "https://files.pythonhosted.org/packages/44/f9/21a5fb9bb7c9a274b05ad700a82ad22ce82f7ef0f485980a1e98ed6e8c5f/zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea", size = 5464705, upload-time = "2024-07-15T00:13:46.822Z" }, - { url = "https://files.pythonhosted.org/packages/49/74/b7b3e61db3f88632776b78b1db597af3f44c91ce17d533e14a25ce6a2816/zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2", size = 4857882, upload-time = "2024-07-15T00:13:49.297Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7f/d8eb1cb123d8e4c541d4465167080bec88481ab54cd0b31eb4013ba04b95/zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9", size = 4697672, upload-time = "2024-07-15T00:13:51.447Z" }, - { url = "https://files.pythonhosted.org/packages/5e/05/f7dccdf3d121309b60342da454d3e706453a31073e2c4dac8e1581861e44/zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a", size = 5206043, upload-time = "2024-07-15T00:13:53.587Z" }, - { url = "https://files.pythonhosted.org/packages/86/9d/3677a02e172dccd8dd3a941307621c0cbd7691d77cb435ac3c75ab6a3105/zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0", size = 5667390, upload-time = "2024-07-15T00:13:56.137Z" }, - { url = "https://files.pythonhosted.org/packages/41/7e/0012a02458e74a7ba122cd9cafe491facc602c9a17f590367da369929498/zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c", size = 5198901, upload-time = "2024-07-15T00:13:58.584Z" }, - { url = "https://files.pythonhosted.org/packages/65/3a/8f715b97bd7bcfc7342d8adcd99a026cb2fb550e44866a3b6c348e1b0f02/zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813", size = 430596, upload-time = "2024-07-15T00:14:00.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/b7/b2b9eca5e5a01111e4fe8a8ffb56bdcdf56b12448a24effe6cfe4a252034/zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4", size = 495498, upload-time = "2024-07-15T00:14:02.741Z" }, - { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699, upload-time = "2024-07-15T00:14:04.909Z" }, - { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681, upload-time = "2024-07-15T00:14:13.99Z" }, - { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328, upload-time = "2024-07-15T00:14:16.588Z" }, - { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955, upload-time = "2024-07-15T00:14:19.389Z" }, - { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944, upload-time = "2024-07-15T00:14:22.173Z" }, - { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927, upload-time = "2024-07-15T00:14:24.825Z" }, - { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910, upload-time = "2024-07-15T00:14:26.982Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544, upload-time = "2024-07-15T00:14:29.582Z" }, - { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094, upload-time = "2024-07-15T00:14:40.126Z" }, - { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440, upload-time = "2024-07-15T00:14:42.786Z" }, - { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091, upload-time = "2024-07-15T00:14:45.184Z" }, - { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682, upload-time = "2024-07-15T00:14:47.407Z" }, - { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707, upload-time = "2024-07-15T00:15:03.529Z" }, - { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792, upload-time = "2024-07-15T00:15:28.372Z" }, - { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586, upload-time = "2024-07-15T00:15:32.26Z" }, - { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420, upload-time = "2024-07-15T00:15:34.004Z" }, - { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713, upload-time = "2024-07-15T00:15:35.815Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459, upload-time = "2024-07-15T00:15:37.995Z" }, - { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707, upload-time = "2024-07-15T00:15:39.872Z" }, - { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545, upload-time = "2024-07-15T00:15:41.75Z" }, - { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533, upload-time = "2024-07-15T00:15:44.114Z" }, - { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510, upload-time = "2024-07-15T00:15:46.509Z" }, - { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973, upload-time = "2024-07-15T00:15:49.939Z" }, - { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968, upload-time = "2024-07-15T00:15:52.025Z" }, - { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179, upload-time = "2024-07-15T00:15:54.971Z" }, - { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577, upload-time = "2024-07-15T00:15:57.634Z" }, - { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899, upload-time = "2024-07-15T00:16:00.811Z" }, - { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964, upload-time = "2024-07-15T00:16:03.669Z" }, - { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398, upload-time = "2024-07-15T00:16:06.694Z" }, - { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313, upload-time = "2024-07-15T00:16:09.758Z" }, - { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877, upload-time = "2024-07-15T00:16:11.758Z" }, - { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595, upload-time = "2024-07-15T00:16:13.731Z" }, - { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, - { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, - { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, - { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, - { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, - { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, - { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, - { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, - { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, - { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, - { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, - { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, - { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, - { url = "https://files.pythonhosted.org/packages/fb/96/4fcafeb7e013a2386d22f974b5b97a0b9a65004ed58c87ae001599bfbd48/zstandard-0.23.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa014d55c3af933c1315eb4bb06dd0459661cc0b15cd61077afa6489bec63bb", size = 788697, upload-time = "2024-07-15T00:17:31.236Z" }, - { url = "https://files.pythonhosted.org/packages/83/ff/a52ce725be69b86a2967ecba0497a8184540cc284c0991125515449e54e2/zstandard-0.23.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7f0804bb3799414af278e9ad51be25edf67f78f916e08afdb983e74161b916", size = 633679, upload-time = "2024-07-15T00:17:32.911Z" }, - { url = "https://files.pythonhosted.org/packages/34/0f/3dc62db122f6a9c481c335fff6fc9f4e88d8f6e2d47321ee3937328addb4/zstandard-0.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb2b1ecfef1e67897d336de3a0e3f52478182d6a47eda86cbd42504c5cbd009a", size = 4940416, upload-time = "2024-07-15T00:17:34.849Z" }, - { url = "https://files.pythonhosted.org/packages/1d/e5/9fe0dd8c85fdc2f635e6660d07872a5dc4b366db566630161e39f9f804e1/zstandard-0.23.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:837bb6764be6919963ef41235fd56a6486b132ea64afe5fafb4cb279ac44f259", size = 5307693, upload-time = "2024-07-15T00:17:37.355Z" }, - { url = "https://files.pythonhosted.org/packages/73/bf/fe62c0cd865c171ee8ed5bc83174b5382a2cb729c8d6162edfb99a83158b/zstandard-0.23.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1516c8c37d3a053b01c1c15b182f3b5f5eef19ced9b930b684a73bad121addf4", size = 5341236, upload-time = "2024-07-15T00:17:40.213Z" }, - { url = "https://files.pythonhosted.org/packages/39/86/4fe79b30c794286110802a6cd44a73b6a314ac8196b9338c0fbd78c2407d/zstandard-0.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ef6a43b1846f6025dde6ed9fee0c24e1149c1c25f7fb0a0585572b2f3adc58", size = 5439101, upload-time = "2024-07-15T00:17:42.284Z" }, - { url = "https://files.pythonhosted.org/packages/72/ed/cacec235c581ebf8c608c7fb3d4b6b70d1b490d0e5128ea6996f809ecaef/zstandard-0.23.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11e3bf3c924853a2d5835b24f03eeba7fc9b07d8ca499e247e06ff5676461a15", size = 4860320, upload-time = "2024-07-15T00:17:44.21Z" }, - { url = "https://files.pythonhosted.org/packages/f6/1e/2c589a2930f93946b132fc852c574a19d5edc23fad2b9e566f431050c7ec/zstandard-0.23.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2fb4535137de7e244c230e24f9d1ec194f61721c86ebea04e1581d9d06ea1269", size = 4931933, upload-time = "2024-07-15T00:17:46.455Z" }, - { url = "https://files.pythonhosted.org/packages/8e/f5/30eadde3686d902b5d4692bb5f286977cbc4adc082145eb3f49d834b2eae/zstandard-0.23.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c24f21fa2af4bb9f2c492a86fe0c34e6d2c63812a839590edaf177b7398f700", size = 5463878, upload-time = "2024-07-15T00:17:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/e0/c8/8aed1f0ab9854ef48e5ad4431367fcb23ce73f0304f7b72335a8edc66556/zstandard-0.23.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a8c86881813a78a6f4508ef9daf9d4995b8ac2d147dcb1a450448941398091c9", size = 4857192, upload-time = "2024-07-15T00:17:51.558Z" }, - { url = "https://files.pythonhosted.org/packages/a8/c6/55e666cfbcd032b9e271865e8578fec56e5594d4faeac379d371526514f5/zstandard-0.23.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe3b385d996ee0822fd46528d9f0443b880d4d05528fd26a9119a54ec3f91c69", size = 4696513, upload-time = "2024-07-15T00:17:53.924Z" }, - { url = "https://files.pythonhosted.org/packages/dc/bd/720b65bea63ec9de0ac7414c33b9baf271c8de8996e5ff324dc93fc90ff1/zstandard-0.23.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:82d17e94d735c99621bf8ebf9995f870a6b3e6d14543b99e201ae046dfe7de70", size = 5204823, upload-time = "2024-07-15T00:17:55.948Z" }, - { url = "https://files.pythonhosted.org/packages/d8/40/d678db1556e3941d330cd4e95623a63ef235b18547da98fa184cbc028ecf/zstandard-0.23.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c7c517d74bea1a6afd39aa612fa025e6b8011982a0897768a2f7c8ab4ebb78a2", size = 5666490, upload-time = "2024-07-15T00:17:58.327Z" }, - { url = "https://files.pythonhosted.org/packages/ed/cc/c89329723d7515898a1fc7ef5d251264078548c505719d13e9511800a103/zstandard-0.23.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fd7e0f1cfb70eb2f95a19b472ee7ad6d9a0a992ec0ae53286870c104ca939e5", size = 5196622, upload-time = "2024-07-15T00:18:00.404Z" }, - { url = "https://files.pythonhosted.org/packages/78/4c/634289d41e094327a94500dfc919e58841b10ea3a9efdfafbac614797ec2/zstandard-0.23.0-cp39-cp39-win32.whl", hash = "sha256:43da0f0092281bf501f9c5f6f3b4c975a8a0ea82de49ba3f7100e64d422a1274", size = 430620, upload-time = "2024-07-15T00:18:02.613Z" }, - { url = "https://files.pythonhosted.org/packages/a2/e2/0b0c5a0f4f7699fecd92c1ba6278ef9b01f2b0b0dd46f62bfc6729c05659/zstandard-0.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:f8346bfa098532bc1fb6c7ef06783e969d87a99dd1d2a5a18a892c1d7a643c58", size = 495528, upload-time = "2024-07-15T00:18:04.452Z" }, -] From eb25ce420e04aac8b939cc44a52ab11a268cf0fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:20:45 -0600 Subject: [PATCH 7/8] Bump the actions group across 1 directory with 4 updates (#2604) --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/dist.yml | 8 ++++---- .github/workflows/release-python.yml | 2 +- .github/workflows/test-python.yml | 20 ++++++++++---------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b138324bf..5820c86b9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3 + uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -63,6 +63,6 @@ jobs: pip install -e . - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3 + uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 84bf1ba89..b4d4a2e78 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -91,7 +91,7 @@ jobs: # Free-threading builds: ls wheelhouse/*cp314t*.whl - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: wheel-${{ matrix.buildplat[1] }} path: ./wheelhouse/*.whl @@ -124,7 +124,7 @@ jobs: cd .. python -c "from pymongo import has_c; assert has_c()" - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: "sdist" path: ./dist/*.tar.gz @@ -135,13 +135,13 @@ jobs: name: Download Wheels steps: - name: Download all workflow run artifacts - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 - name: Flatten directory working-directory: . run: | find . -mindepth 2 -type f -exec mv {} . \; find . -type d -empty -delete - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: all-dist-${{ github.run_id }} path: "./*" diff --git a/.github/workflows/release-python.yml b/.github/workflows/release-python.yml index 6abca9e52..43e500337 100644 --- a/.github/workflows/release-python.yml +++ b/.github/workflows/release-python.yml @@ -75,7 +75,7 @@ jobs: id-token: write steps: - name: Download all the dists - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: all-dist-${{ github.run_id }} path: dist/ diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 4685ba2d9..20323dd92 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -26,7 +26,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "3.10" @@ -68,7 +68,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: ${{ matrix.python-version }} @@ -87,7 +87,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "3.10" @@ -112,7 +112,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "3.10" @@ -131,7 +131,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "3.10" @@ -153,7 +153,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "${{matrix.python}}" @@ -174,7 +174,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: enable-cache: true python-version: "3.10" @@ -214,7 +214,7 @@ jobs: run: | pip install build python -m build --sdist - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: "sdist" path: dist/*.tar.gz @@ -226,7 +226,7 @@ jobs: timeout-minutes: 20 steps: - name: Download sdist - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: path: sdist/ - name: Unpack SDist @@ -264,7 +264,7 @@ jobs: with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7 with: python-version: "3.10" - id: setup-mongodb From 63acab96cfe5da378cb05cf07b8fda72d1827cc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:23:32 -0600 Subject: [PATCH 8/8] Bump the actions group with 2 updates (#2608) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dist.yml | 2 +- .github/workflows/zizmor.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index b4d4a2e78..7530e73e4 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -61,7 +61,7 @@ jobs: - name: Set up QEMU if: runner.os == 'Linux' - uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3 + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3 with: # setup-qemu-action by default uses `tonistiigi/binfmt:latest` image, # which is out of date. This causes seg faults during build. diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml index c991de2e6..6d78564f8 100644 --- a/.github/workflows/zizmor.yml +++ b/.github/workflows/zizmor.yml @@ -18,4 +18,4 @@ jobs: with: persist-credentials: false - name: Run zizmor 🌈 - uses: zizmorcore/zizmor-action@da5ac40c5419dcf7f21630fb2f95e725ae8fb9d5 + uses: zizmorcore/zizmor-action@1aba86d8e1245be7a9ca003d46fcc85a76e6aa61