Release notes
*Sourced from [pymongo's releases](https://github.com/mongodb/mongo-python-driver/releases).*
> ## 3.9.0b1
> Beta release for MongoDB 4.2 support.
>
> Documentation - https://api.mongodb.com/python/3.9.0b1/
> Changelog - https://api.mongodb.com/python/3.9.0b1/changelog.html#changes-in-version-3-9-0b1
> Installation - https://api.mongodb.com/python/3.9.0b1/installation.html#installing-a-beta-or-release-candidate
Changelog
*Sourced from [pymongo's changelog](https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst).*
> Changes in Version 3.9.0
> ========================
>
> Version 3.9 adds support for MongoDB 4.2. Highlights include:
>
> - Support for MongoDB 4.2 sharded transactions. Sharded transactions have the same API as replica set transactions. See transactions-ref.
> - New method pymongo.client\_session.ClientSession.with\_transaction to support conveniently running a transaction in a session with automatic retries and at-most-once semantics.
> - Initial support for client side field level encyption. See the docstring for \~pymongo.mongo\_client.MongoClient, \~pymongo.encryption\_options.AutoEncryptionOpts, and \~pymongo.encryption for details. **Note: Support for client side encryption is in beta. Backwards-breaking changes may be made before the final release.**
> - Added the `max_commit_time_ms` parameter to \~pymongo.client\_session.ClientSession.start\_transaction.
> - Implement the [URI options specification](https://github.com/mongodb/specifications/blob/master/source/uri-options/uri-options.rst) in the \~pymongo.mongo\_client.MongoClient constructor. Consequently, there are a number of changes in connection options:
>
> > - The `tlsInsecure` option has been added.
> > - The `tls` option has been added. The older `ssl` option has been retained as an alias to the new `tls` option.
> > - `wTimeout` has been deprecated in favor of `wTimeoutMS`.
> > - `wTimeoutMS` now overrides `wTimeout` if the user provides both.
> > - `j` has been deprecated in favor of `journal`.
> > - `journal` now overrides `j` if the user provides both.
> > - `ssl_cert_reqs` has been deprecated in favor of `tlsAllowInvalidCertificates`. Instead of `ssl.CERT_NONE`, `ssl.CERT_OPTIONAL` and `ssl.CERT_REQUIRED`, the new option expects a boolean value - `True` is equivalent to `ssl.CERT_NONE`, while `False` is equivalent to `ssl.CERT_REQUIRED`.
> > - `ssl_match_hostname` has been deprecated in favor of `tlsAllowInvalidHostnames`.
> > - `ssl_ca_certs` has been deprecated in favor of `tlsCAFile`.
> > - `ssl_certfile` has been deprecated in favor of `tlsCertificateKeyFile`.
> > - `ssl_pem_passphrase` has been deprecated in favor of `tlsCertificateKeyFilePassword`.
> > - `waitQueueMultiple` has been deprecated without replacement. This option was a poor solution for putting an upper bound on queuing since it didn't affect queuing in other parts of the driver.
>
> - The `retryWrites` URI option now defaults to `True`. Supported write operations that fail with a retryable error will automatically be retried one time, with at-most-once semantics.
> - Support for retryable reads and the `retryReads` URI option which is enabled by default. See the \~pymongo.mongo\_client.MongoClient documentation for details. Now that supported operations are retried automatically and transparently, users should consider adjusting any custom retry logic to prevent an application from inadvertently retrying for too long.
> - Support zstandard for wire protocol compression.
> - Support for periodically polling DNS SRV records to update the mongos proxy list without having to change client configuration.
> - New method pymongo.database.Database.aggregate to support running database level aggregations.
> - Support for publishing Connection Monitoring and Pooling events via the new \~pymongo.monitoring.ConnectionPoolListener class. See \~pymongo.monitoring for an example.
> - pymongo.collection.Collection.aggregate and pymongo.database.Database.aggregate now support the `$merge` pipeline stage and use read preference \~pymongo.read\_preferences.ReadPreference.PRIMARY if the `$out` or `$merge` pipeline stages are used.
> - Support for specifying a pipeline or document in \~pymongo.collection.Collection.update\_one, \~pymongo.collection.Collection.update\_many, \~pymongo.collection.Collection.find\_one\_and\_update, \~pymongo.operations.UpdateOne, and \~pymongo.operations.UpdateMany.
> - New BSON utility functions \~bson.encode and \~bson.decode
> - \~bson.binary.Binary now supports any bytes-like type that implements the buffer protocol.
> - Resume tokens can now be accessed from a `ChangeStream` cursor using the \~pymongo.change\_stream.ChangeStream.resume\_token attribute.
> - Connections now survive primary step-down when using MongoDB 4.2+. Applications should expect less socket connection turnover during replica set elections.
>
> Unavoidable breaking changes:
>
> - Applications that use MongoDB with the MMAPv1 storage engine must now explicitly disable retryable writes via the connection string (e.g. `MongoClient("mongodb://my.mongodb.cluster/db?retryWrites=false")`) or the \~pymongo.mongo\_client.MongoClient constructor's keyword argument (e.g. `MongoClient("mongodb://my.mongodb.cluster/db", retryWrites=False)`) to avoid running into \~pymongo.errors.OperationFailure exceptions during write operations. The MMAPv1 storage engine is deprecated and does not support retryable writes which are now turned on by default.
> - In order to ensure that the `connectTimeoutMS` URI option is honored when connecting to clusters with a `mongodb+srv://` connection string, the minimum required version of the optional `dnspython` dependency has been bumped to 1.16.0. This is a breaking change for applications that use PyMongo's SRV support with a version of `dnspython` older than 1.16.0.
>
> Issues Resolved
> ---------------
>
> See the [PyMongo 3.9 release notes in JIRA](https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&version=21787) for the list of resolved issues in this release.
Commits
- [`e152e9e`](https://github.com/mongodb/mongo-python-driver/commit/e152e9eafa3c3e84f6e47159a148f70e0fb9508a) BUMP 3.9.0
- [`5847b34`](https://github.com/mongodb/mongo-python-driver/commit/5847b34f688002f4f177c1135e95c5440ef98527) Claim support for MongoDB 4.2
- [`1a7502c`](https://github.com/mongodb/mongo-python-driver/commit/1a7502c08a4059c02da3da8bd948d0360d653da6) Fix up changelog and docs for 3.9.0 release
- [`55c8bdd`](https://github.com/mongodb/mongo-python-driver/commit/55c8bdd346e6a269ecfe75997d9d7462fa6a81c8) PYTHON-1939 Add prose tests for BSON size limits and batch splitting
- [`94e2b10`](https://github.com/mongodb/mongo-python-driver/commit/94e2b103f17a298f601b6eb78ce87be1ce07037f) PYTHON-1959 Use read/writeConcern majority for key vault operations
- [`af0f6fd`](https://github.com/mongodb/mongo-python-driver/commit/af0f6fd264be28f999d2c6cfc83e480467a4d038) PYTHON-1955 Uninstall pymongocrypt after test suite
- [`ef8d1e2`](https://github.com/mongodb/mongo-python-driver/commit/ef8d1e2f2174b6d72a3b65692c53b234943f6fb5) PYTHON-1926 Raise an error for unsupported encryption operations
- [`8d693e8`](https://github.com/mongodb/mongo-python-driver/commit/8d693e85de816f8dafbb85eb3661ec7b5ac17c5a) PYTHON-1921 Raise InvalidOperation when using a closed encrypted client
- [`56bb5dd`](https://github.com/mongodb/mongo-python-driver/commit/56bb5dd1f7e1d13b260e0e3243eaa7448cb3818c) PYTHON-1944 Mark encryption as in beta
- [`6f00a24`](https://github.com/mongodb/mongo-python-driver/commit/6f00a240c78ee3bbe97406f03b52da368fc6140d) PYTHON-1955 Test encryption in evergreen
- Additional commits viewable in [compare view](https://github.com/mongodb/mongo-python-driver/compare/3.8.0...3.9.0)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking Bump now in your Dependabot dashboard.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Finally, you can contact us by mentioning @dependabot.
Coverage remained the same at 60.515% when pulling fdeee784d5aab07438704b9521dca5768939f574 on dependabot/pip/pymongo-3.9.0 into 1a4de0510bdb0b82b637b32372fef610a7500c43 on master.
Bumps pymongo from 3.8.0 to 3.9.0.
Release notes
*Sourced from [pymongo's releases](https://github.com/mongodb/mongo-python-driver/releases).* > ## 3.9.0b1 > Beta release for MongoDB 4.2 support. > > Documentation - https://api.mongodb.com/python/3.9.0b1/ > Changelog - https://api.mongodb.com/python/3.9.0b1/changelog.html#changes-in-version-3-9-0b1 > Installation - https://api.mongodb.com/python/3.9.0b1/installation.html#installing-a-beta-or-release-candidateChangelog
*Sourced from [pymongo's changelog](https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst).* > Changes in Version 3.9.0 > ======================== > > Version 3.9 adds support for MongoDB 4.2. Highlights include: > > - Support for MongoDB 4.2 sharded transactions. Sharded transactions have the same API as replica set transactions. See transactions-ref. > - New method pymongo.client\_session.ClientSession.with\_transaction to support conveniently running a transaction in a session with automatic retries and at-most-once semantics. > - Initial support for client side field level encyption. See the docstring for \~pymongo.mongo\_client.MongoClient, \~pymongo.encryption\_options.AutoEncryptionOpts, and \~pymongo.encryption for details. **Note: Support for client side encryption is in beta. Backwards-breaking changes may be made before the final release.** > - Added the `max_commit_time_ms` parameter to \~pymongo.client\_session.ClientSession.start\_transaction. > - Implement the [URI options specification](https://github.com/mongodb/specifications/blob/master/source/uri-options/uri-options.rst) in the \~pymongo.mongo\_client.MongoClient constructor. Consequently, there are a number of changes in connection options: > > > - The `tlsInsecure` option has been added. > > - The `tls` option has been added. The older `ssl` option has been retained as an alias to the new `tls` option. > > - `wTimeout` has been deprecated in favor of `wTimeoutMS`. > > - `wTimeoutMS` now overrides `wTimeout` if the user provides both. > > - `j` has been deprecated in favor of `journal`. > > - `journal` now overrides `j` if the user provides both. > > - `ssl_cert_reqs` has been deprecated in favor of `tlsAllowInvalidCertificates`. Instead of `ssl.CERT_NONE`, `ssl.CERT_OPTIONAL` and `ssl.CERT_REQUIRED`, the new option expects a boolean value - `True` is equivalent to `ssl.CERT_NONE`, while `False` is equivalent to `ssl.CERT_REQUIRED`. > > - `ssl_match_hostname` has been deprecated in favor of `tlsAllowInvalidHostnames`. > > - `ssl_ca_certs` has been deprecated in favor of `tlsCAFile`. > > - `ssl_certfile` has been deprecated in favor of `tlsCertificateKeyFile`. > > - `ssl_pem_passphrase` has been deprecated in favor of `tlsCertificateKeyFilePassword`. > > - `waitQueueMultiple` has been deprecated without replacement. This option was a poor solution for putting an upper bound on queuing since it didn't affect queuing in other parts of the driver. > > - The `retryWrites` URI option now defaults to `True`. Supported write operations that fail with a retryable error will automatically be retried one time, with at-most-once semantics. > - Support for retryable reads and the `retryReads` URI option which is enabled by default. See the \~pymongo.mongo\_client.MongoClient documentation for details. Now that supported operations are retried automatically and transparently, users should consider adjusting any custom retry logic to prevent an application from inadvertently retrying for too long. > - Support zstandard for wire protocol compression. > - Support for periodically polling DNS SRV records to update the mongos proxy list without having to change client configuration. > - New method pymongo.database.Database.aggregate to support running database level aggregations. > - Support for publishing Connection Monitoring and Pooling events via the new \~pymongo.monitoring.ConnectionPoolListener class. See \~pymongo.monitoring for an example. > - pymongo.collection.Collection.aggregate and pymongo.database.Database.aggregate now support the `$merge` pipeline stage and use read preference \~pymongo.read\_preferences.ReadPreference.PRIMARY if the `$out` or `$merge` pipeline stages are used. > - Support for specifying a pipeline or document in \~pymongo.collection.Collection.update\_one, \~pymongo.collection.Collection.update\_many, \~pymongo.collection.Collection.find\_one\_and\_update, \~pymongo.operations.UpdateOne, and \~pymongo.operations.UpdateMany. > - New BSON utility functions \~bson.encode and \~bson.decode > - \~bson.binary.Binary now supports any bytes-like type that implements the buffer protocol. > - Resume tokens can now be accessed from a `ChangeStream` cursor using the \~pymongo.change\_stream.ChangeStream.resume\_token attribute. > - Connections now survive primary step-down when using MongoDB 4.2+. Applications should expect less socket connection turnover during replica set elections. > > Unavoidable breaking changes: > > - Applications that use MongoDB with the MMAPv1 storage engine must now explicitly disable retryable writes via the connection string (e.g. `MongoClient("mongodb://my.mongodb.cluster/db?retryWrites=false")`) or the \~pymongo.mongo\_client.MongoClient constructor's keyword argument (e.g. `MongoClient("mongodb://my.mongodb.cluster/db", retryWrites=False)`) to avoid running into \~pymongo.errors.OperationFailure exceptions during write operations. The MMAPv1 storage engine is deprecated and does not support retryable writes which are now turned on by default. > - In order to ensure that the `connectTimeoutMS` URI option is honored when connecting to clusters with a `mongodb+srv://` connection string, the minimum required version of the optional `dnspython` dependency has been bumped to 1.16.0. This is a breaking change for applications that use PyMongo's SRV support with a version of `dnspython` older than 1.16.0. > > Issues Resolved > --------------- > > See the [PyMongo 3.9 release notes in JIRA](https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&version=21787) for the list of resolved issues in this release.Commits
- [`e152e9e`](https://github.com/mongodb/mongo-python-driver/commit/e152e9eafa3c3e84f6e47159a148f70e0fb9508a) BUMP 3.9.0 - [`5847b34`](https://github.com/mongodb/mongo-python-driver/commit/5847b34f688002f4f177c1135e95c5440ef98527) Claim support for MongoDB 4.2 - [`1a7502c`](https://github.com/mongodb/mongo-python-driver/commit/1a7502c08a4059c02da3da8bd948d0360d653da6) Fix up changelog and docs for 3.9.0 release - [`55c8bdd`](https://github.com/mongodb/mongo-python-driver/commit/55c8bdd346e6a269ecfe75997d9d7462fa6a81c8) PYTHON-1939 Add prose tests for BSON size limits and batch splitting - [`94e2b10`](https://github.com/mongodb/mongo-python-driver/commit/94e2b103f17a298f601b6eb78ce87be1ce07037f) PYTHON-1959 Use read/writeConcern majority for key vault operations - [`af0f6fd`](https://github.com/mongodb/mongo-python-driver/commit/af0f6fd264be28f999d2c6cfc83e480467a4d038) PYTHON-1955 Uninstall pymongocrypt after test suite - [`ef8d1e2`](https://github.com/mongodb/mongo-python-driver/commit/ef8d1e2f2174b6d72a3b65692c53b234943f6fb5) PYTHON-1926 Raise an error for unsupported encryption operations - [`8d693e8`](https://github.com/mongodb/mongo-python-driver/commit/8d693e85de816f8dafbb85eb3661ec7b5ac17c5a) PYTHON-1921 Raise InvalidOperation when using a closed encrypted client - [`56bb5dd`](https://github.com/mongodb/mongo-python-driver/commit/56bb5dd1f7e1d13b260e0e3243eaa7448cb3818c) PYTHON-1944 Mark encryption as in beta - [`6f00a24`](https://github.com/mongodb/mongo-python-driver/commit/6f00a240c78ee3bbe97406f03b52da368fc6140d) PYTHON-1955 Test encryption in evergreen - Additional commits viewable in [compare view](https://github.com/mongodb/mongo-python-driver/compare/3.8.0...3.9.0)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking
Bump now
in your Dependabot dashboard.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot.