aiohttp
aiohttp copied to clipboard
Add ClientConnectorDNSError for differentiating DNS errors from others
What do these changes do?
Adds a ClientConnectorError that's specific to DNS resolution errors. See #8455
Are there changes in behavior for the user?
Existing usages should still keep working the same as before since this extends from ClientConnectorError. Users can now catch ClientConnectorDNSError if they're looking for DNS errors specifically.
Is it a substantial burden for the maintainers to support this?
I can't see this being difficult to maintain since the Resolver abstraction already exists to determine when errors are related to DNS or some other part of the connection.
Related issue number
Fixes #8455
Checklist
- [X] I think the code is well written
- [X] Unit tests for the changes exist
- [X] Documentation reflects the changes
- [X] If you provide code modification, please add yourself to
CONTRIBUTORS.txt- The format is <Name> <Surname>.
- Please keep alphabetical order, the file is sorted by names.
- [X] Add a new news fragment into the
CHANGES/folder-
name it
<issue_or_pr_num>.<type>.rst(e.g.588.bugfix.rst) -
if you don't have an issue number, change it to the pull request number after creating the PR
.bugfix: A bug fix for something the maintainers deemed an improper undesired behavior that got corrected to match pre-agreed expectations..feature: A new behavior, public APIs. That sort of stuff..deprecation: A declaration of future API removals and breaking changes in behavior..breaking: When something public is removed in a breaking way. Could be deprecated in an earlier release..doc: Notable updates to the documentation structure or build process..packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions..contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment..misc: Changes that are hard to assign to any of the above categories.
-
Make sure to use full sentences with correct case and punctuation, for example:
Fixed issue with non-ascii contents in doctest text files -- by :user:`contributor-gh-handle`.Use the past tense or the present tense a non-imperative mood, referring to what's changed compared to the last released version of this project.
-
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 98.59%. Comparing base (
216e082) to head (8d309c0). Report is 657 commits behind head on master.
Additional details and impacted files
@@ Coverage Diff @@
## master #8456 +/- ##
=======================================
Coverage 98.58% 98.59%
=======================================
Files 107 105 -2
Lines 35026 35089 +63
Branches 4151 4178 +27
=======================================
+ Hits 34531 34595 +64
+ Misses 330 329 -1
Partials 165 165
| Flag | Coverage Δ | |
|---|---|---|
| CI-GHA | 98.47% <100.00%> (+<0.01%) |
:arrow_up: |
| OS-Linux | 98.14% <100.00%> (+<0.01%) |
:arrow_up: |
| OS-Windows | 96.53% <100.00%> (+<0.01%) |
:arrow_up: |
| OS-macOS | 97.83% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.10.11 | 97.70% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.10.15 | 97.63% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.11.10 | 97.69% <100.00%> (-0.01%) |
:arrow_down: |
| Py-3.11.9 | 97.78% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.12.7 | 98.19% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.13.0 | 98.17% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-3.9.13 | 97.60% <100.00%> (+0.01%) |
:arrow_up: |
| Py-3.9.20 | 97.53% <100.00%> (+<0.01%) |
:arrow_up: |
| Py-pypy7.3.16 | 97.16% <100.00%> (+<0.01%) |
:arrow_up: |
| VM-macos | 97.83% <100.00%> (+<0.01%) |
:arrow_up: |
| VM-ubuntu | 98.14% <100.00%> (+<0.01%) |
:arrow_up: |
| VM-windows | 96.53% <100.00%> (+<0.01%) |
:arrow_up: |
Flags with carried forward coverage won't be shown. Click here to find out more.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
We need to think the DNS-related exception hierarchy through — perhaps it needs a base exception with subtypes. Similar to https://github.com/aio-libs/aiohttp/pull/6722#discussion_r1477103562.
Additionally, the documentation would need to be updated to list the new exceptions with explanations.
Backport to 3.10: 💔 cherry-picking failed — conflicts found
❌ Failed to cleanly apply b09d7cc07607d01badf8051f5b8feb2a2ed070c8 on top of patchback/backports/3.10/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456
Backporting merged PR #8456 into master
- Ensure you have a local repo clone of your fork. Unless you cloned it
from the upstream, this would be your
originremote. - Make sure you have an upstream repo added as a remote too. In these
instructions you'll refer to it by the name
upstream. If you don't have it, here's how you can add it:$ git remote add upstream https://github.com/aio-libs/aiohttp.git - Ensure you have the latest copy of upstream and prepare a branch
that will hold the backported code:
$ git fetch upstream $ git checkout -b patchback/backports/3.10/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456 upstream/3.10 - Now, cherry-pick PR #8456 contents into that branch:
If it'll yell at you with something like$ git cherry-pick -x b09d7cc07607d01badf8051f5b8feb2a2ed070c8fatal: Commit b09d7cc07607d01badf8051f5b8feb2a2ed070c8 is a merge but no -m option was given., add-m 1as follows instead:$ git cherry-pick -m1 -x b09d7cc07607d01badf8051f5b8feb2a2ed070c8 - At this point, you'll probably encounter some merge conflicts. You must resolve them in to preserve the patch from PR #8456 as close to the original as possible.
- Push this branch to your fork on GitHub:
$ git push origin patchback/backports/3.10/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456 - Create a PR, ensure that the CI is green. If it's not — update it so that the tests and any other checks pass. This is it! Now relax and wait for the maintainers to process your pull request when they have some cycles to do reviews. Don't worry — they'll tell you if any improvements are necessary when the time comes!
🤖 @patchback I'm built with octomachinery and my source is open — https://github.com/sanitizers/patchback-github-app.
Backport to 3.11: 💔 cherry-picking failed — conflicts found
❌ Failed to cleanly apply b09d7cc07607d01badf8051f5b8feb2a2ed070c8 on top of patchback/backports/3.11/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456
Backporting merged PR #8456 into master
- Ensure you have a local repo clone of your fork. Unless you cloned it
from the upstream, this would be your
originremote. - Make sure you have an upstream repo added as a remote too. In these
instructions you'll refer to it by the name
upstream. If you don't have it, here's how you can add it:$ git remote add upstream https://github.com/aio-libs/aiohttp.git - Ensure you have the latest copy of upstream and prepare a branch
that will hold the backported code:
$ git fetch upstream $ git checkout -b patchback/backports/3.11/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456 upstream/3.11 - Now, cherry-pick PR #8456 contents into that branch:
If it'll yell at you with something like$ git cherry-pick -x b09d7cc07607d01badf8051f5b8feb2a2ed070c8fatal: Commit b09d7cc07607d01badf8051f5b8feb2a2ed070c8 is a merge but no -m option was given., add-m 1as follows instead:$ git cherry-pick -m1 -x b09d7cc07607d01badf8051f5b8feb2a2ed070c8 - At this point, you'll probably encounter some merge conflicts. You must resolve them in to preserve the patch from PR #8456 as close to the original as possible.
- Push this branch to your fork on GitHub:
$ git push origin patchback/backports/3.11/b09d7cc07607d01badf8051f5b8feb2a2ed070c8/pr-8456 - Create a PR, ensure that the CI is green. If it's not — update it so that the tests and any other checks pass. This is it! Now relax and wait for the maintainers to process your pull request when they have some cycles to do reviews. Don't worry — they'll tell you if any improvements are necessary when the time comes!
🤖 @patchback I'm built with octomachinery and my source is open — https://github.com/sanitizers/patchback-github-app.