Release Notes - Python Driver - Version 4.12 - HTML format

Spec Change

  • [PYTHON-4575] - Allow valid SRV hostnames with less than 3 parts
  • [PYTHON-4936] - Test operations may be an empty array
  • [PYTHON-4938] - Clarify write concern rules in the transactions spec
  • [PYTHON-4942] - Add test to ensure network errors match isClientError
  • [PYTHON-4960] - Update SDAM spec to include error messages for electionId/setVersion mismatches
  • [PYTHON-5208] - Test that wait queue timeout errors do not clear the pool

Build Failure

  • [PYTHON-5058] - Wheel builds that use Qemu are seg faulting
  • [PYTHON-5134] - [BuildFailure] AWS ECS test fails to create temp directory
  • [PYTHON-5146] - [Build Failure] AWS ECS Could not find user
  • [PYTHON-5147] - [Build Failure] OCSP should not be tested on MongoDB 4.2
  • [PYTHON-5155] - Linkcheck failing on FAQ page
  • [PYTHON-5164] - Test Failure - mockupdb TestClusterTime
  • [PYTHON-5173] - Test Failure - test_continuous_network_errors
  • [PYTHON-5178] - Test Failure - test_async_cancellation_closes_change_stream
  • [PYTHON-5182] - [Build Failure] OCSP failing to start server
  • [PYTHON-5192] - [Build Failure] Tests fail to start server
  • [PYTHON-5193] - [Build Failure] mod-wsgi tests are missing c extensions
  • [PYTHON-5198] - test_encryption.TestAutomaticDecryptionKeys.test_03_invalid_keyid incorrect regex error
  • [PYTHON-5199] - All tests are running with "latest" server
  • [PYTHON-5210] - [Build Failure] Unable to install server on Win32 builds
  • [PYTHON-5232] - [Build Failure] AWS Lambda test failing on test setup
  • [PYTHON-5241] - [Build Failure] AWS Lambda failing due to missing _timeout attribute
  • [PYTHON-5255] - OIDC test is failing due to delayed URI parsing
  • [PYTHON-5260] - [Build Failure] OCSP SSL handshake failed
  • [PYTHON-5268] - Tests using the newest Python version and not their configured one

Bug

  • [PYTHON-5166] - db.command({bulkwrite: 1, ...}) throws because 1 is not iterable
  • [PYTHON-5172] - Add __repr__ and __eq__ to bson.binary.BinaryVector
  • [PYTHON-5202] - WaitQueueTimeoutError causes pool to be cleared
  • [PYTHON-5226] - SRV polling dns lookup blocks the asyncio loop
  • [PYTHON-5242] - MongoClient does not define all attributes in __init__
  • [PYTHON-5270] - Server selection logs remainingTimeMS in seconds not milliseconds

New Feature

  • [PYTHON-4580] - Add option to configure DEK cache lifetime
  • [PYTHON-4946] - GridFS spec: Add performant "rename all revisions by filename" feature - rename_by_name
  • [PYTHON-4947] - GridFS spec: Add performant "delete revisions by filename" feature - delete_by_name
  • [PYTHON-5046] - Support $lookup in CSFLE and QE

Task

  • [PYTHON-3674] - Simplify transaction options in convenient API doc example code
  • [PYTHON-3712] - Deprecate sharded-replicaset topology type and clean up redundant runOnRequirements
  • [PYTHON-4020] - Drivers should unpin connections when ending a session
  • [PYTHON-4540] - Use a separate test setup phase written in python
  • [PYTHON-4724] - Prohibit AsyncMongoClient from being used across multiple event loops
  • [PYTHON-4745] - Document and Test Behavior when User Cancels Async Operation
  • [PYTHON-4833] - Add Collection bulk_write benchmarks
  • [PYTHON-4939] - Fix bug in CSOT runCursorCommand test
  • [PYTHON-5047] - Improve testing of publish workflows
  • [PYTHON-5053] - AsyncMongoClient.close() should await all background tasks
  • [PYTHON-5062] - Add GitHub Actions CodeQL scanning
  • [PYTHON-5071] - Async tests should all share a single event loop
  • [PYTHON-5111] - Update datetime_conversion docs
  • [PYTHON-5112] - Fix just install
  • [PYTHON-5115] - Type validation errors should include the invalid type name
  • [PYTHON-5120] - Reduce configureFailPoint duplication in the test suite
  • [PYTHON-5129] - Async transaction documentation does not align with actual behavior
  • [PYTHON-5131] - Migrate off of Ubuntu 20.04 GitHub Actions Runners
  • [PYTHON-5137] - Handle libmongocrypt download in python
  • [PYTHON-5138] - Convert setup_tests.py to a cli
  • [PYTHON-5142] - Skip non-lb-connection-establishment test on server >=8.1
  • [PYTHON-5148] - Update workflows and release process for Kondukto
  • [PYTHON-5149] - Convert run-tests.sh to a Python script
  • [PYTHON-5151] - Convert kms tests to use python scripts
  • [PYTHON-5157] - Convert aws tests to use python scripts
  • [PYTHON-5169] - Deprecate Hedged Reads option
  • [PYTHON-5180] - Ensure all python projects in mongodb are running nightly
  • [PYTHON-5181] - Make it easier to set debugging logging in an Evergreen patch
  • [PYTHON-5183] - Fix C Extension building for Windows spawn hosts
  • [PYTHON-5184] - Revert skip to non-lb-connection-establishment
  • [PYTHON-5185] - Use stable version of Python for perf tests
  • [PYTHON-5187] - Add scripts to start and stop a server
  • [PYTHON-5189] - Explicitly test drivers on Graviton processors
  • [PYTHON-5194] - Test IPv6 literal in SDAM
  • [PYTHON-5195] - Convert OCSP tests to use new test scripts
  • [PYTHON-5196] - Convert OIDC tests to use new test scripts
  • [PYTHON-5203] - Use stable toolchain versions for uv and just binaries
  • [PYTHON-5204] - Convert Serverless tests to use new test scripts
  • [PYTHON-5205] - Documentation links should use https not http
  • [PYTHON-5206] - Convert Atlas Connect and Enterprise Auth tests to use new test scripts
  • [PYTHON-5207] - Convert mod_wsgi tests to use the new test runner
  • [PYTHON-5213] - Convert AWS Lambda and Search Index tests to use new test scripts
  • [PYTHON-5216] - Convert perf tests to use new scripts
  • [PYTHON-5217] - Convert Atlas Data Lake Tests to use New Test Scripts
  • [PYTHON-5220] - Convert remaining tests to use standard test setup
  • [PYTHON-5231] - Finish up test scripts and add documentation for creating a new test suite
  • [PYTHON-5233] - Allow python version to be set at the task level
  • [PYTHON-5234] - Clean up load balancer variants
  • [PYTHON-5236] - Test sharded clusters with requireApiVersion=1
  • [PYTHON-5239] - Audit bash scripts for consistency
  • [PYTHON-5240] - Add pre-commit hook for config generation
  • [PYTHON-5243] - Migrate remaining variants to generated config
  • [PYTHON-5245] - Convert remaining tasks to generated config
  • [PYTHON-5252] - Add dependency on pymongocrypt 1.13
  • [PYTHON-5261] - Clean up compression variants
  • [PYTHON-5263] - Convert s3-related functions to generated config

Improvement

  • [PYTHON-3636] - MongoClient should perform SRV resolution lazily
  • [PYTHON-4471] - Logging records should have a standard field order
  • [PYTHON-4493] - Use asyncio protocols instead of sockets for network IO
  • [PYTHON-4557] - Add log message for retried commands
  • [PYTHON-4579] - Gossiping the cluster time from monitoring connections can result in loss of availability
  • [PYTHON-4940] - Add index hint support for distinct command
  • [PYTHON-5054] - Investigate changes in SERVER-97071: Ensure stability of resumeTokens across versions
  • [PYTHON-5168] - Use logging for client background task errors
  • [PYTHON-5219] - Avoid awaiting coroutines while holding pool locks

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.