Spec Change
- [PYTHON-3096] - Implement GSSAPI ServiceHost support in all drivers
- [PYTHON-4453] - Server 8.0+ requires tests for aggregation with $out to not pre-create output collection
- [PYTHON-4766] - Fix logic for determining whether to populate BulkWriteException.partialResult
- [PYTHON-4807] - Specify how to handle unacknowledged+(ordered|verbose|multi-batch) bulk writes
- [PYTHON-4919] - Convert retryable write command construction prose tests to spec tests
- [PYTHON-4922] - Remove Support for MONGODB-CR Authentication
- [PYTHON-4925] - Fix testing bugs in $$matchAsRoot and $$matchAsDocument operators
- [PYTHON-4999] - Skip aggregate $out test in retryable writes spec on serverless
Build Failure
- [PYTHON-4356] - [Build Failure] TestUnifiedDbAggregateWriteReadPreference on Latest
- [PYTHON-4447] - [Build Failure] OIDC Authentication failed
- [PYTHON-4827] - Fix dnspython typechecking failures
- [PYTHON-4861] - hatch failing with Permission denied on macOS
- [PYTHON-4862] - Unified test runner is not interruptible
- [PYTHON-4866] - [Build Failure] test_command_cursor_to_list_csot_applied on MacOS
- [PYTHON-4874] - [Build Failure] test_encryption.AsyncTestSpec failures
- [PYTHON-4887] - [Build Failure] Do not test macos arm64 on server versions < 6.0
- [PYTHON-4909] - Atlas Data Lake tests are using the wrong hosts
- [PYTHON-4980] - Tests fail now that killAllSessions raises network error on 8.0
- [PYTHON-5005] - [Build Failure] test_timeout_nested
- [PYTHON-5006] - [Build Failure] test_encryption.TestKmsRetryProse.test_kms_retry
- [PYTHON-5008] - [Build Failure] could not load C extensions
- [PYTHON-5014] - Test Failure - TestKmsTLSOptions.test_01_aws with Python 3.13
- [PYTHON-5019] - Python 3.13 mod_wsgi tests failing
- [PYTHON-5050] - KMS and Other Host Failures
Bug
- [PYTHON-4292] - Perf regression when reading large SSL responses from multiple threads
- [PYTHON-4414] - interruptInUseConnections should cancel pending connections too
- [PYTHON-4636] - Avoid blocking I/O calls in async code paths
- [PYTHON-4885] - Legacy extended json encoding of DatetimeMS is incorrect
- [PYTHON-4907] - MongoClient del raises TypeError: 'NoneType' object is not callable
- [PYTHON-4977] - Pymongo import is extremely slow on windows (PYTHON-4455 regression)
- [PYTHON-5011] - [Build Failure] PyPy3.10 closed connections
- [PYTHON-5013] - Coverity warnings in InvalidDocument bson changes
- [PYTHON-5020] - socketTimeoutMS does not work with pyopenssl
Epic
- [PYTHON-4813] - Use Markdown for Specifications Documentation
Task
- [PYTHON-2187] - Remove easy_install from documentation
- [PYTHON-2867] - Support for sspiHostnamecanonicalization=none/forward/forwardAndReverse for Kerberos
- [PYTHON-3730] - Test suite no longer catches when C extension fail to compile
- [PYTHON-4330] - Add Kubernetes Support for OIDC
- [PYTHON-4450] - Add support for free-threaded Python (no GIL)
- [PYTHON-4646] - Improve usage of hatch in evergreen
- [PYTHON-4700] - Convert CSFLE tests to async
- [PYTHON-4729] - Drop support for Server version 3.6 (Min server version as 4.0, minWireVersion as 7)
- [PYTHON-4754] - Add gevent test for Python 3.13
- [PYTHON-4804] - Migrate test_comment.py to async
- [PYTHON-4817] - Revert import guard on asyncio
- [PYTHON-4818] - Use OCSP Scripts from Drivers-Tools
- [PYTHON-4828] - Drop Python 3.8 support
- [PYTHON-4831] - Remove pytz from examples
- [PYTHON-4837] - Use shrub.py to generate evergreen variants instead of using matrix
- [PYTHON-4840] - Add evergreen tests for free-threaded Python 3.13t
- [PYTHON-4845] - Ensure ALLOWED_HOSTS not applicable for Workload Usage
- [PYTHON-4870] - MongoClient.address should block until a connection succeeds or fails
- [PYTHON-4873] - Remove bson-stdint-win32.h from THIRD-PARTY-NOTICES
- [PYTHON-4883] - Add release dates to changelog
- [PYTHON-4894] - Fix handling of auth test marker
- [PYTHON-4897] - Remove Assign PR Reviewer from PyMongo
- [PYTHON-4902] - Use shrub.py to generate server tasks
- [PYTHON-4903] - Update signature of Binary.from_vector to take BinaryVector as single argument
- [PYTHON-4905] - Use shrub.py to generate load balancer tasks
- [PYTHON-4906] - Add branch creation workflow to Python Driver
- [PYTHON-4910] - Add server tasks that use both sync and async
- [PYTHON-4943] - Clean up EVG Variant Display Names
- [PYTHON-4944] - Remove BETA from Binary BSON Vector Specifications
- [PYTHON-4949] - [EoL 4.0] Communicate future minWireVersion bump / 4.0 EoL
- [PYTHON-4956] - Generated evergreen config cleanup
- [PYTHON-4958] - Adopt zizmor GitHub Actions security scanner
- [PYTHON-4975] - Use justfile as the task runner
- [PYTHON-4976] - Replace hatch with uv as our python environment and workflow tool
- [PYTHON-4991] - Perf regression for client.bulk_write
- [PYTHON-5002] - Add guard to synchro hook to accidental overwrite
- [PYTHON-5003] - Update pymongo's pymongocrypt version to >=1.12
- [PYTHON-5016] - Create spawn host helper scripts
- [PYTHON-5017] - Update repos to use a separate PyPI publish step
- [PYTHON-5018] - Use a single script for system setup
- [PYTHON-5021] - Fix usages of getaddrinfo to be non-blocking
- [PYTHON-5038] - Test Failure - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1020)
- [PYTHON-5043] - Type annotation is incorrect in binary.py
- [PYTHON-5044] - Successive AsyncMongoClients on a single loop always timeout on server selection
- [PYTHON-5049] - Drop support for PyPy 3.9
- [PYTHON-5057] - Avoid updating the uv lock unintentionally
- [PYTHON-5059] - Update default maxMessageSizeBytes and maxWriteBatchSize
Improvement
- [PYTHON-1982] - pass invalid document to bson.errors.InvalidDocument
- [PYTHON-2560] - Retry KMS requests on transient errors
- [PYTHON-4209] - Rearchitect User Acquisition in Authentication and Authorization Workflow
- [PYTHON-4576] - Allow update to supply sort option
- [PYTHON-4725] - Async client should use tasks for SDAM instead of threads
- [PYTHON-4915] - Add guidance on adding _id fields to documents to CRUD spec
- [PYTHON-4921] - Eliminate unnecessary killCursors command when batchSize == limit
- [PYTHON-5042] - Relax requirement for optional fields and introducing appName for failPoints for transactions unified tests
Sub-task
- [PYTHON-4838] - Generate OCSP build variants using shrub.py
- [PYTHON-4868] - Generate the main test matrix with shrub.py
- [PYTHON-4872] - Use shrub.py to generate encryption tasks
- [PYTHON-4878] - Use shrub.py for load balancer tests
- [PYTHON-4879] - Update compression tests to use shrub.py
- [PYTHON-4882] - Use shrub.py for enterprise auth tests
- [PYTHON-4886] - Use shrub.py for PyOpenSSL tests
- [PYTHON-4888] - Use shrub.py for versioned api tests
- [PYTHON-4889] - Use shrub.py for green framework tests
- [PYTHON-4890] - Use shrub.py for storage engine tests
- [PYTHON-4891] - Use shrub.py to generate c extensions tasks
- [PYTHON-4892] - Convert remaining axes values to use shrub.py
- [PYTHON-4893] - Use shrub.py for AWS auth tasks
- [PYTHON-4896] - Use shrub.py for alternative host tests
- [PYTHON-4898] - Ensure consistent versions of tests across hosts
- [PYTHON-4900] - Convert remaining matrix definitions to use shrub.py
- [PYTHON-4901] - Move generated Evergreen variants to an included file
- [PYTHON-4959] - Add zizmor to pymongo
Edit/Copy Release Notes
The text area below allows the project release notes to be edited and copied to another document.