* **Amazon SES:** Drop support for the Amazon SES v1 API.
If your ``EMAIL_BACKEND`` setting uses ``amazon_sesv1``,
or if you are upgrading from Anymail 9.x or earlier directly to 11.0 or later, see
`Migrating to the SES v2 API <https://anymail.dev/en/stable/esps/amazon_ses/#amazon-ses-v2>`__.
(Anymail 10.0 switched to the SES v2 API by default. If your ``EMAIL_BACKEND``
setting has ``amazon_sesv2``, change that to just ``amazon_ses``.)
SparkPost: When sending with a template_id, Anymail now raises an
error if the message uses features that SparkPost will silently ignore. See docs <https://anymail.dev/en/stable/esps/sparkpost/#sparkpost-template-limitations>__.
Features
* Add new ``merge_headers`` option for per-recipient headers with batch sends.
This can be helpful to send individual *List-Unsubscribe* headers (for example).
Supported for all current ESPs *except* MailerSend, Mandrill and Postal. See
`docs <https://anymail.dev/en/stable/sending/anymail_additions/#anymail.message.AnymailMessage.merge_headers>`__.
(Thanks to `@carrerasrodrigo`_ for the idea, and for the base and
Amazon SES implementations.)
* **Amazon SES:** Allow extra headers, ``metadata``, ``merge_metadata``,
and ``tags`` when sending with a ``template_id``.
(Requires boto3 v1.34.98 or later.)
* **MailerSend:** Allow all extra headers. (Note that MailerSend limits use
of this feature to "Enterprise accounts only.")
Fixes
~~~~~
* **Amazon SES:** Fix a bug that could result in sending a broken address header
if it had a long display name containing both non-ASCII characters and commas.
(Thanks to `@andresmrm`_ for isolating and reporting the issue.)
* **SendGrid:** In the tracking webhook, correctly report "bounced address"
(recipients dropped due to earlier bounces) as reject reason ``"bounced"``.
(Thanks to `@vitaliyf`_.)
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/anymail/django-anymail/commit/78ccd72fbee30f214e3228dbc10189a1bc9e5f09"><code>78ccd72</code></a> Release 11.0</li>
<li><a href="https://github.com/anymail/django-anymail/commit/567fbb52ab439a083ee1865eb3af66a90ba38be3"><code>567fbb5</code></a> Amazon SES: Fix header encoding problem</li>
<li><a href="https://github.com/anymail/django-anymail/commit/c4b2e08b1688da09dec6da9c4fea509672878a13"><code>c4b2e08</code></a> SparkPost: error on features incompatible with template_id</li>
<li><a href="https://github.com/anymail/django-anymail/commit/5c2f2fd35a0ab24482f1d83cfe4793b62a041b9f"><code>5c2f2fd</code></a> Docs: add notes to esp-feature-matrix</li>
<li><a href="https://github.com/anymail/django-anymail/commit/f355bd533c4e3b2d7c5825421c19530174c032bc"><code>f355bd5</code></a> Docs: new ownership for several ESPs</li>
<li><a href="https://github.com/anymail/django-anymail/commit/faf98c22d73d82f6e35395f04e77a096401ae2ba"><code>faf98c2</code></a> MailerSend: support extra headers</li>
<li><a href="https://github.com/anymail/django-anymail/commit/0776b12331379c9f885cbaa60bb8c53e076ec936"><code>0776b12</code></a> Feature: Implement merge_headers</li>
<li><a href="https://github.com/anymail/django-anymail/commit/6e696b85663cc7c9bd6f1423ccf3b2dea40b786a"><code>6e696b8</code></a> SendGrid: report dropped "Bounced Address" webhook events as reason "bounced"</li>
<li><a href="https://github.com/anymail/django-anymail/commit/0f2eef7300daec47eef4e708721198a1017882bd"><code>0f2eef7</code></a> Amazon SES: support headers with template</li>
<li><a href="https://github.com/anymail/django-anymail/commit/1cdadda1613dba93f335f4b2b1cd2dfccd0b25f9"><code>1cdadda</code></a> Amazon SES: require boto3 with sesv2 support</li>
<li>Additional commits viewable in <a href="https://github.com/anymail/django-anymail/compare/v10.3...v11.0">compare view</a></li>
</ul>
</details>
<br />
Updates `django-debug-toolbar` from 4.3.0 to 4.4.2
Release notes
Removed some CSS which wasn't carefully limited to the toolbar's elements.
Stopped assuming that INTERNAL_IPS is a list.
Added a section to the installation docs about running tests in projects
where the toolbar is being used.
4.4.1 (2024-05-26)
Pin metadata version to 2.2 to be compatible with Jazzband release
process.
4.4.0 (2024-05-26)
Raised the minimum Django version to 4.2.
Automatically support Docker rather than having the developer write a
workaround for INTERNAL_IPS.
Display a better error message when the toolbar's requests
return invalid json.
Render forms with as_div to silence Django 5.0 deprecation warnings.
Stayed on top of pre-commit hook updates.
Added :doc:architecture documentation <architecture> to help
on-board new contributors.
Removed the static file path validation check in
:class:StaticFilesPanel <debug_toolbar.panels.staticfiles.StaticFilesPanel>
since that check is made redundant by a similar check in Django 4.0 and
later.
Deprecated the OBSERVE_REQUEST_CALLBACK setting and added check
debug_toolbar.W008 to warn when it is present in
DEBUG_TOOLBAR_SETTINGS.
Add a note on the profiling panel about using Python 3.12 and later
about needing --nothreading
Added IS_RUNNING_TESTS setting to allow overriding the
debug_toolbar.E001 check to avoid including the toolbar when running
tests.
Fixed the bug causing 'djdt' is not a registered namespace and updated
docs to help in initial configuration while running tests.
Added a link in the installation docs to a more complete installation
example in the example app.
Added check to prevent the toolbar from being installed when tests
are running.
Added test to example app and command to run the example app's tests.
Implemented dark mode theme and button to toggle the theme,
introduced the DEFAULT_THEME setting which sets the default theme
to use.
Fix regression in v4.12.0 where specialization of certain generics with an overridden __eq__ method would raise errors. Patch by Jelle Zijlstra.
Fix tests so they pass on 3.13.0b2
4.12.1
Preliminary changes for compatibility with the draft implementation
of PEP 649 in Python 3.14. Patch by Jelle Zijlstra.
Fix regression in v4.12.0 where nested Annotated types would cause
TypeError to be raised if the nested Annotated type had unhashable
metadata. Patch by Alex Waygood.
4.12.0
This release focuses on compatibility with the upcoming release of
Python 3.13. Most changes are related to the implementation of type
parameter defaults (PEP 696).
Thanks to all of the people who contributed patches, especially Alex
Waygood, who did most of the work adapting typing-extensions to the
CPython PEP 696 implementation.
There is a single change since 4.12.0rc1:
Fix incorrect behaviour of typing_extensions.ParamSpec on Python 3.8 and
3.9 that meant that
isinstance(typing_extensions.ParamSpec("P"), typing.TypeVar) would have a
different result in some situations depending on whether or not a profiling
function had been set using sys.setprofile. Patch by Alex Waygood.
Changes included in 4.12.0rc1:
Improve the implementation of type parameter defaults (PEP 696)
Backport the typing.NoDefault sentinel object from Python 3.13.
TypeVars, ParamSpecs and TypeVarTuples without default values now have
their __default__ attribute set to this sentinel value.
TypeVars, ParamSpecs and TypeVarTuples now have a has_default()
method, matching typing.TypeVar, typing.ParamSpec and
typing.TypeVarTuple on Python 3.13+.
TypeVars, ParamSpecs and TypeVarTuples with default=None passed to
their constructors now have their __default__ attribute set to None
at runtime rather than types.NoneType.
Fix most tests for TypeVar, ParamSpec and TypeVarTuple on Python
3.13.0b1 and newer.
Backport CPython PR #118774,
allowing type parameters without default values to follow those with
default values in some type parameter lists. Patch by Alex Waygood,
backporting a CPython PR by Jelle Zijlstra.
It is now disallowed to use a TypeVar with a default value after a
TypeVarTuple in a type parameter list. This matches the CPython
implementation of PEP 696 on Python 3.13+.
Fix bug in PEP-696 implementation where a default value for a ParamSpec
Fix regression in v4.12.0 where specialization of certain
generics with an overridden __eq__ method would raise errors.
Patch by Jelle Zijlstra.
Fix tests so they pass on 3.13.0b2
Release 4.12.1 (June 1, 2024)
Preliminary changes for compatibility with the draft implementation
of PEP 649 in Python 3.14. Patch by Jelle Zijlstra.
Fix regression in v4.12.0 where nested Annotated types would cause
TypeError to be raised if the nested Annotated type had unhashable
metadata. Patch by Alex Waygood.
Release 4.12.0 (May 23, 2024)
This release is mostly the same as 4.12.0rc1 but fixes one more
longstanding bug.
Fix incorrect behaviour of typing_extensions.ParamSpec on Python 3.8 and
3.9 that meant that
isinstance(typing_extensions.ParamSpec("P"), typing.TypeVar) would have a
different result in some situations depending on whether or not a profiling
function had been set using sys.setprofile. Patch by Alex Waygood.
Release 4.12.0rc1 (May 16, 2024)
This release focuses on compatibility with the upcoming release of
Python 3.13. Most changes are related to the implementation of type
parameter defaults (PEP 696).
Thanks to all of the people who contributed patches, especially Alex
Waygood, who did most of the work adapting typing-extensions to the
CPython PEP 696 implementation.
Full changelog:
Improve the implementation of type parameter defaults (PEP 696)
Backport the typing.NoDefault sentinel object from Python 3.13.
TypeVars, ParamSpecs and TypeVarTuples without default values now have
their __default__ attribute set to this sentinel value.
TypeVars, ParamSpecs and TypeVarTuples now have a has_default()
method, matching typing.TypeVar, typing.ParamSpec and
typing.TypeVarTuple on Python 3.13+.
TypeVars, ParamSpecs and TypeVarTuples with default=None passed to
their constructors now have their __default__ attribute set to None
at runtime rather than types.NoneType.
Fix most tests for TypeVar, ParamSpec and TypeVarTuple on Python
3.13.0b1 and newer.
urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support for 2023. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.
Thank you for your support.
Changes
Added the Proxy-Authorization header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via Retry.remove_headers_on_redirect.
Allowed passing negative integers as amt to read methods of http.client.HTTPResponse as an alternative to None. (#3122)
Fixed return types representing copying actions to use typing.Self. (#3363)
Added the Proxy-Authorization header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via Retry.remove_headers_on_redirect.
Allowed passing negative integers as amt to read methods of http.client.HTTPResponse as an alternative to None. ([#3122](https://github.com/urllib3/urllib3/issues/3122) <https://github.com/urllib3/urllib3/issues/3122>__)
Fixed return types representing copying actions to use typing.Self. ([#3363](https://github.com/urllib3/urllib3/issues/3363) <https://github.com/urllib3/urllib3/issues/3363>__)
Utilizing the new Clock API allows to manipulate and control time within tests to verify time-related behavior. This API covers many common scenarios, including:
testing with predefined time;
keeping consistent time and timers;
monitoring inactivity;
ticking through time manually.
# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 2, 2, 8, 0, 0))
page.goto("http://localhost:3333")
Pretend that the user closed the laptop lid and opened it again at 10am.
Multiple methods like locator.click() or locator.press() now support a ControlOrMeta modifier key. This key maps to Meta on macOS and maps to Control on Windows and Linux.
# Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
page.keyboard.press("ControlOrMeta+S")
New property httpCredentials.send in apiRequest.newContext() that allows to either always send the Authorization header or only send it in response to 401 Unauthorized.
Playwright now supports Chromium, Firefox and WebKit on Ubuntu 24.04.
v1.45 is the last release to receive WebKit update for macOS 12 Monterey. Please update macOS to keep using the latest WebKit.
Browser Versions
Chromium 127.0.6533.5
Mozilla Firefox 127.0
WebKit 17.4
This version was also tested against the following stable channels:
Google Chrome 126
... (truncated)
Commits
90bf2e6 build(deps): bump mypy from 1.10.0 to 1.10.1 (#2479)
ecb34e3 build(deps): bump types-requests from 2.32.0.20240602 to 2.32.0.20240622 (#2470)
8f9bcd1 chore(roll): roll to Playwright 1.45.1-beta-1719996498000 (#2474)
d83dc6e fix(fetch): serialise empty array in 'data' as JSON (#2476)
c6cc4c9 chore(roll): roll Playwright to 1.45.0-alpha-2024-06-14 (#2464)
b331b8e devops: update conda-incubator/setup-miniconda to v3 (#2467)
3c46eec build(deps): bump flake8 from 7.0.0 to 7.1.0 (#2466)
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`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for...
_Description has been truncated_
Bumps the dependencies group with 11 updates in the /requirements directory:
2.1.0
2.2.0
4.1.13
4.2.13
10.3
11.0
4.3.0
4.4.2
4.10.0
4.12.2
2.2.1
2.2.2
6.6.0
6.7.0
1.4.0
1.5.1
1.42.0
1.45.0
3.7.0
3.7.1
0.4.4
0.5.1
Updates
dj-database-url
from 2.1.0 to 2.2.0Release notes
Sourced from dj-database-url's releases.
Changelog
Sourced from dj-database-url's changelog.
Commits
51773f3
Update setup.py5a91d7a
Update README.rst (#247)cda5b0c
[pre-commit.ci] pre-commit autoupdate (#245)7906f3b
[pre-commit.ci] pre-commit autoupdate (#244)5106a19
[pre-commit.ci] pre-commit autoupdate (#242)bcf163e
Check list of schemes to determine ifsearch_path
option should be added (#...86f04ef
[pre-commit.ci] pre-commit autoupdate (#241)fc0dca1
Update django 5.0 python compatability (#239)ebb86f9
[pre-commit.ci] pre-commit autoupdate (#238)1412cef
[pre-commit.ci] pre-commit autoupdate (#237)Updates
django
from 4.1.13 to 4.2.13Commits
3bf46e2
[4.2.x] Bumped version for 4.2.13 release.b46b94e
[4.2.x] Added release notes for 4.2.13.1536833
[4.2.x] Post-release version bump.6193c72
[4.2.x] Bumped version for 4.2.12 release.3f9c8fc
[4.2.x] Added release date for 4.2.12.256f719
[4.2.x] Reverted "Fixed #34994, Fixed #35386 -- Applied checkbox-row CSS clas...0fc8326
[4.2.x] Fixed #34994, Fixed #35386 -- Applied checkbox-row CSS class uncondit...1d85b41
[4.2.x] Refs #35361 -- Clarified release notes for 4.2.12.27c32cc
[4.2.x] Fixed #35361 -- Added release notes for 4.2.12 for backport of b231bc...0d3ddca
[4.2.x] Refs #34900, Refs #35361 -- Fixed SafeMIMEText.set_payload() crash on...Updates
django-anymail
from 10.3 to 11.0Release notes
Sourced from django-anymail's releases.
Changelog
Sourced from django-anymail's changelog.