Merge branch 'master' of github.com:mongodb/mongo-python-driver

This commit is contained in:
Steven Silvester 2025-04-14 08:47:53 -05:00
commit 33922d432e
No known key found for this signature in database
GPG Key ID: B1BF5EC3A8B32F91
10 changed files with 782 additions and 193 deletions

View File

@ -66,7 +66,7 @@ functions:
params:
binary: bash
working_dir: "src"
include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, PYTHON_BINARY, PYTHON_VERSION,
include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, PYTHON_BINARY, PYTHON_VERSION, IS_WIN32,
STORAGE_ENGINE, REQUIRE_API_VERSION, DRIVERS_TOOLS, TEST_CRYPT_SHARED, AUTH_AWS, LOAD_BALANCER, LOCAL_ATLAS, NO_EXT]
args: [.evergreen/just.sh, run-server, "${TEST_NAME}"]
- command: expansions.update
@ -87,7 +87,7 @@ functions:
type: test
params:
include_expansions_in_env: [AUTH, SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY,
AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI, PYTHON_VERSION,
AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI, PYTHON_VERSION, IS_WIN32,
DISABLE_TEST_COMMANDS, GREEN_FRAMEWORK, NO_EXT, COMPRESSORS, MONGODB_API_VERSION, DEBUG_LOG,
ORCHESTRATION_FILE, OCSP_SERVER_TYPE, VERSION, REQUIRE_FIPS]
binary: bash

View File

@ -8035,7 +8035,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.9"
tags: [server-version, "3.9", sharded_cluster-auth-ssl]
tags: [server-version, python-3.9, sharded_cluster-auth-ssl]
- name: test-python3.10-auth-ssl-sharded-cluster-cov
commands:
- func: run server
@ -8051,7 +8051,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.10"
tags: [server-version, "3.10", sharded_cluster-auth-ssl]
tags: [server-version, python-3.10, sharded_cluster-auth-ssl]
- name: test-python3.11-auth-ssl-sharded-cluster-cov
commands:
- func: run server
@ -8067,7 +8067,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.11"
tags: [server-version, "3.11", sharded_cluster-auth-ssl]
tags: [server-version, python-3.11, sharded_cluster-auth-ssl]
- name: test-python3.12-auth-ssl-sharded-cluster-cov
commands:
- func: run server
@ -8083,7 +8083,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.12"
tags: [server-version, "3.12", sharded_cluster-auth-ssl]
tags: [server-version, python-3.12, sharded_cluster-auth-ssl]
- name: test-python3.13-auth-ssl-sharded-cluster-cov
commands:
- func: run server
@ -8099,7 +8099,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.13"
tags: [server-version, "3.13", sharded_cluster-auth-ssl]
tags: [server-version, python-3.13, sharded_cluster-auth-ssl]
- name: test-pypy3.10-auth-ssl-sharded-cluster
commands:
- func: run server
@ -8113,7 +8113,7 @@ tasks:
SSL: ssl
TOPOLOGY: sharded_cluster
PYTHON_VERSION: pypy3.10
tags: [server-version, pypy3.10, sharded_cluster-auth-ssl]
tags: [server-version, python-pypy3.10, sharded_cluster-auth-ssl]
- name: test-python3.9-auth-ssl-standalone-cov
commands:
- func: run server
@ -8129,7 +8129,7 @@ tasks:
TOPOLOGY: standalone
COVERAGE: "1"
PYTHON_VERSION: "3.9"
tags: [server-version, "3.9", standalone-auth-ssl]
tags: [server-version, python-3.9, standalone-auth-ssl]
- name: test-python3.10-auth-nossl-standalone-cov
commands:
- func: run server
@ -8145,7 +8145,7 @@ tasks:
TOPOLOGY: standalone
COVERAGE: "1"
PYTHON_VERSION: "3.10"
tags: [server-version, "3.10", standalone-auth-nossl]
tags: [server-version, python-3.10, standalone-auth-nossl]
- name: test-python3.11-noauth-ssl-standalone-cov
commands:
- func: run server
@ -8161,7 +8161,7 @@ tasks:
TOPOLOGY: standalone
COVERAGE: "1"
PYTHON_VERSION: "3.11"
tags: [server-version, "3.11", standalone-noauth-ssl]
tags: [server-version, python-3.11, standalone-noauth-ssl]
- name: test-python3.12-noauth-nossl-standalone-cov
commands:
- func: run server
@ -8177,7 +8177,7 @@ tasks:
TOPOLOGY: standalone
COVERAGE: "1"
PYTHON_VERSION: "3.12"
tags: [server-version, "3.12", standalone-noauth-nossl]
tags: [server-version, python-3.12, standalone-noauth-nossl]
- name: test-python3.13-auth-ssl-replica-set-cov
commands:
- func: run server
@ -8193,7 +8193,7 @@ tasks:
TOPOLOGY: replica_set
COVERAGE: "1"
PYTHON_VERSION: "3.13"
tags: [server-version, "3.13", replica_set-auth-ssl]
tags: [server-version, python-3.13, replica_set-auth-ssl]
- name: test-pypy3.10-auth-nossl-replica-set
commands:
- func: run server
@ -8207,7 +8207,7 @@ tasks:
SSL: nossl
TOPOLOGY: replica_set
PYTHON_VERSION: pypy3.10
tags: [server-version, pypy3.10, replica_set-auth-nossl]
tags: [server-version, python-pypy3.10, replica_set-auth-nossl]
- name: test-python3.9-noauth-ssl-replica-set-cov
commands:
- func: run server
@ -8223,7 +8223,7 @@ tasks:
TOPOLOGY: replica_set
COVERAGE: "1"
PYTHON_VERSION: "3.9"
tags: [server-version, "3.9", replica_set-noauth-ssl]
tags: [server-version, python-3.9, replica_set-noauth-ssl]
- name: test-python3.10-noauth-nossl-replica-set-cov
commands:
- func: run server
@ -8239,7 +8239,7 @@ tasks:
TOPOLOGY: replica_set
COVERAGE: "1"
PYTHON_VERSION: "3.10"
tags: [server-version, "3.10", replica_set-noauth-nossl]
tags: [server-version, python-3.10, replica_set-noauth-nossl]
- name: test-python3.12-auth-nossl-sharded-cluster-cov
commands:
- func: run server
@ -8255,7 +8255,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.12"
tags: [server-version, "3.12", sharded_cluster-auth-nossl]
tags: [server-version, python-3.12, sharded_cluster-auth-nossl]
- name: test-python3.13-noauth-ssl-sharded-cluster-cov
commands:
- func: run server
@ -8271,7 +8271,7 @@ tasks:
TOPOLOGY: sharded_cluster
COVERAGE: "1"
PYTHON_VERSION: "3.13"
tags: [server-version, "3.13", sharded_cluster-noauth-ssl]
tags: [server-version, python-3.13, sharded_cluster-noauth-ssl]
- name: test-pypy3.10-noauth-nossl-sharded-cluster
commands:
- func: run server
@ -8285,7 +8285,7 @@ tasks:
SSL: nossl
TOPOLOGY: sharded_cluster
PYTHON_VERSION: pypy3.10
tags: [server-version, pypy3.10, sharded_cluster-noauth-nossl]
tags: [server-version, python-pypy3.10, sharded_cluster-noauth-nossl]
# Serverless tests
- name: test-serverless
@ -8296,3 +8296,599 @@ tasks:
AUTH: auth
SSL: ssl
tags: [serverless]
# Standard non linux tests
- name: test-v4.0-python3.9-sync-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.0"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.0"
PYTHON_VERSION: "3.9"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-4.0
- python-3.9
- standalone-noauth-nossl
- sync
- name: test-v4.0-python3.10-async-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.0"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.0"
PYTHON_VERSION: "3.10"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-4.0
- python-3.10
- replica_set-noauth-ssl
- async
- name: test-v4.0-python3.11-sync-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.0"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.0"
PYTHON_VERSION: "3.11"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-4.0
- python-3.11
- sharded_cluster-auth-ssl
- sync
- name: test-v4.2-python3.12-async-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.2"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.2"
PYTHON_VERSION: "3.12"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-4.2
- python-3.12
- standalone-noauth-nossl
- async
- name: test-v4.2-python3.13-sync-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.2"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.2"
PYTHON_VERSION: "3.13"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-4.2
- python-3.13
- replica_set-noauth-ssl
- sync
- name: test-v4.2-python3.9-async-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.2"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.2"
PYTHON_VERSION: "3.9"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-4.2
- python-3.9
- sharded_cluster-auth-ssl
- async
- name: test-v4.4-python3.10-sync-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.4"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "4.4"
PYTHON_VERSION: "3.10"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-4.4
- python-3.10
- standalone-noauth-nossl
- sync
- name: test-v4.4-python3.11-async-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.4"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "4.4"
PYTHON_VERSION: "3.11"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-4.4
- python-3.11
- replica_set-noauth-ssl
- async
- name: test-v4.4-python3.12-sync-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.4"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "4.4"
PYTHON_VERSION: "3.12"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-4.4
- python-3.12
- sharded_cluster-auth-ssl
- sync
- name: test-v5.0-python3.13-async-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "5.0"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "5.0"
PYTHON_VERSION: "3.13"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-5.0
- python-3.13
- standalone-noauth-nossl
- async
- name: test-v5.0-python3.9-sync-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "5.0"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "5.0"
PYTHON_VERSION: "3.9"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-5.0
- python-3.9
- replica_set-noauth-ssl
- sync
- name: test-v5.0-python3.10-async-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "5.0"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "5.0"
PYTHON_VERSION: "3.10"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-5.0
- python-3.10
- sharded_cluster-auth-ssl
- async
- name: test-v6.0-python3.11-sync-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "6.0"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "6.0"
PYTHON_VERSION: "3.11"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-6.0
- python-3.11
- standalone-noauth-nossl
- sync
- name: test-v6.0-python3.12-async-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "6.0"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "6.0"
PYTHON_VERSION: "3.12"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-6.0
- python-3.12
- replica_set-noauth-ssl
- async
- name: test-v6.0-python3.13-sync-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "6.0"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "6.0"
PYTHON_VERSION: "3.13"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-6.0
- python-3.13
- sharded_cluster-auth-ssl
- sync
- name: test-v7.0-python3.9-async-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "7.0"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "7.0"
PYTHON_VERSION: "3.9"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-7.0
- python-3.9
- standalone-noauth-nossl
- async
- name: test-v7.0-python3.10-sync-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "7.0"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "7.0"
PYTHON_VERSION: "3.10"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-7.0
- python-3.10
- replica_set-noauth-ssl
- sync
- name: test-v7.0-python3.11-async-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "7.0"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "7.0"
PYTHON_VERSION: "3.11"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-7.0
- python-3.11
- sharded_cluster-auth-ssl
- async
- name: test-v8.0-python3.12-sync-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "8.0"
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: "8.0"
PYTHON_VERSION: "3.12"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-8.0
- python-3.12
- standalone-noauth-nossl
- sync
- name: test-v8.0-python3.13-async-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "8.0"
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: "8.0"
PYTHON_VERSION: "3.13"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-8.0
- python-3.13
- replica_set-noauth-ssl
- async
- name: test-v8.0-python3.9-sync-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "8.0"
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: "8.0"
PYTHON_VERSION: "3.9"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-8.0
- python-3.9
- sharded_cluster-auth-ssl
- sync
- name: test-rapid-python3.10-async-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: rapid
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: rapid
PYTHON_VERSION: "3.10"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-rapid
- python-3.10
- standalone-noauth-nossl
- async
- name: test-rapid-python3.11-sync-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: rapid
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: rapid
PYTHON_VERSION: "3.11"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-rapid
- python-3.11
- replica_set-noauth-ssl
- sync
- name: test-rapid-python3.12-async-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: rapid
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: rapid
PYTHON_VERSION: "3.12"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-rapid
- python-3.12
- sharded_cluster-auth-ssl
- async
- name: test-latest-python3.13-sync-noauth-nossl-standalone
commands:
- func: run server
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: latest
- func: run tests
vars:
AUTH: noauth
SSL: nossl
TOPOLOGY: standalone
VERSION: latest
PYTHON_VERSION: "3.13"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-latest
- python-3.13
- standalone-noauth-nossl
- sync
- name: test-latest-python3.9-async-noauth-ssl-replica-set
commands:
- func: run server
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: latest
- func: run tests
vars:
AUTH: noauth
SSL: ssl
TOPOLOGY: replica_set
VERSION: latest
PYTHON_VERSION: "3.9"
TEST_NAME: default_async
tags:
- standard-non-linux
- server-latest
- python-3.9
- replica_set-noauth-ssl
- async
- name: test-latest-python3.10-sync-auth-ssl-sharded-cluster
commands:
- func: run server
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: latest
- func: run tests
vars:
AUTH: auth
SSL: ssl
TOPOLOGY: sharded_cluster
VERSION: latest
PYTHON_VERSION: "3.10"
TEST_NAME: default_sync
tags:
- standard-non-linux
- server-latest
- python-3.10
- sharded_cluster-auth-ssl
- sync

View File

@ -804,112 +804,6 @@ buildvariants:
expansions:
PYTHON_BINARY: /opt/python/3.9/bin/python3
# Server tests
- name: test-macos-python3.9
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test macOS Python3.9"
run_on:
- macos-14
expansions:
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
- name: test-macos-python3.13
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test macOS Python3.13"
run_on:
- macos-14
expansions:
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
- name: test-macos-arm64-python3.9
tasks:
- name: .sharded_cluster .auth .ssl .6.0 !.sync_async
- name: .replica_set .noauth .ssl .6.0 !.sync_async
- name: .standalone .noauth .nossl .6.0 !.sync_async
- name: .sharded_cluster .auth .ssl .7.0 !.sync_async
- name: .replica_set .noauth .ssl .7.0 !.sync_async
- name: .standalone .noauth .nossl .7.0 !.sync_async
- name: .sharded_cluster .auth .ssl .8.0 !.sync_async
- name: .replica_set .noauth .ssl .8.0 !.sync_async
- name: .standalone .noauth .nossl .8.0 !.sync_async
- name: .sharded_cluster .auth .ssl .rapid !.sync_async
- name: .replica_set .noauth .ssl .rapid !.sync_async
- name: .standalone .noauth .nossl .rapid !.sync_async
- name: .sharded_cluster .auth .ssl .latest !.sync_async
- name: .replica_set .noauth .ssl .latest !.sync_async
- name: .standalone .noauth .nossl .latest !.sync_async
display_name: "* Test macOS Arm64 Python3.9"
run_on:
- macos-14-arm64
expansions:
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
- name: test-macos-arm64-python3.13
tasks:
- name: .sharded_cluster .auth .ssl .6.0 !.sync_async
- name: .replica_set .noauth .ssl .6.0 !.sync_async
- name: .standalone .noauth .nossl .6.0 !.sync_async
- name: .sharded_cluster .auth .ssl .7.0 !.sync_async
- name: .replica_set .noauth .ssl .7.0 !.sync_async
- name: .standalone .noauth .nossl .7.0 !.sync_async
- name: .sharded_cluster .auth .ssl .8.0 !.sync_async
- name: .replica_set .noauth .ssl .8.0 !.sync_async
- name: .standalone .noauth .nossl .8.0 !.sync_async
- name: .sharded_cluster .auth .ssl .rapid !.sync_async
- name: .replica_set .noauth .ssl .rapid !.sync_async
- name: .standalone .noauth .nossl .rapid !.sync_async
- name: .sharded_cluster .auth .ssl .latest !.sync_async
- name: .replica_set .noauth .ssl .latest !.sync_async
- name: .standalone .noauth .nossl .latest !.sync_async
display_name: "* Test macOS Arm64 Python3.13"
run_on:
- macos-14-arm64
expansions:
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
- name: test-win64-python3.9
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test Win64 Python3.9"
run_on:
- windows-64-vsMulti-small
expansions:
PYTHON_BINARY: C:/python/Python39/python.exe
- name: test-win64-python3.13
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test Win64 Python3.13"
run_on:
- windows-64-vsMulti-small
expansions:
PYTHON_BINARY: C:/python/Python313/python.exe
- name: test-win32-python3.9
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test Win32 Python3.9"
run_on:
- windows-64-vsMulti-small
expansions:
PYTHON_BINARY: C:/python/32/Python39/python.exe
- name: test-win32-python3.13
tasks:
- name: .sharded_cluster .auth .ssl !.sync_async
- name: .replica_set .noauth .ssl !.sync_async
- name: .standalone .noauth .nossl !.sync_async
display_name: "* Test Win32 Python3.13"
run_on:
- windows-64-vsMulti-small
expansions:
PYTHON_BINARY: C:/python/32/Python313/python.exe
# Server version tests
- name: mongodb-v4.0
tasks:
@ -1063,6 +957,42 @@ buildvariants:
PYTHON_BINARY: /opt/python/3.13/bin/python3
tags: [versionedApi_tag]
# Standard nonlinux tests
- name: test-macos
tasks:
- name: .standard-non-linux
display_name: "* Test macOS"
run_on:
- macos-14
tags: [standard-non-linux]
- name: test-macos-arm64
tasks:
- name: .standard-non-linux .server-6.0
- name: .standard-non-linux .server-7.0
- name: .standard-non-linux .server-8.0
- name: .standard-non-linux .server-rapid
- name: .standard-non-linux .server-latest
display_name: "* Test macOS Arm64"
run_on:
- macos-14-arm64
tags: [standard-non-linux]
- name: test-win64
tasks:
- name: .standard-non-linux
display_name: "* Test Win64"
run_on:
- windows-64-vsMulti-small
tags: [standard-non-linux]
- name: test-win32
tasks:
- name: .standard-non-linux
display_name: "* Test Win32"
run_on:
- windows-64-vsMulti-small
expansions:
IS_WIN32: "1"
tags: [standard-non-linux]
# Storage engine tests
- name: storage-inmemory-rhel8-python3.9
tasks:

View File

@ -77,23 +77,26 @@ def create_server_version_variants() -> list[BuildVariant]:
return variants
def create_server_variants() -> list[BuildVariant]:
def create_standard_nonlinux_variants() -> list[BuildVariant]:
variants = []
base_display_name = "* Test"
# Test a subset on each of the other platforms.
for host_name in ("macos", "macos-arm64", "win64", "win32"):
for python in MIN_MAX_PYTHON:
tasks = [f"{t} !.sync_async" for t in SUB_TASKS]
# MacOS arm64 only works on server versions 6.0+
if host_name == "macos-arm64":
tasks = []
for version in get_versions_from("6.0"):
tasks.extend(f"{t} .{version} !.sync_async" for t in SUB_TASKS)
host = HOSTS[host_name]
display_name = get_variant_name(base_display_name, host, python=python)
variant = create_variant(tasks, display_name, python=python, host=host)
variants.append(variant)
tasks = [".standard-non-linux"]
# MacOS arm64 only works on server versions 6.0+
if host_name == "macos-arm64":
tasks = [
f".standard-non-linux .server-{version}" for version in get_versions_from("6.0")
]
host = HOSTS[host_name]
tags = ["standard-non-linux"]
expansions = dict()
if host_name == "win32":
expansions["IS_WIN32"] = "1"
display_name = get_variant_name(base_display_name, host)
variant = create_variant(tasks, display_name, host=host, tags=tags, expansions=expansions)
variants.append(variant)
return variants
@ -591,7 +594,7 @@ def create_server_version_tasks():
continue
task_types.append((python, topology, auth, ssl))
for python, topology, auth, ssl in task_types:
tags = ["server-version", python, f"{topology}-{auth}-{ssl}"]
tags = ["server-version", f"python-{python}", f"{topology}-{auth}-{ssl}"]
expansions = dict(AUTH=auth, SSL=ssl, TOPOLOGY=topology)
if python not in PYPYS:
expansions["COVERAGE"] = "1"
@ -604,9 +607,37 @@ def create_server_version_tasks():
return tasks
def create_standard_non_linux_tasks():
tasks = []
for (version, topology), python, sync in zip_cycle(
list(product(ALL_VERSIONS, TOPOLOGIES)), CPYTHONS, SYNCS
):
auth = "auth" if topology == "sharded_cluster" else "noauth"
ssl = "nossl" if topology == "standalone" else "ssl"
tags = [
"standard-non-linux",
f"server-{version}",
f"python-{python}",
f"{topology}-{auth}-{ssl}",
sync,
]
expansions = dict(AUTH=auth, SSL=ssl, TOPOLOGY=topology, VERSION=version)
name = get_task_name("test", python=python, sync=sync, **expansions)
server_func = FunctionCall(func="run server", vars=expansions)
test_vars = expansions.copy()
test_vars["PYTHON_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]))
return tasks
def create_server_tasks():
tasks = []
for topo, version, (auth, ssl), sync in product(TOPOLOGIES, ALL_VERSIONS, AUTH_SSLS, SYNCS):
for topo, version, (auth, ssl), sync in product(
TOPOLOGIES, ALL_VERSIONS, AUTH_SSLS, [*SYNCS, "sync_async"]
):
name = f"test-{version}-{topo}-{auth}-{ssl}-{sync}".lower()
tags = [version, topo, auth, ssl, sync]
server_vars = dict(

View File

@ -36,7 +36,7 @@ SUB_TASKS = [
".replica_set .noauth .ssl",
".standalone .noauth .nossl",
]
SYNCS = ["sync", "async", "sync_async"]
SYNCS = ["sync", "async"]
DISPLAY_LOOKUP = dict(
ssl=dict(ssl="SSL", nossl="NoSSL"),
auth=dict(auth="Auth", noauth="NoAuth"),
@ -44,6 +44,7 @@ DISPLAY_LOOKUP = dict(
standalone="Standalone", replica_set="Replica Set", sharded_cluster="Sharded Cluster"
),
test_suites=dict(default="Sync", default_async="Async"),
sync={"sync": "Sync", "async": "Async"},
coverage={"1": "cov"},
no_ext={"1": "No C"},
)

View File

@ -34,6 +34,7 @@ PASS_THROUGH_ENV = [
"PYTHON_BINARY",
"PYTHON_VERSION",
"REQUIRE_FIPS",
"IS_WIN32",
]
# Map the test name to test extra.

View File

@ -123,7 +123,11 @@ get_python_binary() {
PYTHON="/Library/Frameworks/Python.Framework/Versions/$version/bin/python3"
elif [ "Windows_NT" = "${OS:-}" ]; then
version=$(echo $version | cut -d. -f1,2 | sed 's/\.//g')
PYTHON="C:/python/Python$version/python.exe"
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

View File

@ -0,0 +1,42 @@
# Copyright 2009-present MongoDB, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""GridFS is a specification for storing large objects in Mongo.
The :mod:`gridfs` package is an implementation of GridFS on top of
:mod:`pymongo`, exposing a file-like interface.
.. seealso:: The MongoDB documentation on `gridfs <https://dochub.mongodb.org/core/gridfs>`_.
"""
from __future__ import annotations
from gridfs.errors import NoFile
from gridfs.grid_file_shared import DEFAULT_CHUNK_SIZE
from gridfs.synchronous.grid_file import (
GridFS,
GridFSBucket,
GridIn,
GridOut,
GridOutCursor,
)
__all__ = [
"GridFS",
"GridFSBucket",
"NoFile",
"DEFAULT_CHUNK_SIZE",
"GridIn",
"GridOut",
"GridOutCursor",
]

View File

@ -182,40 +182,36 @@ class TestSampleShellCommands(AsyncIntegrationTest):
db = self.db
# Start Example 14
# Subdocument key order matters in a few of these examples so we have
# to use bson.son.SON instead of a Python dict.
from bson.son import SON
await db.inventory.insert_many(
[
{
"item": "journal",
"qty": 25,
"size": SON([("h", 14), ("w", 21), ("uom", "cm")]),
"size": {"h": 14, "w": 21, "uom": "cm"},
"status": "A",
},
{
"item": "notebook",
"qty": 50,
"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),
"size": {"h": 8.5, "w": 11, "uom": "in"},
"status": "A",
},
{
"item": "paper",
"qty": 100,
"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),
"size": {"h": 8.5, "w": 11, "uom": "in"},
"status": "D",
},
{
"item": "planner",
"qty": 75,
"size": SON([("h", 22.85), ("w", 30), ("uom", "cm")]),
"size": {"h": 22.85, "w": 30, "uom": "cm"},
"status": "D",
},
{
"item": "postcard",
"qty": 45,
"size": SON([("h", 10), ("w", 15.25), ("uom", "cm")]),
"size": {"h": 10, "w": 15.25, "uom": "cm"},
"status": "A",
},
]
@ -223,13 +219,13 @@ class TestSampleShellCommands(AsyncIntegrationTest):
# End Example 14
# Start Example 15
cursor = db.inventory.find({"size": SON([("h", 14), ("w", 21), ("uom", "cm")])})
cursor = db.inventory.find({"size": {"h": 14, "w": 21, "uom": "cm"}})
# End Example 15
self.assertEqual(len(await cursor.to_list()), 1)
# Start Example 16
cursor = db.inventory.find({"size": SON([("w", 21), ("h", 14), ("uom", "cm")])})
cursor = db.inventory.find({"size": {"w": 21, "h": 14, "uom": "cm"}})
# End Example 16
self.assertEqual(len(await cursor.to_list()), 0)
@ -324,39 +320,35 @@ class TestSampleShellCommands(AsyncIntegrationTest):
db = self.db
# Start Example 29
# Subdocument key order matters in a few of these examples so we have
# to use bson.son.SON instead of a Python dict.
from bson.son import SON
await db.inventory.insert_many(
[
{
"item": "journal",
"instock": [
SON([("warehouse", "A"), ("qty", 5)]),
SON([("warehouse", "C"), ("qty", 15)]),
{"warehouse": "A", "qty": 5},
{"warehouse": "C", "qty": 15},
],
},
{"item": "notebook", "instock": [SON([("warehouse", "C"), ("qty", 5)])]},
{"item": "notebook", "instock": [{"warehouse": "C", "qty": 5}]},
{
"item": "paper",
"instock": [
SON([("warehouse", "A"), ("qty", 60)]),
SON([("warehouse", "B"), ("qty", 15)]),
{"warehouse": "A", "qty": 60},
{"warehouse": "B", "qty": 15},
],
},
{
"item": "planner",
"instock": [
SON([("warehouse", "A"), ("qty", 40)]),
SON([("warehouse", "B"), ("qty", 5)]),
{"warehouse": "A", "qty": 40},
{"warehouse": "B", "qty": 5},
],
},
{
"item": "postcard",
"instock": [
SON([("warehouse", "B"), ("qty", 15)]),
SON([("warehouse", "C"), ("qty", 35)]),
{"warehouse": "B", "qty": 15},
{"warehouse": "C", "qty": 35},
],
},
]
@ -364,13 +356,13 @@ class TestSampleShellCommands(AsyncIntegrationTest):
# End Example 29
# Start Example 30
cursor = db.inventory.find({"instock": SON([("warehouse", "A"), ("qty", 5)])})
cursor = db.inventory.find({"instock": {"warehouse": "A", "qty": 5}})
# End Example 30
self.assertEqual(len(await cursor.to_list()), 1)
# Start Example 31
cursor = db.inventory.find({"instock": SON([("qty", 5), ("warehouse", "A")])})
cursor = db.inventory.find({"instock": {"qty": 5, "warehouse": "A"}})
# End Example 31
self.assertEqual(len(await cursor.to_list()), 0)

View File

@ -182,40 +182,36 @@ class TestSampleShellCommands(IntegrationTest):
db = self.db
# Start Example 14
# Subdocument key order matters in a few of these examples so we have
# to use bson.son.SON instead of a Python dict.
from bson.son import SON
db.inventory.insert_many(
[
{
"item": "journal",
"qty": 25,
"size": SON([("h", 14), ("w", 21), ("uom", "cm")]),
"size": {"h": 14, "w": 21, "uom": "cm"},
"status": "A",
},
{
"item": "notebook",
"qty": 50,
"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),
"size": {"h": 8.5, "w": 11, "uom": "in"},
"status": "A",
},
{
"item": "paper",
"qty": 100,
"size": SON([("h", 8.5), ("w", 11), ("uom", "in")]),
"size": {"h": 8.5, "w": 11, "uom": "in"},
"status": "D",
},
{
"item": "planner",
"qty": 75,
"size": SON([("h", 22.85), ("w", 30), ("uom", "cm")]),
"size": {"h": 22.85, "w": 30, "uom": "cm"},
"status": "D",
},
{
"item": "postcard",
"qty": 45,
"size": SON([("h", 10), ("w", 15.25), ("uom", "cm")]),
"size": {"h": 10, "w": 15.25, "uom": "cm"},
"status": "A",
},
]
@ -223,13 +219,13 @@ class TestSampleShellCommands(IntegrationTest):
# End Example 14
# Start Example 15
cursor = db.inventory.find({"size": SON([("h", 14), ("w", 21), ("uom", "cm")])})
cursor = db.inventory.find({"size": {"h": 14, "w": 21, "uom": "cm"}})
# End Example 15
self.assertEqual(len(cursor.to_list()), 1)
# Start Example 16
cursor = db.inventory.find({"size": SON([("w", 21), ("h", 14), ("uom", "cm")])})
cursor = db.inventory.find({"size": {"w": 21, "h": 14, "uom": "cm"}})
# End Example 16
self.assertEqual(len(cursor.to_list()), 0)
@ -324,39 +320,35 @@ class TestSampleShellCommands(IntegrationTest):
db = self.db
# Start Example 29
# Subdocument key order matters in a few of these examples so we have
# to use bson.son.SON instead of a Python dict.
from bson.son import SON
db.inventory.insert_many(
[
{
"item": "journal",
"instock": [
SON([("warehouse", "A"), ("qty", 5)]),
SON([("warehouse", "C"), ("qty", 15)]),
{"warehouse": "A", "qty": 5},
{"warehouse": "C", "qty": 15},
],
},
{"item": "notebook", "instock": [SON([("warehouse", "C"), ("qty", 5)])]},
{"item": "notebook", "instock": [{"warehouse": "C", "qty": 5}]},
{
"item": "paper",
"instock": [
SON([("warehouse", "A"), ("qty", 60)]),
SON([("warehouse", "B"), ("qty", 15)]),
{"warehouse": "A", "qty": 60},
{"warehouse": "B", "qty": 15},
],
},
{
"item": "planner",
"instock": [
SON([("warehouse", "A"), ("qty", 40)]),
SON([("warehouse", "B"), ("qty", 5)]),
{"warehouse": "A", "qty": 40},
{"warehouse": "B", "qty": 5},
],
},
{
"item": "postcard",
"instock": [
SON([("warehouse", "B"), ("qty", 15)]),
SON([("warehouse", "C"), ("qty", 35)]),
{"warehouse": "B", "qty": 15},
{"warehouse": "C", "qty": 35},
],
},
]
@ -364,13 +356,13 @@ class TestSampleShellCommands(IntegrationTest):
# End Example 29
# Start Example 30
cursor = db.inventory.find({"instock": SON([("warehouse", "A"), ("qty", 5)])})
cursor = db.inventory.find({"instock": {"warehouse": "A", "qty": 5}})
# End Example 30
self.assertEqual(len(cursor.to_list()), 1)
# Start Example 31
cursor = db.inventory.find({"instock": SON([("qty", 5), ("warehouse", "A")])})
cursor = db.inventory.find({"instock": {"qty": 5, "warehouse": "A"}})
# End Example 31
self.assertEqual(len(cursor.to_list()), 0)