Release Notes - Python Driver - Version 4.9 - HTML format

Spec Change

  • [PYTHON-3967] - SDAM unit test sharded/too_new needs to defined wireVersions for host b
  • [PYTHON-4605] - Test serverMonitoringMode=poll waits after a successful heartbeat

Build Failure

  • [PYTHON-4182] - [Build Failure] test_unpin_after_TransientTransactionError_error_on_abort
  • [PYTHON-4398] - [Build Failure] RuntimeError: can't start new thread on Windows Hosts
  • [PYTHON-4448] - Stop testing macOS 10.14
  • [PYTHON-4509] - Python 3.8 missing on FIPS hosts
  • [PYTHON-4538] - Test Failure - coroutine 'AsyncClientContext._check_user_provided' was never awaited
  • [PYTHON-4560] - Test failure: test.test_bulk.TestBulkWriteConcern.test_write_concern_failure_unordered
  • [PYTHON-4586] - [Build Failure] Invalid hatch invocation
  • [PYTHON-4601] - [Build Failure] Azure KMS and GCP KMS setup failures
  • [PYTHON-4607] - Test Failure - 'LogRecord' object has no attribute 'message'
  • [PYTHON-4613] - Eventlet tests failing with Runner.run() cannot be called from a running event loop
  • [PYTHON-4614] - Test Failure - OpenSSL 1.0.2 PyPy 3.10 fails to install hatch
  • [PYTHON-4617] - Test Failure - Storage MMAPv1
  • [PYTHON-4637] - Azure KMS Build Failure
  • [PYTHON-4641] - TestClientBulkWriteTimeout.test_timeout_in_multi_batch_bulk_write failure
  • [PYTHON-4643] - Test failure - test_to_list_tailable
  • [PYTHON-4644] - Test Failure - cannot remove 'hatchenv/Scripts/python.exe': Permission denied
  • [PYTHON-4650] - Test Failure - test_no_batch_splits_if_new_namespace_is_not_too_large
  • [PYTHON-4671] - ClientBulkWrite failures on Serverless
  • [PYTHON-4701] - Topology logging should use suppress_event
  • [PYTHON-4706] - [Build Failure] Cannot install hatch on RHEL 8.3 (zSeries)
  • [PYTHON-4735] - Test Failure - TestUnifiedLoggingLoadbalanced
  • [PYTHON-4736] - Test Failure - macOS Too many open files
  • [PYTHON-4739] - Async TestEncryptedBulkWrite should use AsyncBulkTestBase
  • [PYTHON-4753] - [Build Failure] Async tests missing awaits
  • [PYTHON-4768] - Test Failure - Atlas connect tests are failing due to unclosed client

Bug

  • [PYTHON-2052] - PyMongo does not truncate client metadata document to 512 bytes
  • [PYTHON-4532] - Docs pages for unasync generated modules are blank
  • [PYTHON-4585] - Cursor.to_list does not apply client's timeoutMS setting
  • [PYTHON-4588] - Connection string parser allows invalid passwords, prints passwords
  • [PYTHON-4600] - bugfix: handle round trip time being negative because time.monotonic() is not monotonic #1758
  • [PYTHON-4640] - ObjectID computation is inefficient when used in a multi-threaded environment
  • [PYTHON-4648] - Async is broken on Windows
  • [PYTHON-4660] - bulk_write fails with AttributeError when a batch fails with InvalidBSON
  • [PYTHON-4663] - dateutil timezones do not work with DATETIME_CLAMP/DATETIME_AUTO
  • [PYTHON-4666] - client.bulk_write does not properly check for large documents
  • [PYTHON-4667] - client.bulk_write does not handle $clusterTime from error responses
  • [PYTHON-4672] - Clarify Reauthentication and Speculative Authentication combination behavior
  • [PYTHON-4691] - non-UTC timezones break DATETIME_CLAMP/DATETIME_AUTO
  • [PYTHON-4695] - Fix test event loop policy and improve error traceback for ClientBulkWriteException
  • [PYTHON-4730] - Failing Async Bulk Tests
  • [PYTHON-4740] - Catch and Re-raise Async Timeout error
  • [PYTHON-4756] - Optional `pymongo[srv]` extra requirement breaks in 4.8,0
  • [PYTHON-4758] - MongoClient with connect=False still generates a resource warning

Epic

New Feature

Task

  • [PYTHON-2925] - Change pymongo so that motor no longer needs to access private cursor apis
  • [PYTHON-4021] - Publish TopologyDescriptionChangedEvent on topology close
  • [PYTHON-4025] - Update PyMongo Release instructions
  • [PYTHON-4150] - Document that server version 3.6 is EOL and will be dropped in the next release
  • [PYTHON-4226] - Docs example request: Projection with aggregation expressions
  • [PYTHON-4242] - Convert retryable writes spec tests to unified test format
  • [PYTHON-4245] - Convert CRUD v1 spec tests to unified test format
  • [PYTHON-4249] - Convert retryable reads spec tests to unified test format
  • [PYTHON-4266] - Migrate Atlas Data Lake tests to unified test format
  • [PYTHON-4267] - Convert read/write concern spec tests to unified test format
  • [PYTHON-4392] - Support Range Indexes as GA
  • [PYTHON-4396] - Enable tests that require failCommand with appName on initial handshake before 4.9
  • [PYTHON-4458] - Test against Python 3.13 beta
  • [PYTHON-4480] - Deprecate create=True for Collection
  • [PYTHON-4483] - Use hatch as task runner
  • [PYTHON-4518] - Clean up EVG S3 handling
  • [PYTHON-4524] - Bump maxWireVersion for MongoDB 8.0
  • [PYTHON-4526] - Document that DRIVERS_TOOLS needs to be set to run some tox tests
  • [PYTHON-4527] - pymongocrypt range GA changes breaks support for rangePreview for existing pymongo versions
  • [PYTHON-4529] - Bump minimum pymongocrypt version req to >=1.10 for range v2 and async support
  • [PYTHON-4531] - RANGEPREVIEW constant is missing
  • [PYTHON-4536] - Fix param doc strings for various methods
  • [PYTHON-4551] - Remove Serverless Proxy Incremental Rollout Tests
  • [PYTHON-4556] - Migrate macOS tests from MacStadium to AWS
  • [PYTHON-4558] - Fix coverage and XML results for async tests
  • [PYTHON-4590] - Add type guards to async API methods
  • [PYTHON-4596] - Only encode each operation document once for MongoClient.bulk_write
  • [PYTHON-4609] - Test suite is taking a long time to run
  • [PYTHON-4610] - test_to_list_tailable takes 20 seconds
  • [PYTHON-4615] - Compile warning building python 3.8 manylinux wheel
  • [PYTHON-4616] - Remove EVG release scripts
  • [PYTHON-4630] - Add documentation for MongoClient.bulk_write()
  • [PYTHON-4632] - test_connection_timeout_message takes 30 seconds
  • [PYTHON-4633] - TestCollectionChangeStream.test_uuid_representations takes 11 seconds
  • [PYTHON-4639] - Try migrating Motor tests to PyMongo Async tests
  • [PYTHON-4649] - Skip CSOT tests on EVG on MacOS and Windows
  • [PYTHON-4651] - Migrate test_client_context.py to async
  • [PYTHON-4652] - Remove duplicate async tests in github actions
  • [PYTHON-4654] - Clean up Async API to match Motor
  • [PYTHON-4656] - Enterprise auth tests are no longer running
  • [PYTHON-4659] - Async does not work with PyOpenSSL
  • [PYTHON-4661] - Release 4.9
  • [PYTHON-4662] - Ensure we are capturing metadata when AsyncMongoClient is used
  • [PYTHON-4669] - Update More APIs for Motor Compatibility
  • [PYTHON-4673] - Add Async Encryption Tests
  • [PYTHON-4692] - Skip clientBulkWrite CSOT tests on MacOS and Windows
  • [PYTHON-4698] - Rename the async ClientEncryption to AsyncClientEncryption
  • [PYTHON-4704] - Migrate test_bulk.py to async
  • [PYTHON-4712] - Docs for encoding/decoding Python types to BSON types is out of date
  • [PYTHON-4727] - Migrate test_monitoring.py to async
  • [PYTHON-4731] - Explicitly close all MongoClients opened during tests
  • [PYTHON-4732] - Migrate test_auth_spec.py to async
  • [PYTHON-4733] - Migrate test_auth.py to async
  • [PYTHON-4747] - Restore git blame for synchronous files
  • [PYTHON-4749] - Add Script to Cherry-Pick PRs
  • [PYTHON-4750] - Add support for Python 3.13
  • [PYTHON-4752] - Migrate docs links to Internal Docs Where Possible
  • [PYTHON-4763] - Migrate test_change_stream.py to async

Improvement

  • [PYTHON-3193] - Add ResourceWarning for unclosed MongoClients in __del__
  • [PYTHON-4240] - Update test definition in Client-Side encryption tests
  • [PYTHON-4279] - Ensure openssl legacy unsafe renegotiation can be configured via the MongoClient
  • [PYTHON-4379] - Test that durations are included on relevant pool events
  • [PYTHON-4478] - Use single mongos in racy unacknowledged write tests
  • [PYTHON-4611] - cryptography deprecation: Properties that return a naïve datetime object have been deprecated. Please switch to this_update_utc
  • [PYTHON-4668] - Improve performance of client.bulk_write
  • [PYTHON-4690] - Add repr support to bson.tz_util.FixedOffset
  • [PYTHON-4703] - MongoClient should default to connect=False on FaaS environments

Edit/Copy Release Notes

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