Release Notes - Python Driver - Version 4.1 - HTML format

Spec Change

  • [PYTHON-2554] - Support $merge and $out executing on secondaries
  • [PYTHON-2863] - Allow hint for unacknowledged writes using OP_MSG when supported by the server
  • [PYTHON-2931] - Server selection lacks guidance on using $readPreference global command argument for OP_MSG
  • [PYTHON-2956] - Drivers should check out an implicit session only after checking out a connection
  • [PYTHON-2957] - Support 'let' option for multiple CRUD commands
  • [PYTHON-3119] - getMore helper should explicitly send inherited comment

Bug

  • [PYTHON-3041] - Cannot initiate a replica set with pymongo>=4
  • [PYTHON-3075] - bulk_write does not apply CodecOptions to upserted_ids result
  • [PYTHON-3078] - Remove Use of Unsupported NoReturn Type Class
  • [PYTHON-3084] - Collection is defined like Iterable but actually isn’t
  • [PYTHON-3137] - Handle falsey values for "let" parameter
  • [PYTHON-3164] - Outdated link from PyMongo docs to community forum
  • [PYTHON-3186] - AWS Lambda/FaaS pause and resume behavior causes SDAM heartbeats to timeout

Epic

New Feature

  • [PYTHON-2682] - Add support for the comment field to all helpers
  • [PYTHON-3061] - Add 'let' option to ReplaceOptions
  • [PYTHON-3068] - Add 'let' option to bulk_write models (UpdateOne, ReplaceOne, etc)
  • [PYTHON-3092] - Add Type Discovery Files

Task

  • [PYTHON-1596] - Test on RHEL 7 FIPS
  • [PYTHON-1643] - Resync read write concern tests to add new read concern levels
  • [PYTHON-1834] - Use a code formatter
  • [PYTHON-2086] - Verify max set version and max election id on topologies in SDAM spec tests
  • [PYTHON-2147] - OCSP callback should use the verified peer certificate chain to find the cert issuer
  • [PYTHON-2160] - Find alternative to Google Groups email addresses
  • [PYTHON-2353] - Update create_collection docs with more options
  • [PYTHON-2473] - Migrate community pull request testing to github actions
  • [PYTHON-2585] - Remove legacy multi-auth code (__all_credentials)
  • [PYTHON-2763] - Cleanup check_keys and remove $clusterTime workarounds
  • [PYTHON-2888] - Migrate uses of json.send to perf.send in Evergreen project YAML
  • [PYTHON-2951] - Drivers should retry operations if connection handshake fails
  • [PYTHON-3026] - Test Failure - Windows Python 3.6 fails to install cryptography
  • [PYTHON-3040] - Remove srvMaxHosts tests expecting an error for invalid values
  • [PYTHON-3042] - Migrate OCSP testing to Ubuntu 20.04
  • [PYTHON-3043] - Test mod_wsgi with Python 3.10
  • [PYTHON-3046] - Document support for more unicode_decode_error_handler values
  • [PYTHON-3049] - Test with PyPy 3.8
  • [PYTHON-3058] - Bump maxWireVersion for MongoDB 5.2
  • [PYTHON-3071] - [DevOps] Merge and improve resync_specs.sh
  • [PYTHON-3072] - Add an Address Type Alias
  • [PYTHON-3073] - Copy the unit tests from pymongo-stubs into pymongo
  • [PYTHON-3074] - Add documentation for type hints
  • [PYTHON-3109] - Test against latest rapid releases
  • [PYTHON-3110] - Remove use of example.com in Client Side Encryption prose tests
  • [PYTHON-3111] - Rename "Versioned API" to "Stable API" in documentation
  • [PYTHON-3123] - Convert sessions spec tests to unified test format
  • [PYTHON-3127] - Snapshot Query Examples for the Manual
  • [PYTHON-3131] - Test Failure - test_mypy on macos + auth
  • [PYTHON-3136] - [DevOps] Resync-specs.sh removes ignored files from working tree
  • [PYTHON-3138] - Remove or update Copying a Database example
  • [PYTHON-3141] - Add slotscheck to pre-commit checks
  • [PYTHON-3142] - Test Failure - test_pooling.TestPooling.test_maxConnecting
  • [PYTHON-3146] - Test Failure - Could not import extension sphinxcontrib.shellcheck
  • [PYTHON-3147] - Test Failure - MONGODB-AWS Auth Ubuntu 18.04
  • [PYTHON-3155] - Sync CRUD spec tests - server version incompatibility for bulkWrite updateOne and updateMany server-side error tests
  • [PYTHON-3159] - AttributeError: 'ZlibContext' object has no attribute 'compress'
  • [PYTHON-3160] - Test Failure - mmapv1
  • [PYTHON-3171] - Add usage of NoReturn annotation
  • [PYTHON-3172] - Drop support for Python 3.6.0 and 3.6.1, require >=3.6.2
  • [PYTHON-3173] - Test Failure - test_examples.TestVersionedApiExamples.test_versioned_api_migration
  • [PYTHON-3174] - Remove noisy Topology has THREADS RUNNING check for main test client
  • [PYTHON-3180] - Perf test are failing due to using Python 3.6.0
  • [PYTHON-3185] - Pre-Commit Needs an Upgrade
  • [PYTHON-3190] - Test Failure - doctests failing cannot import name 'TypedDict'
  • [PYTHON-3191] - Test Failure - Versioned API requireApiVersion1

Improvement

  • [PYTHON-1864] - Don't send $readPreference to standalone servers
  • [PYTHON-2203] - Add tests for allowed cases when authSource is given but username is not
  • [PYTHON-2406] - Clean up of tools documentation page
  • [PYTHON-2858] - Use OP_MSG to authenticate if server supports OP_MSG
  • [PYTHON-2952] - Require hello command for connection handshake to use OP_MSG, disallowing OP_QUERY
  • [PYTHON-3052] - Add Typings to PyMongo Itself
  • [PYTHON-3060] - Add typings to pymongo package
  • [PYTHON-3062] - Make Regex generic
  • [PYTHON-3064] - Add typings to test package
  • [PYTHON-3085] - Audit consistent and correct types for _DocumentOut
  • [PYTHON-3086] - Fix bulk_write typing
  • [PYTHON-3088] - Update load balancer tests to support dedicated load balancer port
  • [PYTHON-3090] - Clean up Database Command Typing
  • [PYTHON-3120] - Set up flake8 linting
  • [PYTHON-3124] - _WriteResult subclasses redefine "__acknowledged" slot
  • [PYTHON-3157] - Update Release Documentation to Include Github Releases

Edit/Copy Release Notes

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