Fix type annotations on MultipartWriter.append#8211
Fix type annotations on MultipartWriter.append#8211Dreamsorcerer merged 8 commits intoaio-libs:masterfrom
Conversation
Co-authored-by: Sam Bull <[email protected]>
|
Looks reasonable to me. Though I feel like LooseHeaders itself seems redundant. I'd have thought |
Seems you are right! I had been a bit unsure about the MultiDict and the case insensitive I checked by type checking this, with the annotation updated to from multidict import CIMultiDict
import aiohttp
from aiohttp.hdrs import CONTENT_TYPE
def type_check_append_with_headers() -> None:
writer = aiohttp.MultipartWriter()
writer.append("hello, world!", {"X-Foo": "bar"})
writer.append("hello, world!", {CONTENT_TYPE: "text/plain"})
multidict: CIMultiDict[str] = CIMultiDict()
multidict.add("x-foo", "bar")
writer.append("hello, world!", multidict) |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #8211 +/- ##
=======================================
Coverage 97.53% 97.53%
=======================================
Files 107 107
Lines 32843 32843
Branches 3851 3851
=======================================
Hits 32032 32032
Misses 610 610
Partials 201 201
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
|
With regards to the three failing tests, I see that other recently merged PRs had |
Backport to 3.9: 💚 backport PR created✅ Backport PR branch: Backported as #8214 🤖 @patchback |
(cherry picked from commit 7725f5a)
Backport to 3.10: 💚 backport PR created✅ Backport PR branch: Backported as #8215 🤖 @patchback |
(cherry picked from commit 7725f5a)
…iter.append (#8214) **This is a backport of PR #8211 as merged into master (7725f5a).** Co-authored-by: Daniel Golding <[email protected]>
…riter.append (#8215) **This is a backport of PR #8211 as merged into master (7725f5a).** Co-authored-by: Daniel Golding <[email protected]>
What do these changes do?
They adjust the annotations on the
MultipartWriter.appendmethod (and two similar methods), so that type-checkers admit plain python dictionaries for the second argument; the headers parameter.I chose to useChanged toLooseHeadersas I knew it was already used as theheadersparameter for theweb.Responseconstructor, among others.Mapping[str, str], thank you DreamsorcererAre there changes in behavior for the user?
No, this doesn't change any behaviour.
Is it a substantial burden for the maintainers to support this?
Not that I can imagine.
Related issue number
Fixes #7741
Checklist
strandistrkeyed dictionaries work withappendaiohttp/tests/test_multipart.py
Line 1310 in d8936aa
aiohttp/tests/test_multipart.py
Line 1323 in d8936aa
but am also open to suggestions
aiohttp/docs/multipart.rst
Lines 145 to 146 in d8936aa
CONTRIBUTORS.txtCHANGES/foldername 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 animproper 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 breakingchanges 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 buildprocess.
.packaging: Notes for downstreams about unobvious side effectsand 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 abovecategories.
Make sure to use full sentences with correct case and punctuation,
for example:
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.