-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace tcp_sockopts with socket_factory (#10520) #10534
base: master
Are you sure you want to change the base?
Conversation
e07d4e8
to
dd9f264
Compare
CodSpeed Performance ReportMerging #10534 will not alter performanceComparing Summary
|
212bb6f
to
d9a7943
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #10534 +/- ##
=========================================
Coverage ? 98.69%
=========================================
Files ? 122
Lines ? 37235
Branches ? 2062
=========================================
Hits ? 36750
Misses ? 338
Partials ? 147
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
aiohttp/connector.py
Outdated
@@ -826,8 +826,9 @@ class TCPConnector(BaseConnector): | |||
the happy eyeballs algorithm, set to None. | |||
interleave - “First Address Family Count” as defined in RFC 8305 | |||
loop - Optional event loop. | |||
tcp_sockopts - List of tuples of sockopts applied to underlying | |||
socket | |||
socket_factory - An aiohappyeyeballs.SocketFactoryType function |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While aiohappyeyeballs is an aio-libs library, it might make sense to document this as an aiohttp type instead since aiohappyeyeballs is an implementation detail of happy eyeballs support.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, hopefully aiohappyeyeballs will be upstreamed to cpython in future, in which case we'd stop using it here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure I understand the suggestion. Are you thinking I should alias (or redefine) it in aiohttp and document it here?
I notice the timing of these comments is before your first activity in aio-libs/aiohappyeyeballs#149, would it be plausible to let aiohappyeyeballs run its course and keep aiohttp as-is once the docs are updated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not about documentation, but backwards compatibility. I think an alias in aiohttp is probably fine, and then if we drop aiohappyeyeballs in a future release the type can be copied into the codebase. This would ensure users don't need to depend on aiohappyeyeballs directly at any point.
Do you need to uprev the required version of aiohappyeyeballs in setup.cfg? |
d9a7943
to
2e147ff
Compare
I think that depends on the resolution to #10534 (comment) but if only for the documentation, yeah it'd probably have to go to whatever version if/when aio-libs/aiohappyeyeballs#149 merges and released. EDIT: Nevermind, I think as long as the latest docs are complete, which they seem to be (using https://aiohappyeyeballs--149.org.readthedocs.build/en/149/ for aiohappyeyeballs worked) the version should be fine, unless you see something I didn't. |
1b467a3
to
eb17499
Compare
We're passing a kwarg that didn't exist on older releases, won't that break on older releases of aiohappyeyeballs? |
oh! good catch @kjander0 and @Dreamsorcerer, I didn't realize how new that feature is. will bump to 2.5.0 when |
3a87c34
to
3adf43a
Compare
I'm at a total loss on how to fix this
Any ideas? It's complaining about these lines...
EDIT: Found a workaround, sorry I'm new to this |
56fc83d
to
209d036
Compare
Instead of TCPConnector taking a list of sockopts to be applied sockets created, take a socket_factory callback that allows the caller to implement socket creation entirely.
cdaf8ba
to
09ece48
Compare
Instead of TCPConnector taking a list of sockopts to be applied sockets created, take a socket_factory callback that allows the caller to implement socket creation entirely.
Fixes issue #10520
What do these changes do?
Replace
tcp_sockopts
parameter with asocket_factory
parameter that is a callback allowing the caller to own socket creation. If passed, all sockets created byTCPConnector
are expected to come from thesocket_factory
callback.Are there changes in behavior for the user?
The only users to experience a change in behavior are those who are using the un-released
tcp_sockopts
argument toTCPConnector
. However, using unreleased code comes with caveat emptor, and is why I felt entitled to remove the option entirely without warning.Is it a substantial burden for the maintainers to support this?
The burden will be minimal and would only arise if
aiohappyeyeballs
changes their interface.Related issue number
Checklist
CONTRIBUTORS.txt
CHANGES/
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.