Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Replace tcp_sockopts with socket_factory (#10520) #10534

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

TimMenninger
Copy link
Contributor

@TimMenninger TimMenninger commented Mar 10, 2025

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 a socket_factory parameter that is a callback allowing the caller to own socket creation. If passed, all sockets created by TCPConnector are expected to come from the socket_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 to TCPConnector. 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

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • 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.
  • 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.

@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Mar 10, 2025
Copy link

codspeed-hq bot commented Mar 10, 2025

CodSpeed Performance Report

Merging #10534 will not alter performance

Comparing TimMenninger:tcp-socket-factory (d9a7943) with master (6d205da)

Summary

✅ 46 untouched benchmarks

@TimMenninger TimMenninger force-pushed the tcp-socket-factory branch 5 times, most recently from 61c7bd8 to 212bb6f Compare March 10, 2025 17:24
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.
Copy link

codecov bot commented Mar 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 98.69%. Comparing base (6d205da) to head (d9a7943).
Report is 1 commits behind head on master.

✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #10534      +/-   ##
==========================================
- Coverage   98.70%   98.69%   -0.01%     
==========================================
  Files         122      122              
  Lines       37230    37234       +4     
  Branches     2064     2062       -2     
==========================================
+ Hits        36748    36749       +1     
- Misses        335      338       +3     
  Partials      147      147              
Flag Coverage Δ
CI-GHA 98.57% <100.00%> (-0.01%) ⬇️
OS-Linux 98.24% <100.00%> (-0.01%) ⬇️
OS-Windows 96.17% <100.00%> (-0.01%) ⬇️
OS-macOS 97.36% <100.00%> (+<0.01%) ⬆️
Py-3.10.11 97.26% <100.00%> (-0.02%) ⬇️
Py-3.10.16 97.81% <100.00%> (+<0.01%) ⬆️
Py-3.11.11 97.89% <100.00%> (-0.01%) ⬇️
Py-3.11.9 97.35% <100.00%> (+<0.01%) ⬆️
Py-3.12.8 ?
Py-3.12.9 98.35% <100.00%> (+<0.01%) ⬆️
Py-3.13.1 ?
Py-3.13.2 98.34% <100.00%> (+<0.01%) ⬆️
Py-3.9.13 97.15% <100.00%> (+<0.01%) ⬆️
Py-3.9.21 97.68% <100.00%> (+<0.01%) ⬆️
Py-pypy7.3.16 84.02% <100.00%> (-7.60%) ⬇️
VM-macos 97.36% <100.00%> (+<0.01%) ⬆️
VM-ubuntu 98.24% <100.00%> (-0.01%) ⬇️
VM-windows 96.17% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bot:chronographer:provided There is a change note present in this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant